Centos手動部署LNMP環境,並部署Wordpress

選擇手動安裝、腳本安裝還是面板安裝

如果您只是想搭建一個自己的私人博客或出於測試等其他非生產目的部署一個LNMP環境,建議您使用一鍵部署腳本或者Linux面板比如寶塔面板等。這種部署方式快捷高效,後兩個當中更推薦面板部署,方便環境的管理和配置
樓主之前也是依賴於面板,最近準備面試運維相關的職位,想把之前學過的知識重新複習一下並重新實踐一下相關項目,故選擇了手動部署環境,期間也遇到了許多困難,不過參照網上資料及應用所學的知識一一解決了。
感謝參考的關於PHP7和Nginx編譯安裝的博文:
Centos7編譯安裝php7.10
Centos7編譯安裝Nginx
接下來進入正題

環境聲明

公有云平臺:阿里雲ECS實例
系統版本:Centos7.3

準備工作

  1. 下載PHP最新版本和Nginx最新版本,本次使用的分別是PHP7.43和Nginx1.17.9,Mariadb的安裝使用yum,不必提前下載
  2. 如果您希望使用rz的方式推送以上安裝包到服務器,請提前安裝lrzsz
  3. 由於編譯安裝耗時較長,爲防止網絡等原因導致的進程中斷,建議在screen會話中進行編譯安裝,請確保您已安裝screen
  4. 爲了方便主機後續的管理,建議您建立一個目錄例如pkg來存放以上文件

部署LNMP

安裝Mariadb

Mariadb--安裝
yum -y install Mariadb-server
Mariadb--配置--修改安全策略
systemctl start mariadb 
mysql_secure_installation
#根據提示和需要依此修改root用戶密碼、是否移除test賬戶、是否禁用遠程訪問等等,您可以選擇翻譯或者參考[MySQl安全配置嚮導](https://blog.csdn.net/qq_32786873/article/details/78846008)
Mariadb--配置--數據庫操作(如果您不需要部署Wordpress,請忽略這一步)
#以root身份連接數據庫
mysql -u root -p[your passwd ofmysql root]
#接下來的每一步操作,請記得添加;作爲語句結束符
#創建數據庫供Wordpress使用,名稱自選
create database wordpress

#處於安全目的,創建用戶供Wordpress訪問使用並授予僅對wordpres數據庫的全部權限,用戶名自選
#創建用戶
#參數1、2、3請根據自己的需要填入用戶名、訪問控制、密碼,出於安全目的,建議參數2填寫爲localhost,僅主機訪問
CREATE USER '[1]'@'[2]' IDENTIFIED BY '[3]';

#授予對wordpress數據庫的全部訪問權限
#參數1、2分別填入數據庫名、數據庫下的表(此處填寫完*)
GRANT ALL ON [1].[2] to username@'localhost';

#刷新權限表
FLUSH privileges;

編譯安裝PHP

安裝PHP的三種種方法:

1.yum -y install #這種方法安裝的版本安裝的PHP版本爲5.4,可能無法爲某些服務提供功能
2. 類似於第一種,但是要先配置yum源,版本也會稍稍滯後於最新版本,這裏暫不涉及
3. 源碼編譯安裝,本文采用此種安裝方法

安裝PHP--編譯與安裝	
#進入到下載或上傳至服務器的安裝包所在的目錄,請根據自己的環境自行修改參數
cd /root/pkg

#解壓後進入目錄
tar -xvf php-7.4.3.tar.xz
cd php-7.3.3

#根據需要選擇合適的參數準備編譯
#參見參數
************************************************************************************
--prefix=/usr/local/php7 # 配置安裝目錄
--with-config-file-path=/usr/local/php7 # 配置文件 php.ini 的路徑
--enable-sockets # 開啓 socket 
--enable-fpm # 啓用 fpm 擴展
--enable-cli # 啓用 命令行模式 (從 php 4.3.0 之後這個模塊默認開啓所以可以不用再加此命令)
--enable-mbstring # 啓用 mbstring 庫
--enable-pcntl # 啓用 pcntl (僅 CLI / CGI)
--enable-soap # 啓用 soap 
--enable-opcache # 開啓 opcache 緩存
--disable-fileinfo # 禁用 fileinfo (由於 5.3+ 之後已經不再持續維護了,但默認是開啓的,所以還是禁止了吧)(1G以下內存服務器直接關了吧)
--disable-rpath  #禁用在搜索路徑中傳遞其他運行庫。
--with-mysqli # 啓用 mysqli 擴展
--with-pdo-mysql # 啓用 pdo 擴展
--with-iconv-dir # 啓用 XMLRPC-EPI 字符編碼轉換 擴展
--with-openssl # 啓用 openssl 擴展 (需要 openssl openssl-devel)
--with-fpm-user=www #設定 fpm 所屬的用戶 
--with-fpm-group=www #設定 fpm 所屬的組別
--with-curl # 啓用 curl 擴展
--with-mhash # 開啓 mhash 基於離散數學原理的不可逆向的php加密方式擴展庫
# GD
--with-gd # 啓用 GD 圖片操作 擴展
--with-jpeg-dir # 開啓對 jpeg 圖片的支持 (需要 libjpeg)
--with-png-dir # 開啓對 png 圖片支持 (需要 libpng)
--with-freetype-dir # 開啓 freetype 
# 壓縮
--enable-zip # 啓用 zip
--with-zlib # 啓用對 zlib 支持 
# xml
--enable-simplexml # 啓用對 simplexml 支持
--with-libxml-dir # 啓用對 libxml2 支持
************************************************************************************

