Linux系統(tǒng)環(huán)境WEB發(fā)布網(wǎng)站的建設(shè)

2023/03/06-17:05 來(lái)源:

韓維營(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

圖片11.png圖片2.png圖片3.png圖片4.png網(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)靜分離