LNMP环境
- Linux
- Nginx
- Mysql
- Php
服务器版本
- 腾讯云Ubuntu 18.04.1
Nginx
sudo apt-get install nginx
/etc/nginx/nginx.conf
这是nginx核心的配置文件,基本上对nginx的配置都是在这里操作。其中分为三部分:events、(http)server、location
User 默认是www-data,nginx的user默认是www所以需要添加www用户。
Worker_processes 是设置最大多少可用进程,worker_connections 是每个进程的最大连接数 pid是nginx的进程地址
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
最重要的配置在sevser上,每一个sevser都是一个虚拟主机,其中listen 80监听80端口,每一个主机对应一个域名的一个端口,server_name bobbo.club就是域名地址,root /home/ubuntu/html;是网站根目录,也可以把root提到server外面作为全局根目录。default_type ‘text/html’; charset utf-8;设置字符编码格式,解决中文显示乱码问题。
server {
listen 82;
root /home/ubuntu/html;
default_type 'text/html';
charset utf-8;
server_name 140.143.189.55;
location / {
index index.html index.htm;
}
}
Location / { }这里可以使用正则表达式设置url过滤,eg 【location ~ .php$】【location = /50x.html】,【/】则是不过滤location里index 写的是对应规则的初始显示网页。
当需要和php联动时,需要安装php-fpm的一系列拓展包。Nginx和php是通过php-fpm进行传递的,用户发出http请求到nginx,nginx再把动态请求丢到php-fpm进程给到php。Php-fpm用fastcgi作为通信接口,fastcgi_pass可以有两种形式:tcp形式和内核sock形式。
在这里简要说一下配置方式,两种方式都主要修改nginx的配置文件(/etc/nginx/sites-available/default)和fpm的配置文件(/etc/php5/fpm/pool.d/www.conf)。
TCP配置方式需要将nginx配置文件中相应的反向代理的fastcgi_pass参数改为127.0.0.1:9000,将fpm配置文件中的listen参数修改为127.0.0.1:9000。
Socket配置方式需要先将fpm配置文件中的listen参数的sock一项去掉注释,将nginx配置文件中相应的反向代理的fastcgi_pass参数改为在fpm里一样的listen参数(例如unix:/dev/shm/fpm-cgi.sock),如果考虑到高并发可以将listen.backlog参数改为-1,内存积压无限大。另外,还可以提高内核级别的并发连接数,修改/etc/sysctl.conf:
两种配置方式修改完之后都需要重启php-fpm和nginx。
sudo service php5-fpm restart
sudo /etc/init.d/nginx reload
由于nginx默认开启80端口,所以初始页面应该都在监听80端口的那个主机上,在配置期间我修改了server主机的root地址使它指向我pbw的/pbw/html,里面存放index.html,但是在浏览器访问时并没有变化,我在php-fpm里找问题,在nginx里找问题都找不到,后来发现是在nginx.conf里的http里找到include /etc/nginx/sites-enabled/*;这是把sites-enabled里的default文件包含进去了,然而这个文件只是nginx的原始备份没有变动,所以当我在访问80端口时自然而然地在default找,后来我把default删除就可以正常显示了。Nginx里面可以添加软连接include,链接另一个文件夹内的虚拟主机配置文件,同样是和nginx.conf一样的格式。