Nginx最详细入门教程

Nginx

一、 N ginx入门介绍

1.1、Nginx简介

1.2、Nginx和Apache

二、安装配置Nginx

2.1、安装配置

2.2、配置文件常规优化

2.3、虚拟主机

三、L NMP 架构及应用部署

3.1、安装MySQL数据库

3.2、安装PHP

3.3、配置Nginx支持PHP环境

3.4、在LNMP平台部署Web应用程序

四、补充知识 14

一、Nginx入门介绍

1.1、Nginx简介

Nginx是一个高性能的HTTP、反向代理服务,由俄罗斯人开发。第一个公开版本0.1.0发布于2004年10月4日。其特点是占有内存少,并发能力强,nginx的并发能力在同类型的网页服务器中表现较好,在整个web应用程序的生产环境使用率中,该软件名列前茅。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。

开源社区版:nginx.org

商业版:nginx.com

1.2、Nginx和Apache

Apache和Nginx的相同点:在功能实现上都使用了模块化结构设计,都支持通用的语言接口,如PHP、Perl、Python等,同时也支持正向、反向代理,虚拟主机,URL重写等。

Apache的优点:

1.更稳定

2.处理动态请求时,Apache性能更高(动态请求会用到伪静态,而Apache对rewrite支持的更好)

3.rewrite模块更完善

4.模块众多

Nginx的优点:

1.轻量级,相对Apache占用更少的资源

2.因为Nginx是非阻塞异步网络IO模型(epoll),高并发下能保持低资源低消耗,因此更适合做高并发(Apache采用的是select模型/线型轮询)

3.处理静态网页上表现的更好(简单、占资源少),官方定义的并发量最高可达5w/s

4.反向代理、负载均衡性能更强

5.可对后端服务器进行健康状态检查

6 . 支持网站缓存(加速网页访问)--squid代理

二、安装配置优化Nginx

2.1、安装配置

nginx编译安装的环境安装

yum install -y gcc gcc-c++ make lrzsz

nginx依赖包的安装:

yum install -y pcre-devel zlib-devel openssl openssl-devel patch

//是一个Perl的函数库,包括perl兼容的正则表达式库rewrite重写模块会用到,

//zlib是压缩和解压缩模块

//openssl=https

useradd -M -s /sbin/nologin nginx

//创建一个无法本地登录的用户,用于实现运行nginx程序

rz

unzip nginx_upstream_check_module-master.zip //检测节点服务器补丁包

tar zxf nginx-1.20.1.tar.gz -C /usr/src

cd /usr/src/nginx-1.20.1

patch -p1 < /root/nginx_upstream_check_module-master/check_1.20.1+.patch

#./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --add-module=/root/nginx_upstream_check_module-master

//http_stub_status_module主要是用于查询nginx状态的模块,能够获取并

发连接、请求等相关数据

///root/nginx_upstream_check_module-master //后期集群检测节点服务器用

//http_ssl_module实现https的必需模块

make && make install

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

//通过配置链接,可以实现更方便使用nginx配套命令,而不需要指定绝对路径

nginx -t //检查nginx主配置文件是否配置异常

nginx //启动nginx服务

netstat -anpt | grep nginx //查看nginx是否启动

nginx -s reload //平滑启动nginx服务,不断开的情况下重启服务

yum install psmisc -y //安装支持killall命令的程序,以及pstree、fuser

killall -s HUP nginx //重启nginx服务

killall -s QUIT nginx //停止Nginx服务

nginx --v //显示nginx版本

nginx --V //显示nginx版本以及编译时所定义的配置选项

配置nginx管理配置文件:

vim /lib/systemd/system/nginx.service

Unit

Description=The NGINX HTTP and reverse proxy server

After=syslog.target network.target remote-fs.target nss-lookup.target

Service

Type=forking

PIDFile=/usr/local/nginx/logs/nginx.pid

ExecStartPre=/usr/local/nginx/sbin/nginx -t

ExecStart=/usr/local/nginx/sbin/nginx

ExecReload=/usr/local/nginx/sbin/nginx -s reload

ExecStop=/usr/bin/kill -s QUIT $MAINPID

PrivateTmp=true

Install

WantedBy=multi-user.target

