Nginx网站服务

文章目录

  • Nginx网站服务
    • 一.Nginx服务基础
      • 1.关于Nginx
      • 2.Nginx和Apache的差异:
      • 3.编译安装Nginx服务
        • (1)关闭防火墙
        • (2)安装依赖包
        • (3)创建运行用户、组(Nginx服务程序默认以nobody身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限)
        • (4)将安装nginx所需软件包传到/opt目录下,编译安装Nginx
        • (5)检查、启动、重启、停止nginx服务
        • (6)添加Nginx系统服务
      • 4.认识Nginx服务的主配置文件nginx.conf
    • 二.Nginx访问控制
      • 1.访问状态统计配置
      • 2.基于授权的访问控制
        • (1)生成用户密码认证文件
        • (2)修改主配置文件相对应目录,添加认证配置项
        • (3)重启服务,访问测试
      • 3.基于客户端的访问控制
    • 三.Nginx虚拟主机
      • 1.基于域名的Nginx虚拟主机
        • (1)为虚拟主机提供域名解析
        • (2)为虚拟主机准备网页文档
        • (3)修改Nginx的配置文件
        • (4)重启服务,访问测试
      • 2.基于IP的Nginx虚拟主机
      • 3.基于端口的Nginx虚拟主机
    • 四.LNMP架构部署及应用
      • 1.安装Nginx服务
        • (1)安装依赖包
        • (2)创建运行用户
        • (3)编译安装
        • (4)优化路径
        • (5)添加Nginx系统服务
      • 2.安装MySQL服务
        • (1)安装Mysql环境依赖包
        • (2)创建运行用户
        • (3)编译安装
        • (4)修改mysql配置文件
        • (5)更改mysql安装目录和配置文件的属主属组
        • (6)设置路径环境变量
        • (7)初始化数据库
        • (8)添加mysqld系统服务
        • (9)修改mysql的登录密码
        • (10)授权远程登录
      • 3.安装配置PHP解析环境
        • (1)安装环境依赖包
        • (2)编译安装
        • (3)路径优化
        • (4)调整PHP配置文件
        • (5)启动php-fpm
        • (6)配置Nginx支持PHP解析
        • (7)验证PHP测试页
        • (8)验证数据库工作是否正常
      • 4.部署Discuz!社区论坛Web应用
      • 5.fpm参数优化

Nginx网站服务

一.Nginx服务基础

1.关于Nginx

Nginx是一款高性能、轻量级Web服务软件,稳定性高,系统资源消耗低,对HTTP并发连接的处理能力高,单台物理服务器可支持30000~50000个并发请求

2.Nginx和Apache的差异:

  • 轻量级,Nginx比Apache占用更少的内存及资源
  • 静态处理,Nginx静态处理性能比Apache高
  • Nginx可以实现无缓存的反向代理加速,提高网站运行速度
  • Nginx的性能和可伸缩性不依赖于硬件,Apache依赖于硬件
  • Nginx支持热部署,启动速度迅速,可以在不间断服务的情况下,对软件版本或者配置进行升级
  • Nginx是异步进程,多个连接可以对应一个进程 ;Apache是同步多进程,一个连接对应一个进程
  • Nginx高度模块化,编写模块相对简单,且组件比Apache少,高并发下Nginx能保持低资源低消耗高性能
  • Nginx配置简洁,Apache配置复杂

3.编译安装Nginx服务

(1)关闭防火墙

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

(2)安装依赖包

yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
###nginx的配置及运行需要pcre、zlib、openssl等软件包的支持,因此需要安装这些软件的开发包,以便提供相应的库和头文件

(3)创建运行用户、组(Nginx服务程序默认以nobody身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限)

useradd -M -s /sbin/nologin nginx

(4)将安装nginx所需软件包传到/opt目录下,编译安装Nginx

cd /opt

tar zxvf nginx-1.12.0.tar.gz -C /opt/

cd nginx-1.12.0/

./configure \
--prefix=/usr/local/nginx \   ###指定nginx的安装路径
--user=nginx \   ###指定用户名
--group=nginx \   ###指定组名
--with-http_stub_status_module   ###启用http_stub_status_module模块以支持状态统计

make [-j2] && make install

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/   ###让系统识别nginx的操作命令

(5)检查、启动、重启、停止nginx服务

nginx -t   ###检查配置文件是否配置正确

