目录
[(1)使用htpasswd 生成用户认证文件](#(1)使用htpasswd 生成用户认证文件)
(2)修改密码文件权限为400,将所有者改为nginx,设置nginx的运行用户能后读取
[(3)修改主配置文件nginx.conf 添加相应认证配置项](#(3)修改主配置文件nginx.conf 添加相应认证配置项)
[三:Nginx 虚拟主机](#三:Nginx 虚拟主机)
一:基于授权的访问控制
1:基于授权的访问控制简介
Nginx与Apahce一样,可以实现基于用户授权的访问控制,当客户端想要访问相应网站或者目录时,要求用户输入用户名和密码才能正常访问,配置步骤与Apache基本一致。
概括为以下几个步骤。
>生成用户密码认证文件。
>修改主配置文件相对应目录,添加认证配置项。
>重启服务,访问测试。
2:基于授权的访问控制步骤
(1)使用htpasswd 生成用户认证文件
使用htpasswd生成用户认证文件,如果没有该命令,可使用yum安装httpd-tools软件包,用法与Apache认证时方式相同,女: htpasswd -c/usr/local/nginx/passwd.db test. 在/usr/local/nginx/目录下生成了passwd.db文件,用户名是test,密码输入2次。在passwd.db中生成用户和密码的密文。
root@localhost \~\]# yum -y install httpd-tools \[root@localhost \~\]# htpasswd -c /usr/local/nginx/passswd.db test \[root@localhost \~\]# cat /usr/local/nginx/passwd.db
(2)修改密码文件权限为400,将所有者改为nginx,设置nginx的运行用户能后读取
root@localhost \~\]# chmod 400 /usr/local/nginx/passwddb \[root@localhost \~\]# chown nginx /usr/local/nginx/passswd.db \[root@localhost \~\]# ll -d /usr/local/nginx/passwodb
(3)修改主配置文件nginx.conf 添加相应认证配置项
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
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 \[root@localhost \~\]# systemctl restart nginx
(5)浏览器访问检测效果

二:基于客户端的访问控制
1:基于客户端的访问控制简介
基于客户端的访问控制是通过客户端IP地址,决定是否允许许对页面访问。Nginx于客户端的访问控制要比Apache简单,规则如下:
>denyIP/IP段:拒绝某个IP段的客户端访问。
>allowIP/IP段:允许某个IP段的客户端访问。
>规则从上往下执行,如匹配则停止,不再往下匹配。
2:基于客户端的访问控制步骤
(1)修改主配置文件nginx.conf添加相应配置项
location / {
root html;
indexindex.html index.htm;
auth_basic "secret";
auth_basic_user_file /usr/local/nginx/passwd.db;
deny 192.168.10.3;
allow all;
}
三:Nginx 虚拟主机
利用虚拟主机,不用为每个要运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程,虚拟主机提供了在同一台服务器,同一组Ngiinx 进程上运行多个网站的功能。跟Apache一样,Nginx也可以配置多种类型的虚拟主机,分别是基于IP的虚拟主机、基于域名的虚拟主机、基于端口的虚拟主机。
使用Nginx搭建虚拟主机服务器时,每个虚拟Web站点拥有独立的"server{}"配置段,各自监听的IP地址、端口号可以单独指定,当然网站名和你也是不同的
1:基于域名的虚拟主机
(1)设置客户端域名解析
修改hosts文件,加入www.benet.com和ww.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 \~\]# echo "www.benet.com"\>\>/var/www/html/beenet/index.html \[root@localhost \~\]# echo "www.accp.com"\>\>/var/www/htrml/accp/index.html
(3)修改配置文件
server {
listen 80;
server_name www.benet.com;
access_log logs/www.benet.com.access.log;charset utf-8;
location / {
root /var/www/html/benet;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = 50x.html
root html;
}
}
server {
listen 80;
server_name www.accp.com;
access_log logs/www.accp.com.access.log;charset utf-8;
location / {
root /var/www/html/accp;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = 50x.html {
root html;
}
}
root@localhost \~\]# nginx -t \[root@localhost \~\]# systemctl restart nginx 访问测试
2:基于IP的虚拟主机
(1)为服务器设置多个IP地址
root@localhost \~\]# cd /etc/sysconfig/network-scripts \[root@localhost network-scripts\]# cp ifcfg-ens33 iifcfg-ens 33:0 \[root@localhost network-scripts\]# cp ifcfg-ens33 iifcfg-ens 33:1 \[root@localhost network-scripts\]# vim ifcfg-ens33:0 \[root@localhost network-scripts\]# vim ifcfg-eens33:1 \[root@localhost network-scripts\]# nmcli c reload \[root@localhost network-scripts\]# nmcli c up ens33 \[root@localhost network-scripts\]# ip add
(2)修改nginx的配置文件,是基于IP的虚拟主机生效
root@localhost \~\]# vim /usr/local/nginx/conf/nginx.conf server { listen 192.168.10.151:80; .............. server { listen 192.168.10.152:80; ............ \[root@localhost \~\]# systemctl restart nginx 访问测试
3:基于端口的虚拟主机
(1)选择系统总不使用的端口,多个端口映射到用以IP地址
root@localhost \~\]# vim /usr/local/nginx/conf/nginx.conf server { listen 192.168.10.101:8080; ............. server { listen 192.168.10.101:8080; ................ \[root@localhost \~\]# systemctl restart nginx
(2)检测端口是否运行正常
root@localhost \~\]# netstat -anpt \| grep nginx 分别访问两个端口地址
四:LNMP架构部署及应用
1:编译安装MySQL服务
(1)编译安装MySQL服务
root@www \~\]# yum install -y autoconf
备注:
Autoconf是一个用于生成可以自动地配置软件源代码包以认适应多种Unix类系统的shell脚本的工具。
root@localhost \~\]# yum -y install ncurses-devel gcc-c++ perl-Modulee-Install cmake \[root@localhost \~\]# tar -zxvf mysql-5.6.36.tar.gz \[root@localhost \~\]# cd mysql-5.6.36/ \[root@localhost mysql-5.6.36\]# cmake 、 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \\ -DDEFAULT CHARSET=utf8 、 -DDEFAULT_COLLATION=utf8_general_ci \\ -DWITH_EXTRA_CHARSETS=all \\ -DSYSCONFDIR=/etc \[root@localhost mysql-5.6.36\]# make \&\& make install
(2)复制配置文件到/etc下,并把MySQL添加到服务
root@localhost mysql-5.6.36\]# cp support-files/my-default.cnf/etcmy.cnf \[root@localhost mysql-5.6.36\]# cp support-files/mysql.server /etc/init.d/mysqld \[root@localhost mysql-5.6.36\]# chmod +x /etc/rc.d/init.d/mysqld \[root@localhost mysql-5.6.36\]# chkconfig --add mysqld \[root@localhost mysql-5.6.36\]# chkconfig mysqld on \[root@localhost mysql-5.6.36\]# echo "PATH=$PATH:/usr/locaal/mysql/bin"\>\> /etc/profile \[root@localhost mysql-5.6.36\]# . letc/profile
(3)初始化数据库
root@localhost \~\]# groupadd mysql \[root@localhost \~\]# useradd -M -s /sbin/nologin mysql -g mysql \[root@localhost \~\]# chown -R mysql.mysql /usr/local/mysql \[root@localhost \~\]# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
(4)启动MySQL,并设置密码
root@localhost \~\]# systemctl start mysqld \[root@localhost \~\]# mysqladmin -u root password 'pwd123'
2.安装PHP解析环境
(1)编译按钻过PHP
root@localhost \~\]# yum -y install gd libxml2-devel libjpeg-devel libpng-devel 备注: \>libxml2-devel:libxml是一个用来解析XML文档的函数库 \>libjpeg-devel #是一个完全用C语言编写的库,包含了被广泛使用的JPEG解码、JPEG编码和其他的JPEG功能的实现 \>libpng-devel #libpng是一套免费的、公开源代码的程序库,支持对PNG图形文件的创建、读写等操作 \>GD指的是Graphic Device,PHP的GD库是用来处理图形的扩展库,通过GD库提供的一系列API,可以对图像进行处理或者直接生成新的图片。PHP除了能进行文本处理以外,通过GD库,可以对JPG、PNG、GIF、SWF等图片进行处理 \>Zlib是一个压缩和解压模块zlib-devel \[root@localhost \~\]#tar -zxvf php-5.38.tar.gz
(2)安装后调整
root@localhost php-5.38\]# cp php.ini-development/usr/loccal/php5/php.ini \[root@localhost php-5.5.38\]# In -s /usr/local/php5/bin/\* /usr/local/biin/ \[root@localhost php-5.5.38\]# In -s /usr/local/php5/sbin/\*/usr/local/sbin/
(3)安装ZendGuardLoader
root@localhost \~\]# tar -zxvf zend-loader-php5.5-linux-x86_64_update1.tar.gz \[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 添加下列内容: 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\]# cp php-fpm.conf.default php-fpm.coonf \[root@localhost etc\]# useradd -M -s /sbin/nologin php \[root@localhost etc\]# vim php-fpm.conf pid = run/php-fpm.pid user = php group = php pm.max_children = 50 ##最多子进程数 pm.start_servers = 20 ##启动时开启的进程数 pm.min_spare_servers = 5 ##最少空闲进程数 pm.max_spare_servers=35 ##最多空闲进程数 \[root@localhost etc\]# /usr/local/sbin/php-fpm \[root@localhost etc\]# netstat -anpt \| grep php-fpm \[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.pid
ExecStart=/usr/local/php5/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php5/etc/php-fpm.con
ExecReload=/bin/kill -USR2 $MAINPID
Private Tmp=true
Install
WantedBy=multi-user.target
root@localhost \~\]# systemctl daemon-reload \[root@localhost \~\]# systemctl start php-fpm
(2)配置nginx支持php解析
调用本机的php-fpm进程
root@localhost \~\]# vim /usr/local/nginx/conf/nginx.conf Server{ listen 80; server_name www.bt.com; 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 \~\]# mkdir-p/var/www/html/ \[root@localhost \~\]# vim /var/www/html/test1.php \ \[root@localhost \~\]# vim /var/www/html/test2.php \恭喜你,数据库连接成功啦!!!\"; mysqli_close($link); ?\>