systemctl daemon-reload //重载systemctl系统

systemctl enable nginx.service //设置为开机自启

systemctl start nginx //启动nginx

systemctl status nginx //查看nginx启动状态

systemctl reload nginx //平滑启动,重载

systemctl stop nginx //关闭nginx

2.2、配置文件常规优化

学习Nginx服务的重点、难点就是对Nginx配置文件中的参数选项、性能优化的深入理解和操作

备份主配置文件,便于恢复:

cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak

nginx配置文件主要分三个区域

vim /usr/local/nginx/conf/nginx.conf

1.全局配置:

user www www; //指定运行用户和组,不修改时,运行用户为安装配置时所指定的用户,修改该文件时,该文件为准。

worker_processes 4; //指定工作进程数,默认为1,一般和CPU内核数量一致

cat /proc/cpuinfo | grep "processor"| wc -l //查看服务器内核数

worker_cpu_affinity 0001 0010 0100 1000;

worker_rlimit_nofile 65535; //worker进程能够打开的最大文件数量,该值过低客户端会报50X错误,该值一般可设置为65535;

#error_log logs/error.log; //错误日志文件位置

#error_log logs/error.log notice; //注意级别错误日志

#error_log logs/error.log info; //信息级别错误日志,[debug|info|notice|warn|error|crit]

#pid logs/nginx.pid; //pid存放位置

关于以上工作进程数一般设置为1个,如果在生产环境可根据服务器工作量适当增加,指定进程数切记不可超过CPU线程个数

2.I/0事件模型配置:

