Nginx网站服务
Nginx
一款高性能、轻量级Web服务软件
- 稳定高
- 系统资源消耗低
- 对HTTP并发连接的处理能力高
- 单台物理服务器可支持30000~50000个并发请求
配置文件nginx.conf
- 全局配置
- I/O时间配置
Nginx工作原理
Nginx由内核和模块组成
Nginx本身做的工作实际很少,当它接到HTTP请求时,它仅仅是通过查找配置文件将此次请求映射到一个location block,而此location中所配置的各个指令则会启动不同的模块去完成工作,因此模块可以看做Nginx真正的劳动工作者
模块
Nginx 的模块从功能上分为如下三类:
- handler(处理器)模块:负责处理请求,完成响应内容的生成
- filter(过滤器)模块:filter模块是对响应内容进行处理
- proxies(代理类)模块:此类模块是Nginx的HTTP Upstream之类的模块
这些模块主要与后端一些服务比如FastCGI(动态网页请求)等进行交互,实现服务代理和负载均衡等功能
Nginx的模块从结构上分为核心模块、基础模块和第三方模块
- 核心模块:HTTP(网页)模块、EVENT(事件)模块和MAIL(邮件)模块;
- 基础模块:HTTP Access(访问)模块、HTTP FastCGI(动态网页请求)模块、HTTP - Proxy(代理)模块和HTTP Rewrite(重写)模块
- 第三方模块:HTTP Upstream Request Hash (动态池)模块、Notice(注意)模块和HTTP Access Key模块
nginx命令
nginx -t //配置文件语法检查
nginx //启动服务
killall -1 nginx //安全重启
killall -3 nginx //停止服务
安装nginx
添加安装包
关闭防火墙
安装依赖包
[root@server3 ~]# yum -y install pcre-devel zlib-devel
创建一个不可登陆用户
[root@server3 ~]# useradd -M -s /sbin/nologin nginx
解压nginx压缩包
配置nginx
[root@server3 ~]# cd nginx-1.12.2/
[root@server3 nginx-1.12.2]# ./configure --prefix=/usr/local/nginx --user=
nginx --group=nginx --with-http_stub_status_module
编译安装
验证
管理nginx:制作管理脚本
vi /etc/init.d/nginx
#!/bin/bash
#chkconfig: 35 80 20
#description: Nginx HTTP Server
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$PROG
;;
stop)
kill -s QUIT $(cat $PIDF)
;;
reload)
kill -s HUP $(cat $PIDF)
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
查询是否开启
建立软链接
[root@server1 ~]# ln -s /usr/local/nginx/conf/nginx.conf /etc/
修改配置文件
vi /usr/local/nginx/conf/nginx.conf
修改允许进程连接数:
默认允许进程连接数为1024
开启统计模块
root@server3 ~]# vi /etc/nginx.conf
/loaction查找相关文段
在下图中添加
location ~ /status { 匹配项只要URL路径中出现/status就会定位到该模块
stub_status on; 功能开启
access_log off; 不记录日志
}
检验
http://20.0.0.13
http://20.0.0.13/status
nginx status详解
- active connections 活跃的连接数量
- server accepts handled requests 总共处理了n个连接,成功创建n次握手,总共处理了n个请求
- reading: 读取客户端的连接数
- writing: 响应数据到客户端的数量
- waiting: 开启keep-alive的情况下,这个值等于active (reading+writing) 意思就是Nginx已经处理完正在等候下一次请求指令的驻留连接
查询日志文件
配置nginx的验证功能
安装文件
[root@server1 logs]# yum -y install httpd-tools
设置验证用户
开启验证功能
vi /usr/local/nginx/conf/nginx.conf
验证
20.0.0.13
登录用户zzz
密码abc123
拒绝访问
vi /usr/local/nginx/conf/nginx.conf
验证
已拒绝访问
配置虚拟主机功能
先把之前的拒绝访问的命令删除再完成下列
基于域名
修改配置文件
vi /etc/nginx.conf
添加模块
在末尾http模块中添加
创建网页文件
映射配置
验证
基于ip
创建虚拟网卡地址
编辑配置文件
[root@server1 ~]# vi /etc/nginx.conf
[root@server1 ~]# nginx -t
[root@server1 ~]# systemctl stop nginx
[root@server1 ~]# systemctl start nginx
[root@server1 ~]# netstat -anpt | grep nginx
验证
基于端口
编辑配置文件
[root@server1 ~]# vi /etc/nginx.conf
[root@server1 ~]# nginx -t
[root@server1 ~]# systemctl stop nginx
[root@server1 ~]# systemctl start nginx
[root@server1 ~]# netstat -anpt | grep nginx
验证
安装mysql服务数据库
安装依赖包
yum -y install ncurses ncurses-devel bison cmake
- ncurses ncurses-devel:字符终端下屏幕控制的基本库
- bison :自动生成语法分析器程序
- cmake :跨平台的安装编译工具
创建用户
[root@server1 ~]# useradd -s /sbin/nologin mysql
解压缩文件
[root@server1 ~]# tar zxvf mysql-boost-5.7.20.tar.gz
编译安装
[root@server1 ~]# cd 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_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
注意:如果在CMAKE的过程中有报错,当报错解决后,需要把源码目录中
的CMakeCache. txt文件删除,然后再重新CMAKE, 否则错误依旧---
make && make install
对数据库目录进行权限配置,属主,属组
[root@server1 mysql-5.7.20]# cd
[root@server1 ~]# chown -R mysql.mysql /usr/local/mysql/
编辑配置文件,进行权限配置,属主,属组
[root@server1 ~]# vi /etc/my.cnf
[root@server1 ~]# chown mysql.mysql /etc/my.cnf
[client]
port = 3306
default-character-set = utf8
socket = /usr/local/mysql/mysql.sock
[mysql]
port = 3306
default-character-set = utf8
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
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
设置环境变量(重定向输入环境,赋值)
[root@server1 ~]# echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
[root@server1 ~]# source /etc/profile
[root@server1 ~]# echo $PATH
数据库初始化设置
[root@server1 ~]# mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
--initialize-insecure
拷贝文件并服务启动
[root@server1 ~]# cd /usr/local/mysql/
[root@server1 mysql]# cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system
[root@server1 mysql]# cd
[root@server1 ~]# systemctl enable mysqld
[root@server1 ~]# systemctl start mysqld
[root@server1 ~]# systemctl status mysqld
设置数据库登录密码
[root@server1 ~]# mysqladmin -uroot -p password '123456'
[root@server1 ~]# mysql -uroot -p
安装配置php
安装依赖包
[root@server1 ~]# yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel
- libjpeg libjpeg-devel :jpeg图像压缩库
- libpng libpng-devel :png图像压缩库
- freetype freetype-devel :字体引擎
- libxml2 libxml2-devel :解析Xml程序库
- zlib zlib-devel :数据压缩
- curl curl-devel :传输工具
- openssl openssl-devel :安全通信
解压缩软件
[root@server1 ~]# tar jvxf php-7.1.10.tar.bz2
配置文件
[root@server1 ~]# cd php-7.1.10/
[root@server1 php-7.1.10]# ./configure --prefix=/usr/local/php --with-mysql-sock=/usr/local/mysql/mysql.sock --with-mysqli --with-zlib --with-curl --with-gb --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
./configure --prefix=/usr/local/php : 安装路径
--with-mysql-sock=/usr/local/mysql/mysql.sock :套接字路径
--with-mysqli : 调用mysql存储过程
--with-zlib : 打开zlib函式库
--with-curl : 调用curl规则
--with-gb : 图像处理
--with-jpeg-dir : 支持jpeg格式
--with-png-dir : 支持png格式
--with-freetype-dir :打开字体引擎
--with-openssl : 打开ssl套接字功能
--enable-fpm : 加载fpm模块
--enable-mbstring 支持utf-8功能
--enable-xml : 支持xml文件格式
--enable-session : 开启会话
--enable-ftp : 开启ftp扩展
--enable-pdo : 访问接口
--enable-tokenizer:分词器
--enable-zip: 对zip文件支持
编译安装
[root@server1 php-7.1.10]# make && make install
[root@server1 ~]# cd php-7.1.10/
[root@server1 php-7.1.10]# ls -lh
[root@server1 php-7.1.10]# cp php.ini-development /usr/local/php/lib/php.ini
[root@server1 php-7.1.10]# vi /usr/local/php/lib/php.ini
[root@server1 php-7.1.10]# /usr/local/php/bin/php -m | wc -l
配置及优化FPM模块
[root@server1 php-7.1.10]# cd
[root@server1 ~]# cd /usr/local/php/etc
[root@server1 etc]# cp php-fpm.conf.default php-fpm.conf
[root@server1 etc]# cd /usr/local/php/etc/php-fpm.d/
[root@server1 php-fpm.d]# cp www.conf.default www.conf
[root@server1 php-fpm.d]# cd /usr/local/php/etc/
[root@server1 etc]# vi php-fpm.conf
[root@server1 etc]# cd
启动fpm模块
php启动时,启动php-fpm模块,模块启动时会生成9000号端口,即FastCGI接口
[root@server1 ~]# /usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini 手动启动
[root@server1 ~]# netstat -anpt | grep 9000
创建链接
[root@server1 ~]# ln -s /usr/local/php/bin/* /usr/bin
使nginx支持PHP功能
编辑配置文件
[root@server1 ~]# vi /etc/nginx.conf
[root@server1 ~]# nginx -t
[root@server1 ~]# systemctl stop nginx
[root@server1 ~]# systemctl start nginx
修改
$document_root
创建php网页
[root@server1 ~]# vi /usr/local/nginx/html/index.php
<?php
phpinfo();
?>
访问测试
测试数据库工作是否正常
配置数据库
[root@server1 ~]# mysql -uroot -p123456
mysql> create database bbs; 创建数据库
mysql> grant all privileges on bbs.* to 'bbsuser'@'localhost' identified by 'admin123'; 本地授权
mysql> grant all privileges on bbs.* to 'bbsuser'@'%' identified by 'admin123'; 远程授权
mysql> flush privileges; 刷新
mysql> exit
配置php网页
[root@server1 ~]# vi /usr/local/nginx/html/index.php
<?php 变量 连接信息 本机地址 数据库登录名 登录密码
$link=mysqli_connect ('20.0.0.13','bbsuser','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>
部署Discuz 社区论坛 Web应用
安装论坛
解压缩文件
[root@server1 ~]# ls -lh
[root@server1 ~]# unzip Discuz_X3.4_SC_UTF8.zip
[root@server1 ~]# cd dir_SC_UTF8/
[root@server1 dir_SC_UTF8]# cp -r upload/ /usr/local/nginx/html/bbs
[root@server1 dir_SC_UTF8]# cd /usr/local/nginx/html/bbs/
[root@server1 bbs]# ls -lh
[root@server1 bbs]# chown -R root.nginx ./config/
[root@server1 bbs]# chown -R root.nginx ./data/
[root@server1 bbs]# chown -R root.nginx ./uc_client/
[root@server1 bbs]# chown -R root.nginx ./uc_server/
[root@server1 bbs]# chmod -R 777 ./config/
[root@server1 bbs]# chmod -R 777 ./data/
[root@server1 bbs]# chmod -R 777 ./uc_client/
[root@server1 bbs]# chmod -R 777 ./uc_server/
访问
http://20.0.0.13/bbs/install/index.php
设置安装目录仅自己可见
[root@server1 bbs]# mv install/ install.lock
[root@server1 bbs]# chmod 600 install.lock/
[root@server1 bbs]# ls -lh