#創建並進入screen會話
screen -S [name]

#編譯
#由於缺少編譯環境,編譯的過程中自然會報錯,請根據每次報錯的提示百度然後安裝對應的庫或者依賴
#請留意以下選項:1、安裝目錄 2、nginx所屬用戶和組,如果使用www作爲參數,請在後續創建www用戶
./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7 --enable-sockets --enable-fpm --enable-cli --enable-mbstring --enable-pcntl --enable-soap --enable-opcache --disable-fileinfo --disable-rpath --with-mysqli --with-pdo-mysql --with-iconv-dir --with-openssl --with-fpm-user=www --with-fpm-group=www --with-curl --with-mhash --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --enable-zip --with-zlib --enable-simplexml --with-libxml-dir 

#當看到PHP的歡迎語,說明編譯完成,開始安裝
make && make install
安裝PHP--配置PHP相關文件
#將PHP安裝路徑中的相關配置文件更名
#您可以在不更名前嘗試,會得到提示“/usr/local/php7/etc/php-fpm.conf”,完成第一個操作後會得到第二個類似提示,因此可一次性完成
cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf

cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf
#至此您可以使用以下語句來啓動服務
/usr/local/php7/sbin/php-fpm
安裝PHP--爲PHP創建快捷的服務管理項
#方法一
cp [PHP解壓縮目錄]/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

chmod +x /etc/init.d/php-fpm
#完成以上步驟後您可以使用Centos6的方式來管理服務
service php-fpm start  #啓動
service php-fpm stop   #停止
service php-fpm restart #重啓

#方法二爲上述目錄文件創建軟鏈接,推薦方法1,因爲方法一可以更好都管理服務,也更加直觀
#方法三,未成功,原因待排查
cp /root/pkg/php-7.4.3/sapi/fpm/php-fpm.service /usr/lib/systemd/system/
#成功後,可使用Centos7典型服務管理方式管理
systemctl start|stop|restart php-fpm
安裝PHP--聲明PHP環境變量
vim /etc/profile
#在末尾添加
export PATH=$PATH:/usr/local/php/bin

#重新載入
source /etc/profile

#現在可以查看php命令
php -v

PHP 7.4.3 (cli) (built: Mar 13 2020 18:16:52) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

編譯安裝Nginx

Nginx安裝--編譯、安裝
操作請參考php的編譯安裝
Nginx安裝--配置Nginx
#無需替換文件等操作,對Nginx的操作主要是註冊系統服務
#自行編寫腳本服務腳本nginx.service,請根據自己的配置注意替換相應的目錄變量
vim  /usr/lib/systemd/system/nginx.service

[Unit]
Description=nginx
After=network.target remote-fs.target nss-lookup.target
 
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPost=/bin/sleep 0.1
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target
安裝Nginx--隱藏Nginx版本號,防止嗅探版本信息
vim /usr/local/nginx/conf/nginx.conf
#定位至http區塊,在當中加入以下語句
 server_tokens off;
安裝Nginx--在配置網站時使Nginx支持解析PHP
#定位至定義的server區塊,在當中加入以下語句
#請將root後的目錄替換爲您定義的server中的目錄
location ~ \.php$ {
            root    /www/wordpress;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
安裝Nginx--測試Nginx是否支持解析PHP
#建議不用直接進行Wordpress的部署而先測試PHP是否正常工作
#在/[Nginx安裝目錄]/html/下創建index.php,內容如下,用於顯示php版本信息
vim /usr/local/nginx/html/index.php
<?php
phpinfo();
?>

#回溯至上一步,在server區段中,修改
location / {
            root   html;
            index index.php  index.html index.htm;
        }
#在server區段中,添加
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;
        }

#回到阿里雲控制檯放行80端口
#如果Centos開啓了防火牆,請放行80端口,您現在應該可以在瀏覽器中訪問ip看到PHP信息頁

Wordpress部署

Wordpress安裝--網站目錄權限設置
#上傳並解壓Wordpres安裝包至在ngixn.conf中server字段定義的網站根目錄
tar -xvf [xxx.tar.gz] -C [Dir of Site]
#查看解壓後的文件夾,您會發現文件夾的用戶屬主和屬組是一個不存在的用戶,且只有屬主具有讀寫執行權限
ll /www/
ll /www/wordpress/

#這種情況下打開網站,進入wordpress配置後,連接到之前配置的數據庫後,會發現提示無法創建文本,自行復制創建,如果您按照這種方法,即使成功進入,也會在後續使用中遇到關於權限的各種問題
#回顧到前文,我們在編譯安裝PHP和Nginx時指定的用戶爲www,而網站運行過程中,依賴這兩個進程,因此,將用戶屬主改編爲www即可,如果您沒有添加該用戶,前面服務的啓動也不會成功
chown -R www /www/wordpress/

至此,Wordpress已經正常安裝並訪問

總結

1、Mariadb使用yum安裝快捷方便,經過安全策略引導配置後,出於安全目的,應該爲每個數據庫配置相應的授權用戶
2、編譯安裝PHP中,快捷管理服務的方法有三種,第三種方式是註冊服務項,失敗原因帶排查
3、編譯安裝PHP和Nginx的過程中,指定的用戶名和屬組應當留意,這在站點目錄的權限設置中會涉及到。如果只是簡單的將站點目錄設置爲全部用戶可讀可寫可執行,雖然可以解決問題,但是留下了安全隱患
4、對於服務端口,共有在防火牆的基礎上爲服務器多了一道安全組保障,請注意放行相應端口。不要將防火牆簡單關閉,應當採用放行端口的方式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章