events {

use epoll; //系统内核在2.6以上建议使用epoll模型,以提高性能

kqueue \| rtsig \| epoll \| /dev/poll \| select \| poll \] //可选模型,根据运行平台使用相关模型,linux下使用epoll accept_mutex on; //如果配置了多个workers,还应配置影响worker的相关指令。 accept_mutex参数将使每个可用的worker进程接受新连接。 默认情况下,该标志设置为off。 multi_accept on; //worker能够在获得新连接的通知时尽可能多的接受连接。 此指令的作用是立即接受所有连接放到监听队列中。如果指令被禁用,worker进程将逐个接受连接。off为禁用 //默认每个进程处理的连接数量,最高可以和rlimit_nofile一致 理论上每台nginx服务器能够同时处理的连接数为2的48次方 } **3.HTTP设置**,虚拟主机、反向代理、负载均衡都在此区域配置 http { include mime.types; //设定mime类型,类型由mime.type文件定义,可用于网页输出格式 default_type application/octet-stream; //设置默认文件类型的值 log_format main '$remote_addr - $remote_user \[$time_local\] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; //设定日志格式,一般采用默认值即可,无需修改。 access_log logs/access.log main; //nginx 访问日志 #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件, #对于普通应用,必须设为 on, #如果用来进行下载等应用磁盘IO重负载应用,可设置为 off, #以平衡磁盘与网络I/O处理速度,降低系统的uptime. sendfile on; //支持文件发送(下载) #tcp_nopush on; //防止网络阻塞 keepalive_timeout 65; // 连接超时时间 tcp_nodelay on; //提高数据的实时响应性 gzip on; //开启gzip压缩 client_max_body_size 10M; //客户端请求的单个最大文件 client_body_buffer_size 128K; //缓冲区代理缓冲用户请求最大值 proxy_connect_timeout 90; //nginx和节点服务器连接超时时间 #proxy_end_timeout 90; //节点服务器数据回传超时时间 proxy_read_timeout 90; //连接成功后,节点服务器超时时间 proxy_buffer_size 4K; //设置代理服务器(nginx)保存用户头信息的缓冲区大小 server { //设定虚拟主机配置区域 listen 192.168.1.100:80; //监听IP、端口 server_name www.nginx.cn; //此服务器FQDN charset utf-8; //网页的默认字符集 #access_log logs/nginx.access.log main; //设定本虚拟主机的访问日志 location / { //根目录配置区域 root html; //定义服务器的默认网站根目录位置 index index.php index.html index.htm; //定义首页索引文件的名称 } location /status { //配置nginx访问状态统计目录 stub_status on; //打开状态统计功能 access_log off; //关闭状态统计功能的访问日志 } error_page 500 502 503 504 /50x.html; //内部错误提示页面 location = /50x.html { //错误页面配置 } } } **Nginx** **其他常用功能模块合集** 以下功能模块不是使用nginx必须要配置的,可根据生产环境自行选择配置,在生产环境中的配置、调整及性能优化,主要都是修改这些模块的参数来实现相关功能。 ![](https://file.jishuzhan.net/article/1789457757003321345/ef7325e9011867fa979ec59b7a82e7bc.webp) nginx功能模块配置说明:[++++http://nginx.org/en/docs/ngx_core_module.html#worker_processes++++](#worker_processes) # systemctl restart nginx http://192.168.1.100/status //查询nginx服务器的访问状态统计信息 Active connections: 4 server accepts handled requests 22 22 72 Reading: 0 Writing: 1 Waiting: 3 Active connections: 当前nginx正在处理的活动连接数. nginx总共接收了22个连接,成功创建22次连接的握手(证明中间没有失败连接的),总共处理了72个请求。 当一次连接后多次在未自动断开前刷新页面,请求数量则会一直增加,如果连接后等待断开后再次连接,则连接数请求数都会增加,请求数增加了,握手成功次数也就增加了 Reading: nginx读取到客户端的Header信息数. header:包头 Writing: nginx返回给客户端的Header信息数. Waiting: 开启keep-alive的情况下,这个值等于 active -- (reading + writing),意思就是nginx已经处理完成,正在等候下一次请求指令的驻留连接。 2.3、虚拟主机 1.设置基于域名的虚拟web主机 # mkdir -p /var/www/chengdu # mkdir -p /var/www/shanghai # echo "www.chengdu.com" \> /var/www/chengdu/index.html # echo "www.shanghai.com" \> /var/www/shanghai/index.html 进入nginx主配置文件新建两个server区域并进行修改配置 # vim /usr/local/nginx/conf/nginx.conf server { listen 192.168.1.30:80; server_name www.chengdu.com; charset utf-8; access_log logs/chengdu.access.log main; location / { root /var/www/chengdu; index index.html index.htm; } } server { listen 192.168.1.30:80; server_name www.shanghai.com; charset utf-8; access_log logs/shanghai.access.log main; location / { root /var/www/shanghai; index index.html index.htm; } } # systemctl restart nginx 关于修改配置文件后应当选择 restart/reload的建议: 建议尽量使用restart,如果修改配置文件错误等,使用restart将会报错,有助于解决报错问题 而使用reload可能不会提醒,用户自然会以为修改的配置文件没有问题,实则可能出现了问题从而导致后续验证失败,但是生产环境中reload可以使已连接的用户不会掉线 验证: 修改客户端hosts文件,进行网页访问验证 2.基于端口的虚拟主机设置: 需求:当输入192.168.1.10:80时访问到chengdu页面 当输入192.168.1.10:8080时访问到shanghai页面 注意:通过IP+端口方式访问服务器时,最好是使用http://192.168.1.10:8080 的方式,前面加上http头部 步骤:修改主配置文件,将shanghai的server区域监听端口修改为8080,这时可以实现通过ip+端口方式访问到shanghai页面,但通过192.168.1.10:80访问时,会直接跳到默认欢迎界面而并非chengdu页面, chengdu设置方式: 找到默认站点server区域,将默认站点的root 后的路径改为/var/www/chengdu 即可 到此,基于端口的虚拟主机配置实现完成。 3.基于IP的虚拟主机配置: 通过192.168.1.10:80 访问到chengdu 通过192.168.2.10:80 访问到shanghai 步骤:找到默认站点,将默认站点的监听改为 192.168.1.10:80 找到shanghai 的server区域,将监听改为 192.168.2.10:80 配置web服务器的第二个网卡IP为192.168.2.10。第一个网卡为默认的192.168.1.10 客户端分别访问192.168.1.10 192.168.1.20能够获取到不同页面 **三、nginx扩展功能配置** **3.1** **、客户端地址访问限制** **nginx访问模块: ngx_http_access_module** 规则按照从上往下匹配,匹配成功则不再往下匹配,如果未匹配成功则默认允许访问。 可如下直接在项目中定义允许或者拒绝访问: location / { root /var/www/chengdu; index index.html index.htm; deny 192.168.1.123/32; allow 192.168.1.0/24; } 也可以加在子项目中,当用户直接访问域名或者IP时该配置不生效,只在客户访问域名或IP加上该路径/status时才会应用地址访问规则: location /status { stub_status on; access_log off; allow 192.168.1.12/32; deny 0.0.0.0/0; } 除此之外还可以将deny、allow放在http区域中,表示全局IP地址限制。 **3.2** **、客户访问认证** **nginx认证模块: ngx_http_auth_basic_module** 1.主配置文件中启用认证功能,该内容添加位置和客户端IP地址限制一致: auth_basic "chengdu-www"; auth_basic_user_file /usr/local/nginx/conf/.htpasswd; 2.创建用户名、密码文件: # yum install -y httpd //提供了htpassword命令 # htpasswd -bc /usr/local/nginx/conf/.htpasswd admin 123456 -c //创建文件 -b //免交互式输入密码 注意:在后续创建新用户时,不再需要跟"c"选项,否则会覆盖原来的文件 3.定义文件权限及属主权限: # chmod 600 /usr/local/nginx/conf/.htpasswd # chown nginx:nginx /usr/local/nginx/conf/.htpasswd 运行nginx程序的用户nginx默认无法读取属主为root且600权限的htpasswd文件,因此修改属主为nginx即可读取该文件验证用户账户合法性。 4.用户访问验证 **3** **.3** **、nginx搭建文件共享服务** **nginx模块功能: ngx_http_autoindex_module** 如下图所示,点击文件后可立即下载 ![](https://file.jishuzhan.net/article/1789457757003321345/ec588aa5a99d5848bc21fc876bac9a61.webp) 配置方法: 1.在项目中开启文件目录索引功能: autoindex on; --- 开启nginx站点目录索引功能 注意:如果站点目录中存在默认网页,则会直接访问到默认网页而非站点中的目录 可以将站点下默认网页删除,使得能够访问到索引页面而非网页内容。 2.创建访问资源 # cd /var/www/html # mkdir 数据 资料 软件 # echo "这是文本内容!!!" \> 数据/abc.txt # echo "这也是文本内容!!!" \> 资料/123.doc # cp /root/nginx-1.20.1.tar.gz 软件 ![](https://file.jishuzhan.net/article/1789457757003321345/4a8ce7e2efed251c4ee7b074edb5cb1b.webp) 默认情况下如.txt文件会直接打开而非下载,但.doc、.tar.gz文件可以下载。 **3** **.4** **、openssl的使用** 1.使用openssl生成证书 # cd /usr/local/nginx/conf 生成私钥: # openssl genrsa -out nginx.key 生成公钥: \[root@pillar1m conf\]# openssl req -new -x509 -key nginx.key -out nginx.crt ![](https://file.jishuzhan.net/article/1789457757003321345/58f9563891ddd303f90940c0fb7a1c98.webp) 2. 修改nginx配置文件,指定证书位置 将主配置文件中关于ssl区域的配置注释取消并修改: server { listen 443 ssl; server_name localhost; ssl_certificate nginx.crt; ssl_certificate_key nginx.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { root html; index index.html index.htm; } } 3.重启服务并访问: ![](https://file.jishuzhan.net/article/1789457757003321345/7b6131eca2165fdd0969d86a9dca9bb8.webp) ****4**** ****.**** ****地址重写http跳转https**** 将以下配置加入在站点项目的Server { 区域中 rewrite \^(.\*)$ https://${server_name}$1 permanent; **四、** **LNMP架构及应用部署** 4.1、安装mysql数据库 1.先决条件 # yum install -y gcc gcc-c++ make ncurses-devel autoconf lrzsz //安装所需依赖包 //ncurses 字符终端处理库,包括面板和菜单等功能 通过rz上传 cmake、mysql至服务器: # tar zxvf cmake-2.8.6.tar.gz -C /usr/src # cd /usr/src/cmake-2.8.6 # ./configure # make \&\& make install 2.编译安装mysql # tar zxf mysql-5.6.36.tar.gz -C /usr/src # cd /usr/src/mysql-5.6.36/ # cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DCMAKE_INSTALL_PREFIX //程序安装路径 -DSYSCONFDIR //程序初始化目录,配置文件存放目录 -DDEFAULT_CHARSET //指定字符集 -DDEFAULT_COLLATION //指定字符集校对规则 -DWITH_EXTRA_CHARSETS //支持额外的字符集 # make \&\& make install # useradd -M -s /sbin/nologin mysql //创建mysql运行用户和组 4.配置mysql # chown -R mysql:mysql /usr/local/mysql # cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf //复制mysql主配置文件到运行目录 初始化数据库,以mysql用户运行初始化脚本并制定mysql数据库运行目录和数据存放目录 # /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/ --user //指定运行用户 --basedir //指定安装目录 --datadir //指定数据库数据存放位置 修改属主权限 # chown -R root /usr/local/mysql # chown -R mysql /usr/local/mysql/data 设置变量环境,方便执行mysql命令,若不设置则只能够使用绝对路径命令执行 # echo "PATH=$PATH:/usr/local/mysql/bin" \>\> /etc/profile # . /etc/profile 添加为系统服务,方便控制mysql服务 # cp /usr/local/mysql/support-files/mysql.server /usr/local/mysql/bin/mysqld.sh # vim /lib/systemd/system/mysqld.service \[Unit

