文章目录
一、nginx概述
1.1 关于nginx
是一款高性能、轻量级Web服务软件
- 稳定性高
- 系统资源消耗低
- 对HTTP并发连接的处理能力高
单台物理服务器可支持30000-50000个并发请求
1.2 Nginx 工作原理
1.2.1 location
Nginx 本身做的工作实际很少,当它接到一个 HTTP 请求时, 它仅仅是通过查找配置文件将此次请求映射到一个 location block,而此 location 中所配 置的各个指令则会启动不同的模块去完成工作,因此模块可以看做 Nginx 真正的劳动工作者。
通常一个 location 中的指令会涉及一个 handler 模块和多个 filter 模块(当然,多个 location 可以复用同一个模块)。handler 模块负责处理请求,完成响应内容的生成,而 filter 模块对响应内容进行处理。 用户根据自己的需要所开发的模块都属于第三方模块。正是有了这么多模块的支撑, Nginx 的功能才会如此强大。
1.2.2 Nginx 的模块的结构
Nginx 的模块从结构上分为核心模块、基础模块和第三方模块:
- 核心模块:HTTP 模块、EVENT 模块和 MAIL 模块;
- 基础模块:HTTP Access 模块、HTTP FastCGI 模块、HTTP Proxy 模块和 HTTP Rewrite 模块;
- 第三方模块:HTTP Upstream Request Hash 模块、Notice 模块和 HTTP Access Key 模 块。
二、nginx的安装
2.1 软件包
2.2 安装命令
软件包的安装
tar zxvf nginx-1.12.2.tar.gz
yum -y install gcc gcc-c++ make pcre-devel zlib-devel
useradd -M -s /sbin/nologin nginx
cd nginx-1.12.2/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make && make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
制作管理脚本,实现systemctl命令来管理服务
vi /etc/init.d/nginx
#!/bin/bash
#chkconfig: 35 99 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|reload|restart}"
exit 1
esac
exit 0
chmod +x /etc/init.d/nginx
chkconfig --add nginx
chkconfig --list
配置文件的修改
ln -s /usr/local/nginx/conf/nginx.conf /etc/
vi /etc/nginx.conf
user nginx nginx;
worker_processes 4;
error_log logs/error.log info;
events {
use epoll;
worker_connections 4096;
}
http {
# 内部的#注释需要全部将#去掉
}
server {
charset utf-8;
access_log logs/aa.com.access.log main;
location ~ /status { # 需要添加的配置内容
stub_status on;
access_log off;
}
}
ulimit -n
ulimit -n 65535 >> /etc/rc.local
2.3 nginx网站搭建完成
通过ip/status 可以看到如下的字样,表示状态。
三、nginx虚拟主机的配置
3.1 基于域名
vi /etc/nginx.conf
在/location 模块改变一下配置
server_name www.ab.com;
root /var/www/ab;
并在合适的位置添加以下参数
server {
listen 80;
server_name www.ab.com
charset utf-8;
access_log logs/ab.com.access.log;
location / {
root /var/www/ab;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
vi /etc/hosts 添加域名解析
192.168.10.21 www.aa.com www.ab.com
重启nginx服务即可
3.2 基于ip地址
ifconfig ens33:1 192.168.20.21/32
vi /etc/nginx.conf
listen 192.168.10.21:80;
listen 192.168.20.21:80;
只需要将监听端口前面加上具体的ip地址即可
nginx -t
systemctl stop nginx.service
systemctl start nginx.service
curl http://192.168.10.21
curl http://192.168.20.21
重启nginx服务即可
3.3 基于端口号
在基于ip地址的前提下
vi /etc/nginx.conf
listen 192.168.10.21:80;
listen 192.168.20.21:8080;
将nginx服务重启即可
四、nginx验证功能
yum -y install httpd-tools
htpasswd -c /usr/local/nginx/passwd.db jack
chown nginx /usr/local/nginx/passwd.db
vi /etc/nginx.conf # 在/location 模块添加密文登录的配置命令
auth_basic "secret";
auth_basic_user_file /usr/local/nginx/passwd.db;
重启nginx服务即可正常的账号登录nginx网页
指定ip账号登录权限
vi /etc/nginx.conf # 在/location 模块添加密文登录的配置命令
deny 192.168.10.1/32;
allow all;
注意:与apache配置不同的是,nginx网页的接受或者拒绝是严格从上而下的,如果先是接受或者拒绝所有后,将不再执行下面的具体的ip地址的配置操作
重启nginx服务即可正常的账号登录nginx网页
五、mysql数据库的安装
5.1 数据库的安装
将软件包导入根目录下
yum -y install ncurses ncurses-devel bison cmake
useradd -s /sbin/nologin mysql
tar zxvf mysql-boost-5.7.20.tar.gz
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
make && make install
chown -R mysql.mysql /usr/local/mysql/
vi /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
socket = /usr/local/mysql/mysql.sock
pid-file = /usr/local/mysql/mysql.pid
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
chown mysql.mysql /etc/my.cnf
echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
echo 'export PATH' >> /etc/profile # /etc/profile 开机都会调用的初始化的配置文件
source /etc/profile
echo $PATH
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
systemctl daemon-reload # 启用守护进程
systemctl start mysqld.service # 启用mysql程序
netstat -anptu | grep mysqld
systemctl enable mysqld.service # 开机自启动
mysql免密登录验证结果
5.2 配置及优化FPM板块
cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf
cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.conf
vi php-fpm.conf
pid = run/php-fpm.pid # 将pid行#删除
/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
netstat -anpt | grep 9000
ln -s /usr/local/php/bin/* /usr/bin
vi /usr/local/nginx/conf/nginx.conf # 进入配置文件进行修改
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
5.3 php网页的配置
vi /usr/local/nginx/html/index.php
<?php
phpinfo();
?>
然后通过网页访问192.168.10.21/index.php即可访问到php主页。
5.4 mysql数据库管理
mysqladmin -uroot -p password '123456'
mysql -uroot -p123456
mysql> create database aaa;
mysql> grant all privileges on aaa.* to 'aaauser'@'%' identified by 'admin123';
mysql> grant all privileges on aaa.* to 'aaauser'@'localhost' identified by 'admin123';
mysql> flush privileges;
mysql> exit
vi /usr/local/nginx/html/index.php
<?php
$link=mysqli_connect('192.168.10.21','aaauser','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!";
?>
然后可以通过网页访问192.168.10.21/index.php来访问网页,会出现success的字样
5.5 论坛的搭建
论坛通过软件Discuz来实现,所以要导入并解压压缩包。
unzip Discuz_X3.4_SC_UTF8.zip
cd dir_SC_UTF8/
cp -r upload/ /usr/local/nginx/html/bbs
cd /usr/local/nginx/html/bbs/
chown -R root.nginx ./config/
chown -R root.nginx ./data/
chown -R root.nginx ./uc_client/
chown -R root.nginx ./uc_server/
chmod -R 777 ./config/
chmod -R 777 ./data/
chmod -R 777 ./uc_client/
chmod -R 777 ./uc_server/
通过网页访问192.168.10.21/bbs/install/index.php 访问安装论坛模块,注意表名与密码的设置要与数据库管理创建时的保持一致。
然后通过root登录即可进入管理论坛。