Nginx網站服務與LNMP構建

weixin_50344843發表於2020-12-01

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

在這裡插入圖片描述

相關文章