Description=Mysql Server

After=network.target

Service

User=mysql

Type=forking

PIDFile=/usr/local/mysql/data/pillar1m.pid //改为服务器自身的主机名

ExecStart=/usr/local/mysql/support-files/mysql.server start

ExecStop=/usr/local/mysql/support-files/mysql.server stop

Install

WantedBy=multi-user.target //Minimal 或者桌面/graohical.target

systemctl daemon-reload //重载systemctl守护进程

systemctl enable mysqld.service //将httpd服务设置为开机自启

以下两种方法都可查询开机是否启动:

systemctl list-unit-files | grep mysqld

systemctl is-enabled mysqld.service

systemctl start mysqld

netstat -anpt | grep mysqld //可查看mysql运行状态,端口号为tcp:3306

3.2、安装PHP

1.先决条件

rpm -e php php-cli php-ldap php-common php-mysql --nodeps

yum install -y gd libxml2-devel libjpeg-devel libpng-devel xz-devel zlib-devel freetype-devel libtool* libtool-ltdl* libtool-ltdl-devel

//L2,不是数字12,GD插件,提供验证码功能

安装三个加密扩展工具库:libmcrypt、mhash、mcrypt

tar zxvf libmcrypt-2.5.8.tar.gz -C /usr/src/ //php加密算法扩展库程序

