Lnmp on Ubuntu 多站点实现

这里介绍单台服务器多站点的环境搭建。

环境介绍:Aliyun 1核1G主机实例。Ubuntu 20.04默认版本如下:

Ubuntu 20.04

Nginx 1.18

PHP 7.4

MySQL 8.0

系统设置

1. 创建用户 

ssh [email protected]

adduser xxx

按照提示创建完用户密码后就可以了,/home/目录下会出现该用户的文件夹,然后对该用户授权,执行如下命令:

visudo

在编辑器中找到

# User privilege specification

root ALL=(ALL:ALL) ALL 

在下面添加

xx ALL=(ALL:ALL)ALL

保存退出后,就可以用xx用户登录系统

2. 安全登录 

密码登录容易遭攻击破解,建议的安全登录方式是ssh 秘钥登录,然后禁止root用户登录,禁止密码登录,修改默认的22端口号。设置方法在这里:ubuntu强制ssh登陆 

3. 安装Nginx 

apt-get install nginx

Nginx就安装好了,浏览器输入主机地址,就可以看到Nginx的欢迎界面了。

3.1 Nginx配置

(1)worker_processes设置为服务器的CPU核数

(2)在event里增加 use epoll; epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型 

(3)worker_connections的值,一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致。

然后执行命令 sudo nginx -s reload参数生效 

4. 安装PHP 

sudo apt install php7.4

sudo apt install php7.4-fpm

5. 安装MySQL 

sudo apt-get install mysql-server

安装php的MySQL驱动

sudo apt-get install php7.4-mysql

然后需要做一些配置:

sudo vi /etc/php/7.2/fpm/php.ini

将cgi.fix_pathinfo=1这一行去掉注释,将1改为0。然后重启PHP。

“值为1时,php的解释器会尽可能的去解析客户端请求的文件各种类型,这会引发一些安全漏洞,设置为0时,解释器只会去解析特定的文件类型,设置为0是一种相对安全的处理策略。”—引用自MacTalk《趣谈个人建站》

6. 设置虚拟主机 

6.1 创建虚拟主机目录

sudo mkdir -p /var/www/a.com/html/

sudo mkdir -p /var/www/a.com/logs/

sudo mkdir -p /var/www/b.com/html/

sudo mkdir -p /var/www/b.com/logs/

sudo chown -R www-data:www-data /var/www/a.com

sudo chown -R www-data:www-data /var/www/b.com

sudo chmod -R 755 /var/www

6.2 接下来在/etc/nginx/sites-available下创建站点配置文件a,可以根据建立站点的不同创建相关配置文件,内容如下:

server {

listen 80 default_server; #其他站点的话不需要添加default_server 

listen [::]:80; 

root /var/www/a.com/html;

index index.php index.html index.htm; #添加index.php支持php 

server_name  a.com  www.a.com; 

access_log /var/www/a.com/logs/access.log; #日志目录,也可以指定其他目录

error_log /var/www/a.com/logs/error.log;

location / {

try_files $uri $uri/ =404;

if ( $host != “www.a.com” ) { 

rewrite ^/(.*)$ http://www.a.com/$1 permanent; 

}

if (-f $request_filename/index.html){ 

rewrite (.*) $1/index.html break; 

}

if (-f $request_filename/index.php){ 

rewrite (.*) $1/index.php; 

}

if (!-f $request_filename){ 

rewrite (.*) /index.php; 

}

}

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/run/php/php7.2-fpm.sock;

}

}

6.3 配置文件创建好后,可以删除配置文件目录的default文件,再创建配置文件的链接:

ln -s /etc/nginx/sites-available/a /etc/nginx/sites-enable/a

ln -s /etc/nginx/sites-available/b /etc/nginx/sites-enable/b

可以在网站根目录新建一个index.php文件,内容如下:

<?php

phpinfo();

?>

如果访问这个文件,可以看到服务器的PHP环境的话,说明环境部署成功了。

共有 0 条评论

发表评论

您的电子邮箱地址不会被公开。