nginx   ###启动

###停止
cat /usr/local/nginx/logs/nginx.pid   ###先查看nginx的PID号
kill -3 <PID号>
kill -s QUIT <PID号>
killall -3 nginx
killall -s QUIT nginx

###重载
kill -1 <PID号>
kill -s HUP <PID号>
killall -1 nginx
killall -s HUP nginx

kill -USR1 <PID号>   ###日志分割,重新打开日志文件

kill -USR2 <PID号>   ###平滑升级

###新版本升级
tar -zxvf nginx-1.xx.xx.tar.gz

cd nginx-1.xx.xx/

./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module \
--with-http_ssl_module

make

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old

cp objs/nginx /usr/local/nginx/sbin/nginx

make upgrade
###要保证当前nginx进程是通过/usr/local/nginx/sbin/nginx启动的,而不是通过查找环境变量中那个nginx命令启动的,或者先killall nginx,再/usr/local/nginx/sbin/nginx

(6)添加Nginx系统服务

方法一:
vim /etc/init.d/nginx.sh
#!/bin/bash
#chkconfig: - 99 20
#description:Nginx Service Control Script
COM="/usr/local/nginx/sbin/nginx"
PID="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
  $COM
;;
stop)
  kill -s QUIT $(cat $PID)
;;
restart)
  $0 stop
  $0 start
;;
reload)
  kill -s HUP $(cat $PID)
;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1

esac
exit 0

chmod +x /etc/init.d/nginx
chkconfig --add nginx   ###添加为系统服务
systemctl stop nginx
systemctl start nginx

方法二:
vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service

--------------------------------------------------------------

[Unit]:服务的说明
Description:描述服务
After:依赖,当依赖的服务启动之后再启动自定义的服务

[Service]服务运行参数的设置
Type=forking是后台运行的形式,使用此启动类型应同时指定PIDFile=,以便systemd能够跟踪服务的主进程。
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注:启动、重启、停止命令全部要求使用绝对路径

[Install]服务安装的相关设置,可设置为多用户

4.认识Nginx服务的主配置文件nginx.conf

  • 全局块:全局配置,对全局生效

  • events块:配置影响Nginx服务器与用户的网络连接

  • http块:配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置

  • server块:配置虚拟主机的相关参数,一个http块中可以有多个server块

  • location块:用于配置匹配的uri

  • upstream:配置后端服务器具体地址,负载均衡配置不可或缺的部分

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

全局配置:
#user nobody;   ###运行用户,若编译时未指定则默认为nobody

worker_processes 1;   ###工作进程数量,一般设置为和CPU核数一样;设置为auto,nginx将会自己获取这个数值

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

#pid logs/nginx.pid;   ###PID 文件的位置

worker_rlimit_nofile 60000;   ###设置所有worker进程最大可以打开的文件数,默认为1024
I/O事件配置:
events {
	use epoll;   ###使用epoll I/O模型,2.6及以上版本的系统内核,建议使用epoll模型以提高性能
	worker_connections 60000;   ###每个进程处理60000个连接
	multi_accept on;   ###是否一次性将监听到的连接全接收进来,默认为off,关闭时一次接收一条连接
	accept_mutex on;   ###默认为on,开启时表示以串行方式接入新连接,否则将通报给所有worker,这可能会浪费资源并产生不可预计的后果,例如惊群问题
}

###如提高每个进程的连接数还需执行“ulimit -n 65535”命令临时修改本地每个进程可以同时打开的最大文件数
###在Linux平台上,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)
###可使用ulimit -a命令查看系统允许当前用户进程打开的文件数限制
###epoll是Linux内核为处理大批句柄而作改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著的减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率
###worker_processes的值和work_connections的值决定了最大并发数量,最大并发数计算方式为:worker_processes*worker_connections。但在反向代理场景中计算方法不同,因为nginx既要维持和客户端的连接,又要维持和后端服务器的连接,因此处理一次连接要占用2个连接,所以最大并发数计算方式为:worker_processes*worker_connections/2
HTTP配置:
http {
	include mime.types;   ###文件扩展名与文件类型映射表
	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;   ###访问日志位置
sendfile        on;   ###开启文件传输模式
#tcp_nopush     on;   ###只在sendfile on时有效。调用tcp_cork方法,让数据包不会马上传送出去,等到数据包最大时,一次性的传输出去,这样有助于解决网络堵塞。默认为off
#keepalive_timeout  0;   ###连接保持超时时间,单位是秒
    keepalive_timeout  65;
#gzip  on;   ###gzip模块设置,设置是否开启gzip压缩输出

server {   ###Web服务的监听配置
	listen 80;   ###监听地址及端口
	server_name www.xc.com;   ###站点域名,可以有多个,用空格隔开
	charset utf-8;   ###网页的默认字符集
	location / {   ###根目录配置
	root html;   ###网站根目录的位置/usr/local/nginx/html
	index index.html index.php;   ###默认首页文件名
	}
	error_page 500 502 503 504 /50x.html;   ###内部错误的反馈页面
	location = /50x.html {   ###错误页面配置
	root html;
	}
 }
} 
日志格式设定:
$remote_addr与$http_x_forwarded_for用以记录客户端的ip地址