cd /usr/src/libmcrypt-2.5.8/

./configure

make && make install

ln -s /usr/local/lib/libmcrypt.* /usr/lib/

cd

tar zxvf mhash-0.9.9.9.tar.gz -C /usr/src/

cd /usr/src/mhash-0.9.9.9/

./configure

make && make install

ln -s /usr/local/lib/libmhash.* /usr/lib/

cd

tar zxvf mcrypt-2.6.8.tar.gz -C /usr/src/

cd /usr/src/mcrypt-2.6.8/

./configure //如若提示版本小于2.5,则执行以下命令设置变量重新配置

vim /etc/profile //编辑系统文件,加入以下内容:

export LD_LIBRARY_PATH=/usr/local/lib: LD_LIBRARY_PATH

. /etc/profile

./configure //设置变量后重新配置

make && make install

2.安装PHP

tar zxf php-5.5.38.tar.gz -C /usr/src

cd /usr/src/php-5.5.38/

./configure --prefix=/usr/local/php5 --with-gd --with-zlib --with-mysql=/usr/local/mysql --with-config-file-path=/usr/local/php5 --enable-mbstring --enable-fpm --with-jpeg-dir=/usr/lib --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-zip --libdir=/usr/lib64 --with-png-dir

--prefix:指定安装目录

--with-mcrypt:加载数据加密等扩展工具支持

--with-mysql:指定mysql数据库安装位置

--with-config-file-path:指定php配置文件php.ini将要存放的位置

--enable-mbstring:启用多字符串功能

--with-mysqli:mysql扩展功能

make && make install

注意:如果PHP与MySQL不在同一台服务器中,则需要用以下方式配置:

