Nginx網站服務LNMP搭建論壇
Nginx網站服務LNMP搭建論壇
Nginx
一款高效能、輕量級Web服務軟體
穩定性高
系統資源消耗低
對HTTP併發連線的處理能力高,單臺物理伺服器可支援30000-50000個併發請求
Nginx模組
核心模組:HTTP模組、EVENT模組和MAIL模組
基礎模組:HTTP Access模組、HTTP FastCGI模組、HTTP Proxy模組和HTTP Rewrite模組
第三方模組:HTTP Upstream Request Hash模組、Notice模組和HTTP Access Key模組
Nginx+FastCGI執行原理
FastCGI介面方式採用C/S結構,可以將HTTP伺服器和指令碼解析伺服器分開,同時在指令碼解析伺服器上啟動一個或者多個指令碼解析守護程式。當HTTP伺服器每.次遇到動態程式時,可以將其直接交付給FastCGI程式來執行,然後將得到的結果返回給瀏覽器。這種方式可以讓HTTP伺服器專一地處理靜態請求或者將動態指令碼伺服器的結果返回給客戶端,這在很大程度上提高了整個應用系統的效能。
Nginx 不支援對外部程式的直接呼叫或者解析,所有的外部程式(包括 PHP)必須通過FastCGI 介面來呼叫。FastCGI 介面在 Linux 下是 socket(這個 socket 可以是檔案 socket, 也可以是 ip socket)。 wrapper 為了呼叫 CGI 程式,還需要一個 FastCGI 的 wrapper(wrapper 可以理解為用於啟動另一個程式的程式),這個 wrapper 繫結在某個固定 socket 上,如埠或者檔案 socket。當 Nginx 將 CGI 請求傳送給這個 socket 的時候,通過 FastCGI 介面,wrapper 接收到請求,然後 Fork(派生)出一個新的執行緒,這個執行緒呼叫直譯器或者外部程式處理指令碼並讀取返回資料;接著 wrapper 再將返回的資料通過 FastCGI 介面,沿著固定的 socket傳遞給 Nginx;最後 Nginx 將返回的資料(html 頁面或者圖片)傳送給客戶端。
Nginx部署過程
首先安裝依賴包準備生產環境
yum -y install \
gcc \
gcc-c++ \
make \
pcre-devel \
zlib-devel
useradd -M -s /sbin/nologin nginx ##新增nginx使用者
tar zxvf nginx-1.12.2.tar.gz
cd nginx-1.12.2/
./configure \
--prefix=/usr/local/nginx \ #指定安裝目錄
--user=nginx \ #指定程式使用者
--group=nginx \ #指定程式屬組
--with-http_stub_status_module #將狀態模組啟用
make && make install ##編譯安裝
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin
nginx -t ##配置檔案語法檢查
nginx ##啟動服務
netstat -anpt | grep nginx
vi /etc/init.d/nginx ##建立可執行指令碼
#!/bin/bash
# chkconfig: 35 90 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)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDF)
;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
exit 0
chmod +x /etc/init.d/nginx
chkconfig --add nginx
修改配置檔案
vi /usr/local/nginx/conf/nginx.conf
user nginx nginx; #程式使用者
worker_processes 4; #程式號
error_log logs/error.log info; #開啟記錄錯誤日誌
pid logs/nginx.pid; #開啟程式指定程式檔案
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
##定義訪問日誌格式
access_log logs/access.log main;
##開啟記錄全域性訪問日誌(可不開,單獨開啟主機訪問日誌也可)
server {
charset utf-8; #主機設定開啟支援utf-8編碼
access_log logs/host.access.log main; #開啟主機訪問日誌
}
}
設定高併發可用
vi /usr/local/nginx/conf/nginx.conf
events{
use epoll; #開啟高併發
worker_connections 4096; #表示1個工作程式允許4096個連線,即高併發連線數
}
ulimit -n #檢視系統本地允許併發資源數
ulimit -n 65535 >> /etc/rc.local #修改系統本地允許併發資源數
配置統計功能
vi /usr/local/nginx/conf/nginx.conf
##在server模組裡的error_page上面增加
location ~ /status {
stub_status on;
access_log off;
}
配置驗證功能
yum -y install httpd-tools
htpasswd -c /usr/local/nginx/passwd.db zjj 生成驗證檔案
互動輸入密碼
chmod 400 /usr/local/nginx/passwd.db
chown nginx /usr/local/nginx/passwd.db
vi /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
}
限制訪問
按序匹配,匹配到不再繼續往下匹配。
vi /usr/local/nginx/conf/nginx.conf
location / {
root html;
index index.html index.htm;
deny 192.168.10.1;
allow all;
auth_basic "secret";
auth_basic_user_file /usr/local/nginx/passwd.db
}
Nginx虛擬主機
基於域名
vi /usr/local/nginx/conf/nginx.conf
server {
listen 80;
server_name www.ab.com;
charset utf-8;
access_log logs/ab.access.log main;
location / {
root /var/www/ab;
index index.html index.htm;
error_page 500 502 503 504 /50x.html;
}
location = /50x.html {
root html;
}
}
nginx -t
systemctl stop nginx
systemctl start nginx
建立網頁檔案
[root@server1 ~]# mkdir -p /var/www/aa
[root@server1 ~]# mkdir -p /var/www/ab
[root@server1 ~]# echo "<h1>this is aa.</h1>" > /var/www/aa/index.html
[root@server1 ~]# echo "<h1>this is ab.</h1>" > /var/www/ab/index.html
[root@server1 ~]# vi /etc/hosts
新增
192.168.10.13 www.aa.com www.ab.com
驗證結果
基於IP
ifconfig ens33:1 192.168.99.99/24 ##建立虛擬網路卡
vi /usr/local/nginx/conf/nginx.conf
server {
listen 192.168.99.99:80;
server_name www.ab.com;
charset utf-8;
.......
}
nginx -t
systemctl stop nginx
systemctl start nginx
netstat -anpt | grep nginx
基於埠
vi /etc/nginx.conf
server {
listen 192.168.99.99:8080;
server_name www.ab.com;
charset utf-8;
.......
}
nginx -t
systemctl stop nginx
systemctl start nginx
netstat -anpt | grep nginx
安裝MySQL
參考《構建LAMP架構》
安裝PHP
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 :安全通訊
tar jvxf php-7.1.10.tar.bz2
cd php-7.1.10/
./configure \
--prefix=/usr/local/php \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--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-gd : 影像處理
--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檔案支援
make && make install ##編譯安裝
cd php-7.1.10/
php-7.1.10]# ls -lh
cp php.ini-development /usr/local/php/lib/php.ini
vi /usr/local/php/lib/php.ini
新增
mysqli.default_socket = /usr/local/mysql/mysql.sock
date.timezone = Asia/Shanghai
/usr/local/php/bin/php -m | wc -l
配置及優化FPM模組
cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf
cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.conf
cd /usr/local/php/etc/
vi php-fpm.conf #手動新增開啟fpm程式
pid = run/php-fpm.pid
/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
netstat -anpt | grep 9000 #確認fpm開啟,埠號為9000
ln -s /usr/local/php/bin/* /usr/local/bin/
ps aux | grep -c "php-fpm"
vi /usr/local/nginx/conf/nginx.conf
##在server模組裡開啟php主頁
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
nginx -t
systemctl stop nginx
systemctl start nginx
建立php主頁進行驗證
vi /usr/local/nginx/html/index.php
<?php
phpinfo();
?>
在瀏覽器上訪問http://192.168.10.13/index.php
測試php能否呼叫mysql
登入MySQL進行配置
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 ('192.168.10.13','bbsuser','admin123');
if($link) echo "<h1>Success!</h1>";
else echo "Fail!!";
?>
瀏覽器訪問http://192.168.10.13/index.php
即呼叫成功
搭建Discuz社群論壇
unzip Discuz_X3.4_SC_UTF8.zip ##解壓軟體包
cd dir_SC_UTF8/
cp -r upload/ /usr/local/nginx/html/bbs
chown -R root:nginx ./config/
chown -R root:nginx ./data/
chown -R root:nginx ./uc_client/
chown -R root:nginx ./uc_server/
chown -R 777 ./config/
chown -R 777 ./data/
chown -R 777 ./uc_client/
chown -R 777 ./uc_server/
瀏覽器開啟http://192.168.10.13/index.php進行安裝
將目錄設為僅自己可見
cd /usr/local/nginx/html/bbs/
mv install/ install.lock
chmod 600 install.lock/
相關文章
- Nginx網站服務與LNMP構建Nginx網站LNMP
- CentOS7下LNMP環境搭建Discuz論壇CentOSLNMP
- 網站論壇:火龍論壇 正式成立網站
- 使用 Nginx 搭建 Webdav 服務NginxWeb
- “2017網際網路+政務服務論壇”在廣州舉行
- LNMP環境搭建(二):NginxLNMPNginx
- LNMP環境搭建——Nginx篇LNMPNginx
- LNMP網站框架搭建(編譯安裝)LNMP網站框架編譯
- <摘錄>linux論壇網站Linux網站
- RHEL 8 搭建 Nginx Web 服務NginxWeb
- 基於Nginx搭建WebDAV服務NginxWeb
- 在nginx上搭建php服務NginxPHP
- Discuz!論壇搭建
- 在LNMP環境下搭建Discuz論壇,開啟https,全站綠鎖LNMPHTTP
- 搭建 lnmp 環境之 nginx 篇LNMPNginx
- 華納雲:使用輕量伺服器搭建論壇網站怎麼樣?伺服器網站
- 容器服務ACK+容器網路檔案系統CNFS快速搭建NGINX網站(體驗有禮)NFSNginx網站
- 物流服務網站搭建,從定製到開發一體化服務網站
- “遊戲基地論壇”等網站被掛馬遊戲網站
- docsify + Gitee Pages服務搭建開源專案網站Gitee網站
- 如何利用LNMP環境安裝SMF論壇程式LNMP
- Nginx + Lua 搭建網站WAF防火牆Nginx網站防火牆
- SpringBBS論壇搭建Spring
- 學習自己搭建論壇
- LNMP環境VPS搭建織夢DEDECMS網站教程LNMP網站
- 阿里雲提供哪些建站服務,如何搭建公司網站?阿里網站
- Docker 搭建多容器組合服務 (nginx + PHP)DockerNginxPHP
- centos7 搭建 nginx web服務 反代理CentOSNginxWeb
- Mac 下搭建Nginx HTTP/2的服務端MacNginxHTTP服務端
- 13、nginx服務叢集搭建以及優化Nginx優化
- Windows下Nginx+Web.py+FastCGI服務搭建WindowsNginxWebAST
- Web網站服務(二)Web網站
- 網站服務架構網站架構
- php E58論壇_有哪些比較不錯的論壇原始碼的網站?PHP原始碼網站
- Nginx 實踐案例(原始碼編譯安裝方式):利用LNMP搭建wordpress站點Nginx原始碼編譯LNMP
- nginx服務Nginx
- LNMP動態網站環境部署 + 初始化php-fpm + Nginx Location網頁LNMP網站PHPNginx網頁
- 用Apache服務部署網站Apache網站