Linux系統(tǒng)環(huán)境WEB發(fā)布網(wǎng)站的建設(shè)
韓維營(yíng)(沈陽(yáng)日?qǐng)?bào)社)
摘要:本文介紹了CentOS系統(tǒng)WEB發(fā)布環(huán)境的組成、nginx、PHP-fpm、Tomcat、Mariadb等軟件安裝、詳細(xì)闡述了主要配置參數(shù)含義及相應(yīng)的特別注意事項(xiàng),給出驗(yàn)證辦法。
關(guān)鍵詞:網(wǎng)頁(yè) 靜態(tài)網(wǎng)頁(yè) 動(dòng)態(tài)網(wǎng)頁(yè) 發(fā)布引擎 數(shù)據(jù)庫(kù) 反向代理Java nginx PHP-fpm Mariadb Tomcat
多數(shù)網(wǎng)站都是基于微軟的windows系列軟件建立的,由于使用的是封閉的商業(yè)化軟件,配置相對(duì)簡(jiǎn)單。近年來(lái),免費(fèi)開源Linux系統(tǒng)不斷成熟完善,Linux服務(wù)器系統(tǒng)開始在網(wǎng)站發(fā)布應(yīng)用上走紅,大有取代其它系統(tǒng)之勢(shì)。下面以CentOS8.2為例說(shuō)明如何實(shí)現(xiàn)。
CentOS8.2是基于Fedora 28和Linux Kernal 4.18的最新發(fā)行版,WEB發(fā)布平臺(tái)通常是由發(fā)布引擎、存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)庫(kù)、網(wǎng)頁(yè)處理器、發(fā)布軟件四部分組成,其中發(fā)布軟件是針對(duì)發(fā)布平臺(tái)要完成的功能特別專門編制的軟件,因發(fā)布平臺(tái)不同而不同,其余三個(gè)部分是必不可少的通用的獨(dú)立工具,這三部分構(gòu)成重要的WEB發(fā)布環(huán)境,離開合適WEB發(fā)布環(huán)境,發(fā)布軟件是無(wú)法運(yùn)行的。
WEB發(fā)布網(wǎng)頁(yè)有靜態(tài)網(wǎng)頁(yè)和動(dòng)態(tài)網(wǎng)頁(yè)兩種,靜態(tài)網(wǎng)頁(yè)是指web頁(yè)面中供人們?yōu)g覽的欄目選項(xiàng)始終是不變的,每個(gè)網(wǎng)頁(yè)都是一個(gè)獨(dú)立的文件,網(wǎng)頁(yè)文件以.htm、html 、.shtml 、.xml 等后綴形式表示;而動(dòng)態(tài)網(wǎng)頁(yè)是指web頁(yè)面中供人們?yōu)g覽的欄目是由程序產(chǎn)生的,不同人不同時(shí)間點(diǎn)訪問web頁(yè)面看到的內(nèi)容各不相同,網(wǎng)頁(yè)文件以.asp 、.jsp 、.php 、.perl 、.cgi 等形式后綴表示。
Centos8的WEB發(fā)布引擎有Apache、tomcat、PHP和Nginx四種,tomcat是基于Java側(cè)重動(dòng)態(tài)WEB解析的http服務(wù)器,可單獨(dú)運(yùn)行。PHP是“超文本預(yù)處理器”,屬服務(wù)器端執(zhí)行的腳本語(yǔ)言,多用于處理PHP語(yǔ)言的網(wǎng)頁(yè)。Nginx是俄羅斯的輕量級(jí)WEB服務(wù)器,處理靜態(tài)WEB能力強(qiáng)悍,有負(fù)載均衡功能,用反向代理機(jī)制把動(dòng)態(tài)WEB請(qǐng)求轉(zhuǎn)發(fā)到后臺(tái)交由第三方軟件tomcat進(jìn)行處理實(shí)現(xiàn)靜動(dòng)WEB分離,Nginx負(fù)責(zé)靜態(tài)處理,tomcat負(fù)責(zé)動(dòng)態(tài)處理。
下面闡述Centos+Nginx+MarriaDB+PHP+tomcat架構(gòu)的安裝與配置。
一、Nginx、MarriaDB、PHP、tomcat安裝
1、Nginx安裝
1)從nginx的官網(wǎng)下載最新版本nginx-1.19.1.tar.gz,解壓下載包。
2)安裝編譯Nginx的依賴包
#dnf install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
3)配置nginx的編譯參數(shù)
# ./configure --prefix=/usr/local/soft/nginx-1.19.1 --with-http_stub_status_module --with-http_ssl_module
在此可根據(jù)需要添加擴(kuò)展nginx功能模塊參與編譯。
4)編譯并安裝
# make && make install
2、安裝 mariadb 最新版 10.5.x
1)設(shè)置數(shù)據(jù)源
#vim /etc/yum.repos.d/mariadb.repo;添加如下內(nèi)容:
[mariadb]
name = mariadb
baseurl=http://mirrors.aliyun.com/mariadb/yum/10.5/centos8-amd64/
gpgkey=https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
enabled=1
gpgcheck=1
2)安裝
(1)安裝最新版本
#dnf -y install MariaDB-server MariaDB-client --disablerepo=AppStream
--disablerepo=AppStream 禁用倉(cāng)庫(kù)標(biāo)識(shí)AppStream
(2)啟動(dòng) mariadb
#systemctl start mariadb
3、安裝PHP7.4.8
安裝
(1)Enable php:remi-7.4 module.
dnf module enable php:remi-7.4 -y
(2)Install PHP 7.4.
dnf install -y php php-cli php-common
PHP 常用擴(kuò)展包
dnf install -y php-dom php-simplexml php-ssh2 …
(4)查看版本
php -v
(5)查看啟用的模塊,請(qǐng)運(yùn)行:
$ php --modules
4、安裝tomcat
tomcat是基于java環(huán)境運(yùn)行的軟件,所以必須安裝java包(過程略)。
1)下載apache-tomcat-9.0.40.tar.gz,將其解壓到系統(tǒng)某一目錄,即可運(yùn)行。
# tar -zxvf apache-tomcat-9.0.40.tar.gz
啟動(dòng)tomcat
# ./startup.sh
關(guān)閉tomcat
# ./shutdown.sh
二、Nginx、MarriaDB、PHP、tomcat配置
Nginx、MarriaDB、PHP、tomcat安裝完成后,需要進(jìn)行必要的配置,方能勝任網(wǎng)站工作,這是WEB發(fā)布環(huán)境搭建的核心。
1、Nginx配置
1)設(shè)置軟鏈接
為了在各種路徑能正常運(yùn)行Nginx,需配如下軟連接:
ln -s /usr/local/soft/nginx-1.19.1/sbin/nginx /usr/local/sbin/nginx
2)為方便啟停Nginx運(yùn)行,配置nginx運(yùn)行服務(wù),新建nginx.service
#vim /usr/lib/systemd/system/nginx.service 文件,配置內(nèi)容略
3)創(chuàng)建nginx運(yùn)行所需的用戶和用戶組:
# groupadd nginx
-g:指定所屬的group
-s:指定shell,因?yàn)樗恍枰卿洠杂?sbin/nologin
-M:不創(chuàng)建home目錄,因?yàn)樗恍枰卿?/span>
# useradd -g nginx -s /sbin/nologin -M nginx
4)賦予nginx在網(wǎng)站根目錄工作的所有權(quán)限:
# chown nginx:nginx /usr/local/soft/nginx-1.19.1/html -R
5)nginx.conf配置
包含WEB動(dòng)靜分離、PHP調(diào)用、文件下載等功能的腳本配置實(shí)例,如:
#vim /usr/local/soft/nginx-1.19.1/conf/nginx.conf
#設(shè)置nginx的用戶和用戶組
user nginx nginx;
worker_processes auto;
error_log /usr/local/soft/nginx-1.19.1/logs/error.log;
pid /usr/local/soft/nginx-1.19.1/logs/nginx.pid;
events {
use epoll;
worker_connections 1024;
}
http {
include mime.types;
…
server {
listen 80;
server_name localhost;
root /usr/local/soft/nginx-1.19.1/html;
charset utf-8;
location / {
root /usr/local/soft/nginx-1.19.1/html;
index index.php index.html index.htm index.jsp index.do;
#在發(fā)布根目錄下搜索網(wǎng)頁(yè)地址欄輸入的文件或目錄(下載文件),沒有跳轉(zhuǎn)index.php;
try_files $uri $uri/ /index.php$is_args$args;
…
if ($request_filename ~* ^.*?\.
(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx)$){
add_header Content-Disposition: 'pwupload';
}
}
location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {
expires 5m;
}
location ~ .php$ { #調(diào)用PHP-pfm處理PHP網(wǎng)頁(yè)
root /usr/local/soft/nginx-1.19.1/html;
fastcgi_pass unix:/run/php-fpm/www.sock; #使用socket協(xié)議
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ \.(jsp|jspx|do)?$ {
index index.jsp;
proxy_pass http://127.0.0.1:8080; #來(lái)自jsp請(qǐng)求交給tomcat處理
…
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/soft/nginx-1.19.1/html;
}
location ~ ^/(WEB-INF)/ {
deny all;
}
}
}
檢查nginx的工作狀態(tài):
# systemctl status nginx
2、MarriaDB配置
初始化設(shè)置數(shù)據(jù)庫(kù)
#mysql_secure_installation
Mariadb運(yùn)行root賬戶安全設(shè)置,初始化數(shù)據(jù)庫(kù)。
3、PHP配置
(1)配置php.ini
vim /etc/php.ini
將#cgi.fix_pathinfo=0的注釋刪除掉,并改為0,這一項(xiàng)默認(rèn)被注釋并且值為1,避免惡意腳本注入的攻擊。
(2)通信方式
php-fpm通信有兩種方式(默認(rèn)是第二種):
① 通過端口通信,通常在web與php-fpm不在同一臺(tái)服務(wù)器中時(shí)使用此方法。
②通過*.sock文件進(jìn)行互聯(lián)通信,web與php-fpm在同一臺(tái)服務(wù)器時(shí)使用。
php.conf配置
# vi /etc/php-fpm.conf
指定php-fpm的錯(cuò)誤日志位置
error_log = /var/log/php-fpm/error.log
pid = /var/run/php-fpm.pid
#vim /etc/php-fpm.d/www.conf
user = nginx ;PHP用戶
group = nginx ;PHP用戶組
web與php-fpm在同一臺(tái)服務(wù)器上使用系統(tǒng)本身socket協(xié)議
listen = /run/php-fpm/www.sock
配置通訊文件權(quán)限,否則nginx無(wú)法調(diào)用PHP-fpm
listen.owner = nginx
listen.group = nginx
listen.mode = 0666
4、tomcat配置
創(chuàng)建tomcat.service文件
vi /usr/lib/systemd/system/tomcat.service
內(nèi)容略
查看當(dāng)前服務(wù)狀態(tài),看是否正常工作。
systemctl status tomcat.service
tomcat默認(rèn)的程序發(fā)布路徑為tomcat/webapps/ROOT/,若更改默認(rèn)路徑,可修改Tomcat配置文件server.xml,比如改到/usr/share/nginx/html/catweb,具體如下:
<Host name="localhost" appBase="webapps"
…
<Context path="" docBase="/usr/share/nginx/html/tomweb" debug="0" reloadable="true"/>
</Host>
三、WEB發(fā)布環(huán)境測(cè)試
編寫測(cè)試WEB頁(yè)檢驗(yàn)發(fā)布環(huán)境是否正確。
1)vim /usr/local/soft/nginx-1.19.1/html/index.html
內(nèi)容略,測(cè)試Nginx是否工作正常。
保存文件,在瀏覽器地址欄輸入:localhost/index.html回車,結(jié)果如圖1。
2)vim /usr/local/soft/nginx-1.19.1/html/test.php
填寫如下內(nèi)容,測(cè)試php-fpm是否工作正常。
<?php
phpinfo();
?>
保存文件,在瀏覽器地址欄輸入:localhost/test.php回車,結(jié)果如圖2。
3)vim /usr/local/soft/nginx-1.19.1/html/test.html
內(nèi)容略,測(cè)試靜態(tài)WEB網(wǎng)頁(yè)是否正常工作
保存文件,在瀏覽器地址欄輸入:localhost/test.html回車,結(jié)果如圖3。
4)vim /usr/local/soft/apache-tomcat-9.0.40/webapps/ROOT/test.jsp
內(nèi)容略,,測(cè)試tomcat是否工作正常。
保存文件,在瀏覽器地址欄輸入:localhost:8090/test.jsp回車,結(jié)果如圖4。
網(wǎng)頁(yè)測(cè)試結(jié)果如下:
圖1 圖2 圖3 圖4
測(cè)試結(jié)果證明環(huán)境配置正確,各個(gè)WEB環(huán)境模塊工作正常。
5)數(shù)據(jù)庫(kù)使用:
在 shell 中輸入
#mysql -u root -p;輸入 root 的管理密碼
一般啟動(dòng)數(shù)據(jù)庫(kù),直接執(zhí)行:#mysql。
上述過程無(wú)報(bào)錯(cuò),說(shuō)明MarriaDB安裝配置正確。
參考資料
源碼編譯構(gòu)建LNMP架構(gòu)(Linux + Nginx + MySQL + PHP)實(shí)現(xiàn)論壇的搭建
https://blog.csdn.net/songyuchaoshi/article/details/97830059
在CentOS 8-RHEL 8系統(tǒng)中安裝PHP 7.4的方法
https://blog.csdn.net/weixin_39514326/article/details/102784965
Centos8 安裝 mariadb 最新版 10.5.x
https://blog.csdn.net/fenglailea/article/details/105840417
Nginx+Tomcat實(shí)現(xiàn)動(dòng)靜分離
新聞技聯(lián)動(dòng)態(tài)
- 推動(dòng)知識(shí)資源平臺(tái)合規(guī)健康發(fā)展 共促數(shù)字版權(quán)規(guī)范化合理化 2023-03-06
- 成功舉辦中國(guó)新聞技術(shù)工作者聯(lián)合會(huì)市縣融媒體分會(huì)年會(huì)暨換屆大會(huì) 2022-12-23
- 中國(guó)新聞技聯(lián)新聞信息標(biāo)準(zhǔn)化分會(huì) 2022年年會(huì)成功召開 2022-12-01
- 《機(jī)器生產(chǎn)內(nèi)容自動(dòng)化分級(jí)》團(tuán)體標(biāo)準(zhǔn) 正式發(fā)布實(shí)施 2022-12-01
- 延期通知:中國(guó)新聞技術(shù)工作者聯(lián)合會(huì) 縣市融媒體分會(huì) 2022 年學(xué)術(shù)年會(huì)暨技術(shù)交流會(huì) 2022-12-01
- 2022年中國(guó)新聞技術(shù)工作者聯(lián)合會(huì)學(xué)術(shù)年會(huì)在貴陽(yáng)成功舉辦 2022-11-17
- 喜報(bào)│53個(gè)案例入選首批“技術(shù)賦能‘新聞+’推薦案例” 2022-11-17
- 重磅│19位新聞技術(shù)工作者獲此殊榮 2022年度“王選新聞科學(xué)技術(shù)獎(jiǎng)”人才獎(jiǎng)在貴陽(yáng)頒獎(jiǎng) 2022-11-17
- 新品│速看哪三項(xiàng)傳媒技術(shù)創(chuàng)新產(chǎn)品發(fā)布 2022-11-17
- 2022年中國(guó)新聞技術(shù)工作者聯(lián)合會(huì)學(xué)術(shù)年會(huì)勝利開幕! 2022-11-17