./configure --prefix=/usr/local/php5 --with-gd --with-zlib --with-config-file-path=/usr/local/php5 --enable-mbstring --enable-fpm --with-jpeg-dir=/usr/lib --enable-zip --libdir=/usr/lib64 --with-png-dir --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd

3.配置PHP

主要设置php.ini,用于确定PHP的运行参数

1.PHP.ini设置

PHP的配置文件在解压目录下,有两个配置文件,分别用于开发与生产

/usr/src/php-5.5.38/php.ini-development //开发版,用于测试、学习

/usr/src/php-5.5.38/php.ini-production //生产版,用于生产环境

将PHP.ini配置文件拷贝至安装目录下

grep -v "^;" /usr/src/php-5.5.38/php.ini-development | grep -v "^$" > /usr/local/php5/php.ini

cp /usr/local/php5/php.ini /usr/local/php5/php.ini.bak //备份配置文件

vim /usr/local/php5/php.ini

在[PHP] 的下一行加入如下:

default_charset = "utf-8"

file_uploads = On

upload_max_filesize = 2M

max_file_uploads = 20M

post_max_size = 8M

short_open_tag = On //修改自带的为on

extension = php_mysqli.dll

分别是设置默认字符集、允许文件上传、上传文件最大限制、每个请求最多能够上传个数、通过post提交的数据量限制、识别PHP语法标记、以及添加mysqli支持

添加优化模块

tar zxf zend-loader-php5.5-linux-x86_64_update1.tar.gz -C /usr/src/

cd /usr/src/zend-loader-php5.5-linux-x86_64/

cp ZendGuardLoader.so /usr/local/php5/

vim /usr/local/php5/php.ini //加入优化模块 [PHP]中

zend_extension=/usr/local/php5/ZendGuardLoader.so

zend_loader.enable=1

4.配置nginx支持php环境

若要让nginx能够解析php网页,有两种办法可以选择

1.充当中介,将访问php页面的请求转交给其他服务器 LAMP处理

2.使用PHP的FPM模块来调用本机的PHP环境

配置FPM模块

cd /usr/local/php5/etc/

cp php-fpm.conf.default php-fpm.conf

useradd -M -s /sbin/nologin php

vim php-fpm.conf //修改以下内容,并非直接添加

pid = run/php-fpm.pid //指定pid文件位置

user = php //设置运行用户

group = php //设置运行组

pm.max_children = 50 //最多空闲进程

pm.start_servers = 20 //启动时开启的进程数

pm.min_spare_servers = 5 //最少空闲进程数

pm.max_spare_servers = 35 //最大空闲进程数

以上内容必须设置,否则FPM模块无法启动且会报错

/usr/local/php5/sbin/php-fpm //启用fpm模块

netstat -anpt | grep php

vim /etc/profile //在开机启动配置文件中加入以下命令,实现开机自启php功能

/usr/local/php5/sbin/php-fpm

1.转交其他服务器:

vim /usr/local/nginx/conf/nginx.conf

server {

..... //在默认页面的server中添加一个location区域

location ~ \.php$ { //访问.php页面配置区域

proxy_pass http://192.168.1.200:80; //另一台lamp服务器

}

}

2.调用本机FPM

vim /usr/local/nginx/conf/nginx.conf