$remote_user:用来记录客户端用户名称

$time_local: 用来记录访问时间与时区

$request: 用来记录请求的url与http协议

$status: 用来记录请求状态;成功是200

$body_bytes_sent :记录发送给客户端文件主体内容大小

$http_referer:用来记录从哪个页面链接访问过来的

$http_user_agent:记录客户浏览器的相关信息

通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址

location常见配置指令,root、alias、proxy_pass
root(根路径配置):root /var/www/html
请求www.xc.com/test/1.html,会返回文件/var/www/html/test/1.html

alias(别名配置):alias /var/www/html
请求www.xc.com/test/1.html,会返回文件/var/www/html/1.html

proxy_pass(反向代理配置)

二.Nginx访问控制

1.访问状态统计配置

先使用命令/usr/local/nginx/sbin/nginx -V查看已安装的Nginx是否包含HTTP_STUB_STATUS模块

cat /opt/nginx-1.12.0/auto/options | grep YES   ###可查看nginx已安装的所有模块
修改nginx.conf配置文件,指定访问位置并添加stub_status配置
cd /usr/local/nginx/conf

cp nginx.conf nginx.conf.bak

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

http {
server {
		listen 80;
		server_name www.xc.com;
		charset utf-8;
		location / {
			root html;
			index index.html index.php;
		}
###添加stub_status配置		
		location /status {   ###访问位置为/status
			stub_status on;   ###打开状态统计功能
			access_log off;   ###关闭此位置的日志记录
			}
systemctl restart nginx

浏览器访问 http://192.168.230.3/status

Active connections:表示当前的活动连接数,即当前与 Nginx 服务器建立的连接数

server accepts handled requests :表示已经处理的连接信息,三个数字依次表示服务器已接收的连接数;服务器成功处理的连接数;服务器累计处理的总请求数(在保持连接模式下,请求数量可能会大于连接数量)

Reading:表示当前正在从客户端读取数据的连接数

Writing:表示当前正在向客户端写入数据的连接数

Waiting:表示当前空闲并等待请求的连接数

可curl -Ls http://192.168.230.3/status 结合awk与if语句进行性能监控

2.基于授权的访问控制

(1)生成用户密码认证文件

yum install -y httpd-tools

htpasswd -c /usr/local/nginx/passwd.db zhangsan

chown nginx /usr/local/nginx/passwd.db

chmod 400 /usr/local/nginx/passwd.db

(2)修改主配置文件相对应目录,添加认证配置项

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

server {
	location / {
###添加以下认证配置
	auth_basic "secret";   ###设置密码提示框文字信息
	auth_basic_user_file /usr/local/nginx/passwd.db;

(3)重启服务,访问测试

nginx -t

systemctl restart nginx

浏览器访问 http://192.168.230.3

在这里插入图片描述
在这里插入图片描述

3.基于客户端的访问控制

访问控制规则如下:
deny IP/IP 段:拒绝某个 IP 或 IP 段的客户端访问
allow IP/IP 段:允许某个 IP 或 IP 段的客户端访问
规则从上往下执行,如匹配则停止,不再往下匹配

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

	server {
		location / {
###添加控制规则
			allow 192.168.230.5;   ###允许访问的客户端IP
			deny all;   ###拒绝其它IP客户端访问
			
systemctl restart nginx

三.Nginx虚拟主机

1.基于域名的Nginx虚拟主机

(1)为虚拟主机提供域名解析

echo "192.168.230.3 www.xc.com" >> /etc/hosts

(2)为虚拟主机准备网页文档

mkdir -p /var/www/html/xc
echo "<h1>www.xc.com</h1>" > /var/www/html/xc/index.html

(3)修改Nginx的配置文件

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

http {
	server {
		listen 80;
		server_name www.xc.com;   ###置域名www.xc.com
		charset utf-8;
		access_log logs/www.xc.access.log;   ###设置日志名
		location / {
			root /var/www/html/xc;   ###设置www.xc.com 的工作目录
			index index.html index.php;
			}
			error_page 500 502 503 504 /50x.html;
		location = 50x.html{
			root html;
		}
	}
		server {
		listen 80;
		server_name www.benet.com;					#设置域名www.benet.com
		charset utf-8;
		access_log logs/www.benet.access.log; 
		location / {
			root /var/www/html/benet;
			index index.html index.php;
		}
		error_page 500 502 503 504 /50x.html;
		location = 50x.html{
			root html;
		}
	}	

(4)重启服务,访问测试

systemctl restart nginx

浏览器访问 http://www.xc.com

在这里插入图片描述
在这里插入图片描述

2.基于IP的Nginx虚拟主机

ifconfig ens33:0 192.168.230.10 netmask255.255.255.0

vim /usr/local/nginx/conf/nginx.conf
http {
	server {
		listen 192.168.230.3:80;   ###设置监听地址192.168.230.3
		server_name www.xc.com;
		charset utf-8;
		access_log logs/www.xc.access.log;
		location / {
			root /var/www/html/xc;
			index index.html index.php;
		}
		error_page 500 502 503 504 /50x.html;
		location = 50x.html{
			root html;
		}
	}
	server {
		listen 192.168.230.10:80;
		server_name www.benet.com;
		charset utf-8;
		access_log logs/www.benet.access.log; 
		location / {
			root /var/www/html/benet;
			index index.html index.php;
		}
		error_page 500 502 503 504 /50x.html;
		location = 50x.html{
			root html;
		}
	}	
	
systemctl restart nginx

浏览器访问 
http://192.168.230.3
http://192.168.230.10

3.基于端口的Nginx虚拟主机

vim /usr/local/nginx/conf/nginx.conf
http {
	server {
		listen 192.168.230.3:8080;   ###设置监听8080端口
		server_name www.xc.com;
		charset utf-8;
		access_log logs/www.xc.access.log;
		location / {
			root /var/www/html/xc;
			index index.html index.php;
		}
		error_page 500 502 503 504 /50x.html;
		location = 50x.html{
			root html;
		}
	}
	server {
		listen 192.168.230.3:8888;
		server_name www.benet.com;
		charset utf-8;
		access_log logs/www.benet.access.log; 
		location / {
			root /var/www/html/benet;
			index index.html index.php;
		}
		error_page 500 502 503 504 /50x.html;
		location = 50x.html{
			root html;
		}
	}	

systemctl restart nginx

浏览器访问
http://192.168.230.3:8080
http://192.168.230.3:8888

四.LNMP架构部署及应用

在这里插入图片描述

1.安装Nginx服务

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

(1)安装依赖包

yum -y install pcre-devel zlib-devel gcc gcc-c++ make

(2)创建运行用户

useradd -M -s /sbin/nologin nginx

(3)编译安装

cd /opt
tar xf nginx-1.24.0.tar.gz

cd nginx-1.24.0/

./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module

make [-j2] && make install

(4)优化路径

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

(5)添加Nginx系统服务

vim /lib/systemd/system/nginx.service

[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service

2.安装MySQL服务

(1)安装Mysql环境依赖包

yum -y install \
ncurses \
ncurses-devel \
bison \
cmake

(2)创建运行用户

useradd -M -s /sbin/nologin mysql

(3)编译安装

cd /opt
tar zxvf mysql-boost-5.7.20.tar.gz
cd /opt/mysql-5.7.20/

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1

make [-j2] && make install

(4)修改mysql配置文件

vim /etc/my.cnf

[client]
port = 3306
socket=/usr/local/mysql/mysql.sock

[mysqld]
user = mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character-set-server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
server-id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

(5)更改mysql安装目录和配置文件的属主属组

chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf

(6)设置路径环境变量

echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile

source /etc/profile

(7)初始化数据库

cd /usr/local/mysql/bin/

./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

(8)添加mysqld系统服务

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/

systemctl daemon-reload

systemctl start mysqld.service

systemctl enable mysqld

(9)修改mysql的登录密码

mysqladmin -u root -p password "123"
###Enter键确认即可

(10)授权远程登录

mysql -u root -p

3.安装配置PHP解析环境

(1)安装环境依赖包

yum -y install gd \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel

(2)编译安装

cd /opt
tar xf php-7.1.10.tar.bz2
cd php-7.1.10/

./configure \
--prefix=/usr/local/php \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip

make [-j2] && make install

(3)路径优化

ln -s /usr/local/php/bin/* /usr/local/bin/
ln -s /usr/local/php/sbin/* /usr/local/sbin/

(4)调整PHP配置文件

调整主配置文件:
cp /opt/php-7.1.10/php.ini-development /usr/local/php/lib/php.ini

vim /usr/local/php/lib/php.ini
date.timezone = Asia/Shanghai   ###939行取消注释,修改
mysqli.default_socket = /usr/local/mysql/mysql.sock   ###1170行修改

php -m   ###验证安装的模块
调整进程服务配置文件:
cd /usr/local/php/etc/

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

vim php-fpm.conf
pid = run/php-fpm.pid   ###17行去掉";"注释
调整扩展配置文件:
cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.conf

(5)启动php-fpm

/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini

netstat -anpt | grep 9000

cd /opt/php-7.1.10/sapi/fpm

cp php-fpm.service /usr/lib/systemd/system/php-fpm.service

systemctl restart php-fpm.service

###PHP-FPM(FastCGI Process Manager:FastCGI 进程管理器)是一个PHPFastCGI管理器, 由于Nginx服务器不能处理动态页面,需要由Nginx把动态请求交给php-fpm进程进行解析

(6)配置Nginx支持PHP解析

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

###65行取消注释,修改
location ~ \.php$ {
	root           html;
	fastcgi_pass   127.0.0.1:9000;
	fastcgi_index  index.php;
	fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;
###将/scripts修改为nginx的工作目录
###fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;  ###$document_root 代表当前请求在root指令中指定的值
	include        fastcgi_params;
}

systemctl restart nginx.service

(7)验证PHP测试页

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

<?php
phpinfo();
?>

浏览器访问
http://192.168.230.3/index.php

在这里插入图片描述

(8)验证数据库工作是否正常

mysql -u root -p   ###输入密码

show databases;

CREATE DATABASE bbs;

GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';

GRANT all ON bbs.* TO 'bbsuser'@'localhost' IDENTIFIED BY 'admin123';

flush privileges;

show databases;

quit

###替换原来的测试页内容
vim /usr/local/nginx/html/index.php

<?php
$link=mysqli_connect('192.168.230.3','bbsuser','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>

浏览器访问
http://192.168.230.3/index.php

在这里插入图片描述

4.部署Discuz!社区论坛Web应用

cd /opt

unzip Discuz_X3.4_SC_UTF8.zip  -d /opt/dis

cd /opt/dis/dir_SC_UTF8/

cp -r upload/ /usr/local/nginx/html/bbs/
调整论坛目录的权限:
cd /usr/local/nginx/html

cd /usr/local/nginx/html/bbs/

chown -R nginx config/
chown -R nginx data/
chown -R nginx uc_client/
chown -R nginx uc_server/

论坛安装页面访问:
http://192.168.230.3/bbs/install/index.php

chown -R nobody:nobody bbs/

数据库服务器:localhost   ###本地架设就用localhost,如何不是在在本机上就要填写IP地址和端口号
数据库名字:bbs
数据库用户名:bbsuser
数据库密码:admin123
###管理员密码自定义即可

访问论坛页面:
http://192.168.230.3/bbs/index.php

在这里插入图片描述

5.fpm参数优化

Nginx的PHP解析功能实现如果是交由FPM处理的,为了提高PHP的处理速度,可对FPM模块进行参数的调整,根据服务器的内存与服务负载,调整FPM模块参数

vim /usr/local/php/etc/php-fpm.conf 
pid = run/php-fpm.pid

vim /usr/local/php/etc/php-fpm.d/www.conf
pm = dynamic   ###96行,fpm进程启动方式,动态的
pm.max_children=20   ###107行,fpm进程启动的最大进程数
pm.start_servers = 5   ###112行,动态方式下启动时默认开启的进程数,在最小和最大之间
pm.min_spare_servers = 2   ###117行,动态方式下最小空闲进程数
pm.max_spare_servers = 8   ###122行,动态方式下最大空闲进程数

kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`   ###重启php-fpm

netstat -anpt | grep 9000

ps -elf | grep php-fpm

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/29566.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深眸科技专注机器视觉的研发与创新,开启工业自动化、智能化进程

在智能制造、工业效能提升的社会背景之下&#xff0c;中国制造2025战略持续落实&#xff0c;工业制造业转型升级加速&#xff0c;作为人工智能领域重要技术之一的机器视觉&#xff0c;凭借着高精度、高准确度等优势检测能力&#xff0c;不断渗透进工业领域&#xff0c;并呈现出…

oVirt 4.4.10三节点超融合集群安装配置及集群扩容(三)

本篇主要记录安装及使用过程中遇到的问题<包含4.4.x, 4.5.x> 设置engine管理页面可以通过IP访问ssh连接engine服务器并在/etc/ovirt-engine/engine.conf.d新建99-custom-sso-setup.conf,添加engine节点的IP或出口IPSSO_ALTERNATE_ENGINE_FQDNS="engine103.cluster.…

day54_spring整合mybatis

SpringMybatis整合【重点】 Spring学完了,主要学习Spring两个内容:IOCAOP 利用这两个知识来完成spring和mybatis的整合 IOC: 控制反转,用来创建对象 XxxService通过数据源创建数据库连接创建SqlSessionFactory创建SqlSession获得XxxMapper代理对象 AOP: 面向切面 控制事务 具体…

STM32——08-STM32感应开关盖垃圾桶

项目二&#xff1a;感应开关盖垃圾桶 项目需求 检测靠近时&#xff0c;垃圾桶自动开盖并伴随滴一声&#xff0c; 2 秒后关盖 发生震动时&#xff0c;垃圾桶自动开盖并伴随滴一声&#xff0c; 2 秒后关盖 按下按键时&#xff0c;垃圾桶自动开盖并伴随滴一声&#xff0c; 2 秒后…

插件化工程R文件瘦身技术方案 | 京东云技术团队

随着业务的发展及版本迭代&#xff0c;客户端工程中不断增加新的业务逻辑、引入新的资源&#xff0c;随之而来的问题就是安装包体积变大&#xff0c;前期各个业务模块通过无用资源删减、大图压缩或转上云、AB实验业务逻辑下线或其他手段在降低包体积上取得了一定的成果。 在瘦…

【2023年最新】提高分类模型指标的六大方案详解

文章目录 数据增强特征选择调整模型参数模型集成迁移学习模型解释完结 当今&#xff0c;机器学习模型得到了广泛的应用&#xff0c;其中分类模型是其中最常见和重要的一种。在实际应用中&#xff0c;如何提高分类模型的指标&#xff0c;使其在不同场景下表现更佳并且具有更好的…

Vue中如何进行音频可视化与音频频谱展示

Vue中如何进行音频可视化与音频频谱展示 随着音频应用程序的不断发展&#xff0c;音频可视化和音频频谱展示成为了重要的功能。在Vue应用程序中实现音频可视化和音频频谱展示可以帮助用户更好地了解音频文件的内容和特征。本文将介绍如何在Vue应用程序中实现音频可视化和音频频…

《嵌入式系统》知识总结10:使用位带操作操纵GPIO

位操作 汇编层面 外设控制常要针对字中某个位&#xff08;Bit&#xff09;操作 以字节编址的存储器地址空间中&#xff0c;需要3步骤&#xff08;读出-修改-写回&#xff09; 1.&#xff08;从外设&#xff09;读取包含该位的字节数据 2. 设置该位为0或1、同时屏蔽其他位&am…

POI in Action

1 POI 组件依赖 按需引入对应依赖 (给出官方的指引) 组件作用Maven依赖POIFSOLE2 FilesystempoiHPSFOLE2 Property SetspoiHSSFExcel XLSpoiHSLFPowerPoint PPTpoi-scratchpadHWPFWord DOCpoi-scratchpadHDGFVisio VSDpoi-scratchpadHPBFPublisher PUBpoi-scratchpadHSMFOutl…

【gitflow】 概念基本介绍

gitflow 简介 什么是gitflow&#xff1f; 我们大家都很会用git&#xff0c;但是我们很少去关心我们要怎么用branch和版本控制。 只知道master是第一个主分支&#xff0c;其他分支都是次要分支&#xff0c; 那你知道如下的问题如何回答吗&#xff1f; 如何保证主分支的稳定…

【哈佛积极心理学笔记】第22讲 自尊与自我实现

第22讲 自尊与自我实现 Unconditional self-esteem is the highest level, the level that Maslow would talk about “the self-actualization”, what David Schnarch talks about as “differentiated” or at the level of being known rather than desiring to be valida…

C语言复合类型之结构(struct)篇(结构指针)

结构相关知识总结 什么是结构&#xff1f;结构的声明与简单使用结构的初始化结构中成员变量的访问结构的初始化器结构数组结构数组的声明结构数组的成员标识 结构的嵌套结构指针结构作为参数在函数中传递将结构成员作为参数进行传递将结构地址(指向结构的指针)作为参数进行传递…

C语言进阶--指针(C语言灵魂)

目录 1.字符指针 2.指针数组 3.数组指针 4.数组参数与指针参数 4.1.一维数组传参 4.2.二维数组传参 4.3.一级指针传参 4.4.二级指针传参 5.函数指针 6.函数指针数组 7.指向函数指针数组的指针 8.回调函数 qsort函数 9.指针和数组笔试题 10.指针笔试题 前期要点回…

Linux学习[16]bash学习深入2---别名设置alias---history指令---环境配置相关

文章目录 前言1. alias2. history3. 环境配置相关总结 前言 linux学习15里面简单提了一下alias指令&#xff0c;就表明它是一个别名的作用&#xff0c;这节就展开来写一下。 同时上一节一笔带过的history指令&#xff0c;这一节也进行例子的演示记录。 最后是环境相关的配置&a…

常用API(String,ArrayList)

1:String类概述 String是字符串类型&#xff0c;可以定义字符串变量指向字符串对象String是不可变字符串的原因&#xff1f;1.String变量每次的修改都是产生并指向新的字符串对象。2.原来的字符串对象都是没有改变的&#xff0c;所以称不可变字符串。 2&#xff1a;String创建…

八股文总结

文章目录 项目介绍1.不动产项目项目难点机器学习算法调研图像提取算法调研数据集-ImageNetXceptionVGGInceptionDensenetMobilenet 系统流程图 2.图书项目技术栈ShiroMybatisMyBatis:Mybatis Plus: 面试问题 Java基础基本数据类型反射接口和抽象类异常代理模式1. 静态代理2. 动…

『DevOps最佳实践』使用Jenkins和Harbor进行持续集成和交付的解决方案

&#x1f4e3;读完这篇文章里你能收获到 全文采用图文形式讲解学会使用Harbor配置项目学会在Jenkins中配置Harbor推送权限使用Jenkins和Harbor进行持续集成的实践感谢点赞收藏&#xff0c;避免下次找不到~ 文章目录 一、准备工作1. 环境准备2. 修改Docker配置文件3. Docker登陆…

【SpringCloud】三、Nacos服务注册+配置管理+集群搭建

文章目录 一、认识Nacos1、安装2、服务注册和发现3、服务分级存储模型4、负载均衡策略--NacosRule5、服务实例的权重设置5、环境隔离namespace6、Eureka和Nacos的区别 二、Nacos配置管理1、统一配置管理2、微服务配置拉取3、配置热更新4、多环境配置共享 三、Nacos集群搭建1、初…

架构-嵌入式模块

章节架构 约三分&#xff0c;主要为选择题 #mermaid-svg-z6RGCDSEQT5AhE1p {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-z6RGCDSEQT5AhE1p .error-icon{fill:#552222;}#mermaid-svg-z6RGCDSEQT5AhE1p .error-text…

Apifox(1)比postman更优秀的接口自动化测试平台

Apifox介绍 Apifox 是 API 文档、API 调试、API Mock、API 自动化测试一体化协作平台&#xff0c;定位 Postman Swagger Mock JMeter。通过一套系统、一份数据&#xff0c;解决多个系统之间的数据同步问题。只要定义好 API 文档&#xff0c;API 调试、API 数据 Mock、API 自…