Nginx網站服務與LNMP構建
Nginx網站服務
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
相關文章
- Nginx網站服務LNMP搭建論壇Nginx網站LNMP
- 網站服務架構網站架構
- Docker構建服務之部署和備份Jekyll網站Docker網站
- 使用 Nginx 構建前端日誌統計服務Nginx前端
- 當前網站建設制勝之道:網站定位與服務網站
- windows+nginx+iis+redis+Task.MainForm構建分散式架構 之 (nginx+iis構建服務叢集)WindowsNginxRedisAIORM分散式架構
- 網站重構-後臺服務篇網站
- 讓你的網站脫穎而出:構建自己的Aleax查詢服務網站
- 構建Web API服務WebAPI
- spring cloud構建網際網路分散式微服務雲平臺-服務提供與呼叫SpringCloud分散式微服務
- Web網站服務(二)Web網站
- 構建應用層服務
- 使用 Make 構建網站網站
- nginx服務Nginx
- LNMP動態網站環境部署 + 初始化php-fpm + Nginx Location網頁LNMP網站PHPNginx網頁
- spring cloud構建網際網路分散式微服務雲平臺-服務註冊與發現SpringCloud分散式微服務
- 基於雲服務的個人網站架構設計網站架構
- 用Apache服務部署網站Apache網站
- spring boot構建restful服務Spring BootREST
- 用 Golang 構建 gRPC 服務GolangRPC
- swoole 服務的建構函式函式
- 負載均衡-構建CDN服務負載
- 用 Hystrix 構建高可用服務架構架構
- 構建Spring Boot應用的微服務服務監控與告警Spring Boot微服務
- 使用 Make 命令構建網站網站
- SpringCloud構建微服務架構-Hystrix服務降級SpringGCCloud微服務架構
- Nginx代理服務Nginx
- hyperf從零開始構建微服務(一)——構建服務提供者微服務
- hyperf從零開始構建微服務(二)——構建服務消費者微服務
- [LNMP]Nginx防盜鏈與訪問控制LNMPNginx
- GreatSQL 構建高效 HTAP 服務架構指南(MGR)SQL架構
- go基於grpc構建微服務框架-服務註冊與發現GoRPC微服務框架
- redis服務環境下mysql如何實現lnmp架構快取RedisMySqlLNMP架構快取
- Spring Cloud構建微服務架構—服務容錯保護(Hystrix服務降級)SpringCloud微服務架構
- 用 GIN 構建一個 WEB 服務Web
- 構建SpringCloud閘道器服務SpringGCCloud
- Spring Cloud構建微服務架構-服務閘道器SpringCloud微服務架構
- Spring Cloud構建微服務架構-Hystrix服務降級SpringCloud微服務架構