server {

..... //在默认页面的server中添加一个location区域

location ~ \.php$ {

root /usr/local/nginx/html;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

include fastcgi.conf;

charset utf-8; //不加可能会产生乱码

}

systemctl restart nginx

测试php是否正常启动:

vim /usr/local/nginx/html/phpinfo.php

<?php

phpinfo( );

?>

客户机测试:192.168.1.10/phpinfo.php

测试LNMP是否能够正常使用

mysqladmin -u root -p password //设置mysql密码为 123456

Enter password: //默认密码为空 ,回车即可

New password:

Confirm new password:

vim /usr/local/nginx/html/chengdu.php //mysql5.5使用的是mysqli,5.3使用的是mysql

<?php

$link=mysqli_connect('localhost','root','Aa123456');

if($link) echo "恭喜你,数据库连接成功!";

mysqli_close($link);

?>

客户机测试:192.168.1.10/chengdu.php

3.4、在LNMP平台部署WEB应用:

vim /usr/local/nginx/conf/nginx.conf

修改在默认server { 中设置站点路径以及支持解析php页面

location / {

root html/wwwroot;

index index.html index.htm index.php;

}

添加:在 默认 server { 中添加如下内容: //需要注意,在测试LNMP可用时应该添加过此模块的,因此这里不需要再次添加,直接使用之前添加的这个模块即可

location ~ \.php$ {

root /usr/local/nginx/html/wwwroot;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

include fastcgi.conf;

charset utf-8;

}

yum install -y unzip

unzip SKYUC.v3.4.2.SOURCE.zip

cp -rf SKYUC.v3.4.2.SOURCE/wwwroot /usr/local/nginx/html/

cd /usr/local/nginx/html/wwwroot/

chown -R php:php admincp/ data/ templates/ upload/

systemctl restart nginx

mysql -u root -p

mysql> create database skyucdb;

mysql> grant all on skyucdb.* to skyuc@localhost identified by 'Aa123456';

vim /var/www/chengdu/includes/class_core.php

禁用2446行:

$this->shutdown = Shutdown::init ();

客户端访问:

http://192.168.1.10/install/index.php

注册时填写 创建的数据库"skyucdb" 以及管理员"skyuc" 密码:Aa123456

填写管理员时可以根据自己需求输入相关管理员名称与密码

首页:

http://192.168.1.10/

后台中心:

http://192.168.1.10/admincp

部署discuz

mysql -u root -p

mysql> create database bbsdb;

mysql> grant all on bbsdb.* to bbs@localhost identified by 'Aa123456';

yum install -y unzip

unzip Discuz_7.0.0_FULL_SC_UTF8.zip

cd Discuz_7.0.0_FULL_SC_UTF8

cp -rf upload/ /usr/local/nginx/html/wwwroot

cd /usr/local/nginx/html/wwwroot

chown -R php config.inc.php attachments/ forumdata/ uc_client/data/cache/ templates/ uc_server

systemctl restart nginx

客户端访问:

http://192.168.1.10/install

访问主页:

http://192.168.1.10

访问后台: //通过管理员登录,然后点击右上角的"系统设置"即可跳转到系统后台

http://192.168.1.10

四、补充知识:

  1. 反向代理:

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

代理服务和反向代理两者的相同点在于都是用户和服务器之间的中介,完成用户请求和结果的转发。主要的不同在于:

转发代理的内部是客户端,而反向代理的内部是服务器。即内网的客户端通过转发代理服务器访问外部网络,而外部的用户通过反向代理访问内部的服务器。

  1. epoll/select模型

linux内核版本为含2.6及以后的版本中nginx可使用的epoll模型,该模型的特点为epoll对于句柄时间的选择不是遍历的,是事件响应的,就是句柄上时间来就马上选择出来,不需要遍历整个句柄链表,因此效率非常高效。

Apache默认使用的模型为select,在选择句柄时,是逐一遍历所有句柄,也就是说有事件响应时,select需要遍历所有句柄才能获取到哪些句柄有事件通知,因此效率非常低。

相关推荐
YuSun_WK24 分钟前
程序&进程&多任务&线程
linux·运维·服务器
HeLLo_a1191 小时前
第11章 安全网络架构和组件(一)
linux·服务器·网络
南川琼语2 小时前
TCP概念+模拟tcp服务器及客户端
linux·服务器·网络·tcp/ip
潘yi.6 小时前
web技术与nginx网站环境部署
服务器·网络·nginx
安顾里6 小时前
Linux命令-iostat
linux·运维·服务器
whoarethenext6 小时前
初始https附带c/c++源码使用curl库调用
服务器·c++·qt·https·curl
100编程朱老师7 小时前
面试:什么叫Linux多路复用 ?
linux·运维·服务器
群联云防护小杜7 小时前
云服务器主动防御策略与自动化防护(下)
运维·服务器·分布式·安全·自动化·音视频
PPIO派欧云7 小时前
PPIO X OWL:一键开启任务自动化的高效革命
运维·人工智能·自动化·github·api·教程·ppio派欧云
Jtti7 小时前
Jtti:nginx服务器如何限制访问频率
服务器·网络·nginx