目錄
一:基于授權的訪問控制
1:基于授權的訪問控制簡介
2:基于授權的訪問控制步驟
(1)使用htpasswd 生成用戶認證文件
(2)修改密碼文件權限為400,將所有者改為nginx,設置nginx的運行用戶能后讀取
(3)修改主配置文件nginx.conf 添加相應認證配置項
(4)檢測語法,重啟服務
(5)瀏覽器訪問檢測效果
二:基于客戶端的訪問控制
1:基于客戶端的訪問控制簡介
2:基于客戶端的訪問控制步驟
(1)修改主配置文件nginx.conf添加相應配置項
三:Nginx 虛擬主機
1:基于域名的虛擬主機
(1)設置客戶端域名解析
(2)準備各個網站的目錄和測試首頁
(3)修改配置文件
2:基于IP的虛擬主機
(1)為服務器設置多個IP地址
(2)修改nginx的配置文件,是基于IP的虛擬主機生效
3:基于端口的虛擬主機
(1)選擇系統總不使用的端口,多個端口映射到用以IP地址
(2)檢測端口是否運行正常
四:LNMP架構部署及應用
1:編譯安裝MySQL服務
(1)編譯安裝MySQL服務
(2)復制配置文件到/etc下,并把MySQL添加到服務
(3)初始化數據庫
(4)啟動MySQL,并設置密碼
2.安裝PHP解析環境
(1)編譯按鉆過PHP
(2)安裝后調整
(3)安裝ZendGuardLoader
3:配置nginx支持PHP環境
(1)啟用php-fpm進程
(2)配置nginx支持php解析
(3)php頁面訪問
一:基于授權的訪問控制
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.confServer{
????????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
<?php
phpinfo();?>
[root@localhost ~]# vim /var/www/html/test2.php
<?php
$link=mysqli_connect('127.0.0.1','root, pwd123');
if(Slink)echo"<h1>恭喜你,數據庫連接成功啦!!!</h1>";
mysqli_close($link);?>