目录
一、基于授权的访问控制
(1)使用htpasswd 生成用户认证文件
(2)修改密码文件权限为400,将所有者改为nginx ,设置 Nginx 的运行用户能够读取
(3)修改主配置文件 nginx.conf,添加相应配置项
(4)检测语法、、重启服务
(5)用浏览器访问网址,检验控制效果
二、基于客户端的访问控制
三、Nginx虚拟主机
1、基于域名的虚拟主机
(1)设置客户端域名解析
(2)准备各个网站的目录和测试首页
(3)修改配置文件
(4)测试
2、基于 IP 的虚拟主机
(1)为服务器设置多个 IP地址
(2)修改Nginx 的配置文件,使基于IP的虚拟主机生效
(3)访问两个IP网站,测试页面是否生效
3、基于端口的虚拟主机
(1)选择系统中不使用的端口,多个端口映射到同一个 IP 地址
(2)检测端口是否运行正常
(3)分别访问2 个端口地址
四、LNMP 架构部署及应用
1、安装mysql
(1)使用dnf 安装
(2)设置密码并测试
2、安装 PHP 解析环境
(1)编译安装PHP
(2)安装后调整
(3)安装 ZendGuardLoader
3、配置 Nginx 支持PHP 环境
(1)启用 php-fpm进程
(2)配置Gginx 支持PHP 解析
(3)PHP页面访问测试
4、在LNMP 平台中部署Web应用
(1)下载并部署程序代码
(2)创建数据库
3、安装 Web应用
一、基于授权的访问控制
(1)使用htpasswd 生成用户认证文件
使用 htpasswd 生成用户认证文件,如果没有该命令,可使用yum安装httpd-tools 软件包。在/usr/local/nginx/日录下生成了 passwd.db文件,用户名是 zhangsan,密码aptech,输入 2 次。在 passwd.db 中生成用户和密码的密文。
[root@localhost ~]# yum -y install httpd-tools
[root@localhost ~]# htpasswd -c /usr/local/nginx/passwd.db zhangsan
New password:
Re-type new password:
Adding password for user zhangsan
(2)修改密码文件权限为400,将所有者改为nginx ,设置 Nginx 的运行用户能够读取
[root@localhost ~]# chmod 400 /usr/local/nginx/passwd.db
[root@localhost ~]# chown nginx /usr/local/nginx/passwd.db
(3)修改主配置文件 nginx.conf,添加相应配置项
vim /usr/local/nginx/conf/nginx.conf
location / {root html;index index.html index.htm;auth_basic "secret";auth_basic_user_file /usr/local/nginx/passwd.db;}
(4)检测语法、、重启服务
[root@localhost ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost ~]# systemctl restart nginx
(5)用浏览器访问网址,检验控制效果
二、基于客户端的访问控制
基于客户端的访问控制是通过客户端IP地址,决定是否允许对页面访问。规则如下:
deny IP/IP 段:拒绝某个|P或 IP 段的客户端访问。
allow IP/IP 段:允许某个|P或IP 段的客户端访问。
规则从上往下执行,如匹配则停止,不再往下匹配。
修改主配置文件 nginx.conf,添加相应配置项
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conflocation / {root html;index index.html index.htm;# auth_basic "secret";#auth_basic_user_file /usr/local/nginx/passwd.db;deny 192.168.10.102;allow all;}
三、Nginx虚拟主机
利用虚拟主机,不用为每个要运行的网站提供一台单独的 Nginx 服务器或单独运行组 Nginx 进程,虚拟主机提供了在同一台服务器,同一组 Nginx 进程上运行多个网站的功能。Nginx 可以配置多种类型的虚拟主机,分别是基于 IP 的虚拟主机、基于域名的虚拟主机、基于端口的虚拟主机。
使用 Nginx 搭建虚拟主机服务器时,每个虚拟 web 站点拥有独立的“server{}”配置段,各自监听的 IP 地址、端口号可以单独指定,当然网站名称也是不同的。
1、基于域名的虚拟主机
(1)设置客户端域名解析
修改hosts文件,加入www.benet.com和www.accp.com 这两个域名。
192.168.10.101 www.benet.com
192.168.10.101 www.accp.com
(2)准备各个网站的目录和测试首页
[root@localhost ~]# mkdir -p /var/www/html/benet
[root@localhost ~]# mkdir -p /var/www/html/accp
[root@localhost ~]# vim /var/www/html/benet/index.html
benet
[root@localhost ~]# vim /var/www/html/accp/index.html
accp
(3)修改配置文件
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.confserver {listen 80;server_name www.benet.com;access_log logs/www.benet.com.access.log;server_name localhost;charset utf-8;#access_log logs/host.access.log main;location / {root /var/www/html/benet;index index.html index.htm;}}server {listen 80;# listen somename:8080;server_name www.accp.com;access_log logs/www.accp.com.access.log;location / {root /var/www/html/accp;index index.html index.htm;}}
[root@localhost ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost ~]# systemctl restart nginx
(4)测试
2、基于 IP 的虚拟主机
台主机如果有多个 IP地址,可以设置每一个 IP 对应一个站点。主机安装多个网卡可以有多个 IP,这里采用虚拟 IP 的方式使主机有多个 IP。
(1)为服务器设置多个 IP地址
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls
ifcfg-ens160
[root@localhost network-scripts]# cp ifcfg-ens160 ifcfg-ens160:0
[root@localhost network-scripts]# cp ifcfg-ens160 ifcfg-ens160:1
[root@localhost network-scripts]# vim ifcfg-ens160:0
NAME=ens160:0
DEVICE=ens160:0
IPADDR=192.168.10.100
[root@localhost network-scripts]# vim ifcfg-ens160:1
NAME=ens160:1
DEVICE=ens160:1
IPADDR=192.168.10.200
[root@localhost network-scripts]# nmcli c reload
[root@localhost network-scripts]# nmcli c up ens160
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/3)
[root@localhost network-scripts]# ifconfig
ens160:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.10.100 netmask 255.255.255.0 broadcast 192.168.10.255ether 00:0c:29:18:3b:14 txqueuelen 1000 (Ethernet)ens160:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.10.200 netmask 255.255.255.0 broadcast 192.168.10.255ether 00:0c:29:18:3b:14 txqueuelen 1000 (Ethernet)
(2)修改Nginx 的配置文件,使基于IP的虚拟主机生效
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.confserver {listen 192.168.10.100:80;server_name www.benet.com;……}server {listen 192.168.10.200:80;server_name www.accp.com; ……}
[root@localhost ~]# systemctl restart nginx
(3)访问两个IP网站,测试页面是否生效
3、基于端口的虚拟主机
(1)选择系统中不使用的端口,多个端口映射到同一个 IP 地址
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.confserver {listen 192.168.10.101:8080;server_name www.benet.com;……}server {listen 192.168.10.101:8888;server_name www.accp.com; ……}
[root@localhost ~]# systemctl restart nginx
(2)检测端口是否运行正常
[root@localhost ~]# netstat -anpt | grep nginx
tcp 0 0 192.168.10.101:8888 0.0.0.0:* LISTEN 1848/nginx: master
tcp 0 0 192.168.10.101:8080 0.0.0.0:* LISTEN 1848/nginx: master
(3)分别访问2 个端口地址
四、LNMP 架构部署及应用
1、安装mysql
(1)使用dnf 安装
[root@localhost ~]# dnf -y install mariadb-server
[root@localhost ~]# systemctl start mariadb
(2)设置密码并测试
[root@localhost ~]# mysqladmin -uroot password 'pwd123'
[root@localhost ~]# mysql -uroot -ppwd123
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 10.5.28-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]> exit
Bye
2、安装 PHP 解析环境
(1)编译安装PHP
[root@localhost ~]# dnf -y install gd libxml2-devel libjpeg-devel libpng-devel
- libxm12-devel:libxml 是一个用来解析 XML 文档的函数库
- libjpeg-devel #是一个完全用C语言编写的库,包含了被广泛使用的 JPEG 解码、JPEG 编码和其他的 JPEG 功能的实现#
- libpng 是一套免费的、公开源代码的程序库,支持对 PNG 图形libpng-devel文件的创建、读写等操作
- GD 指的是 Graphic Device,PHP 的 GD 库是用来处理图形的扩展库,通过 GD 库提供的一系列 API,可以对图像进行处理或者直接生成新的图片。PHP 除了能进行文本处理以外,通过 GD 库,可以对 JPG、PNG、GIF、SWF 等图片进行处理
- zlib-devel #zlib 是一个压缩和解压模块
[root@localhost ~]# tar zxvf php-5.5.38.tar.g
[root@localhost ~]# ls
anaconda-ks.cfg nginx-1.28.0 nginx-1.28.0.tar.gz php-5.5.38 php-5.5.38.tar.gz
mysql用dnf装的:
[root@localhost ~]# cd php-5.5.38
[root@localhost php-5.5.38]# ./configure --prefix=/usr/local/php5 --with-gd --with-zlib --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-config-file-path=/usr/local/php5 --enable-mbstring --enable-fpm --with-jpeg-dir=/usr/lib
注:
- --with-mysqli=mysqlnd 需要用 ip 地址的方式连接数据库,既可以是 php 和 mysql 装在同一个服务器,也可以装在不同的服务器。用127.0.0.1本地连接不需要为连接授权,用192.168.10.101 连接需要授权,哪怕连接本地数据库。
- --with-mysqli=/usr/bin/mysql_config 需要用 localhost 连接数据库,只能用于本地连接,也就是 php 和 mysql 装在同一个服务器上
[root@localhost php-5.5.38]# make && make install
(2)安装后调整
[root@localhost php-5.5.38]# cp php.ini-development /usr/local/php5/php.ini
[root@localhost php-5.5.38]# ln -s /usr/local/php5/bin/* /usr/local/bin/
[root@localhost php-5.5.38]# ln -s /usr/local/php5/sbin/* /usr/local/sbin/
(3)安装 ZendGuardLoader
[root@localhost ~]# tar zxvf zend-loader-php5.5-linux-x86_64_update1.tar.gz
zend-loader-php5.5-linux-x86_64/
zend-loader-php5.5-linux-x86_64/ZendGuardLoader.so
zend-loader-php5.5-linux-x86_64/opcache.so
zend-loader-php5.5-linux-x86_64/README.txt
[root@localhost ~]# cd zend-loader-php5.5-linux-x86_64
[root@localhost zend-loader-php5.5-linux-x86_64]# cp ZendGuardLoader.so /usr/local/php5/lib/php/
[root@localhost zend-loader-php5.5-linux-x86_64]# vim /usr/local/php5/php.ini
[PHP]
zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so #添加到第二行
zend_loader.enable=1
3、配置 Nginx 支持PHP 环境
(1)启用 php-fpm进程
[root@localhost ~]# cd /usr/local/php5/etc/
[root@localhost etc]#
[root@localhost etc]# cp php-fpm.conf.default php-fpm.conf
[root@localhost etc]# useradd -M -s /sbin/nologin php
[root@localhost etc]# vim php-fpm.conf
pid=run/php-fpm.pid #25
user=php #149
group=php
pm.max_children=50 #230,最多子进程数
pm.start_servers=20 #235,启动时开启的进程数
pm.min_spare_servers=5 #240,最少空闲进程数
pm.max_spare_servers=35 #245,最多空闲进程数
[root@localhost etc]# /usr/local/sbin/php-fpm
[root@localhost etc]# netstat -anpt | grep php-fpm
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 113731/php-fpm: mas
[root@localhost ~]# vim /lib/systemd/system/php-fpm.service
[Unit]
Description=The PHP FastCGI Process Manager
After=network.target
[Service]
Type=simple
PIDFile=/usr/local/php5/php-fpm.pip
ExecStart=/usr/local/php5/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php5/etc/php-fpm.
con
ExecReload=/bin/kill -USR2 $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
(2)配置Gginx 支持PHP 解析
调用本机的 php-fpm进程
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.confserver {listen 80;server_name www..benet.com;charset utf-8;#access_log logs/host.access.log main;location / {root /var/www/html;index index.html index.htm index.php;}location ~ \.php$ {root /var/www/html;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;include fastcgi.conf;}}
(3)PHP页面访问测试
[root@localhost ~]# systemctl restart nginx
[root@localhost ~]# systemctl restart php-fpm
[root@localhost ~]# mkdir -p /var/www/html/
[root@localhost ~]# vim /var/www/html/test1.php
<?php
phpinfo();
?>
[root@localhost ~]# vim /var/www/html/test2.php
<?php
$link=mysqli_connect('127.0.0.1','root','pwd123');
if($link) echo "<h1>恭喜你,数据库连接成功啦!!!</h1>";
mysqli_close($link);
?>
4、在LNMP 平台中部署Web应用
(1)下载并部署程序代码
[root@localhost ~]# dnf -y install unzip
[root@localhost ~]# unzip Discuz_X3.3_SC_UTF8.zip
[root@localhost ~]# mkdir -p /var/www/html/bbs
[root@localhost ~]# mv upload/* /var/www/html/bbs
[root@localhost ~]# chown -R php:php /var/www/html/bbs/
(2)创建数据库
[root@localhost ~]# mysql -uroot -ppwd123
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.5.28-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]> create database bbs;
Query OK, 1 row affected (0.001 sec)MariaDB [(none)]> grant all on bbs.* to runbbs@127.0.0.1 identified by 'pwd123';
Query OK, 0 rows affected (0.002 sec)MariaDB [(none)]> grant all on bbs.* to runbbs@'localhost' identified by 'pwd123';
Query OK, 0 rows affected (0.001 sec)
3、安装 Web应用
访问服务器 URL 地址,对网站进行初始化
http://192.168.10.101/bbs/install/index.php