Lnmp on Ubuntu 多站点实现

这里着重介绍单台服务器多站点的环境搭建,之前遇到很多坑,不过总算是爬上来了。

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

Ubuntu 16.04_X64
Nginx 1.14
PHP 7.2
MySQL 5.7.22

系统设置

  • 创建用户
ssh root@xx.xx.xx.xx
adduser xxx

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

visudo

在编辑器中找到

# User privilege specification
root ALL=(ALL:ALL) ALL

在下面添加

xx ALL=(ALL:ALL)ALL

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

  • 安全登录

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

  • Nginx
apt-get install nginx

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

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参数生效

  • PHP
sudo apt install php7.2

sudo apt install php7.2-fpm
  • MySQL
sudo apt-get install mysql-server

安装php的MySQL驱动

sudo apt-get install php7.2-mysql

然后需要做一些配置:

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

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

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

  • 设置虚拟主机

创建虚拟主机目录

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

接下来在/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;
}
}

配置文件创建好后,可以删除配置文件目录的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 条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注