手動(dòng)搭建WordPress(Linux)
本文中含有需要您注意的重要提示信息,忽略該信息可能對(duì)您的業(yè)務(wù)造成影響,請(qǐng)務(wù)必仔細(xì)閱讀。
WordPress是一款免費(fèi)開源的網(wǎng)站內(nèi)容管理系統(tǒng)(CMS),他可以幫助您簡(jiǎn)單、快捷地創(chuàng)建和管理自己的網(wǎng)站,包括博客、新聞網(wǎng)站、電子商務(wù)網(wǎng)站、社交網(wǎng)絡(luò)等。WordPress擁有豐富的主題和插件庫,可以輕松地為網(wǎng)站定制外觀和功能。本教程介紹如何在不同操作系統(tǒng)的Linux實(shí)例上,手動(dòng)搭建WordPress網(wǎng)站的方法。
準(zhǔn)備工作
為已創(chuàng)建實(shí)例搭建WordPress網(wǎng)站,已創(chuàng)建的ECS實(shí)例必須滿足以下條件:
實(shí)例已分配公網(wǎng)IP地址或綁定彈性公網(wǎng)IP(EIP)。
如果創(chuàng)建實(shí)例時(shí)未配置公網(wǎng),請(qǐng)綁定EIP。具體操作,請(qǐng)參見綁定EIP。
實(shí)例的安全組入方向規(guī)則已放行22、80端口。具體操作,請(qǐng)參見添加安全組規(guī)則。
重要基于服務(wù)器數(shù)據(jù)安全考慮,本文僅說明部署與測(cè)試LNMP環(huán)境和WordPress網(wǎng)站所必需放行的端口,您可以根據(jù)實(shí)際需求,放行其他應(yīng)用所需的端口號(hào)。例如,遠(yuǎn)程連接MySQL數(shù)據(jù)庫時(shí),需要放行MySQL默認(rèn)占用的3306端口。
操作步驟
不同的操作系統(tǒng)搭建WordPress的命令存在差異,請(qǐng)根據(jù)您的ECS實(shí)例操作系統(tǒng)選擇對(duì)應(yīng)的操作,否則會(huì)安裝失敗。本文檔以Alibaba Cloud Linux 3/2、CentOS 7/8為例部署WordPress 6.4。
部署LNMP環(huán)境。具體操作,請(qǐng)參見手動(dòng)部署LNMP環(huán)境(Alibaba Cloud Linux 3/2、CentOS 7/8)。
重要更多部署LNMP環(huán)境的方式,請(qǐng)參見部署LNMP環(huán)境。但WordPress對(duì)PHP、MySQL版本存在依賴關(guān)系,如果版本不匹配則會(huì)導(dǎo)致WordPress安裝失敗。具體依賴信息,請(qǐng)參見WordPress Compatibility。
本文檔Web服務(wù)器為Nginx,如果您的服務(wù)器ECS實(shí)例已安裝Apache,會(huì)出現(xiàn)80端口被占用的問題,導(dǎo)致WordPress無法訪問。
遠(yuǎn)程連接ECS實(shí)例。
具體操作,請(qǐng)參見使用Workbench工具以SSH協(xié)議登錄Linux實(shí)例。
配置WordPress數(shù)據(jù)庫。
運(yùn)行以下命令,進(jìn)入MySQL數(shù)據(jù)庫。
說明使用
root
用戶登錄MySQL,并輸入密碼。密碼為您在搭建LNMP環(huán)境時(shí)為數(shù)據(jù)庫設(shè)置的密碼。mysql -u root -p
運(yùn)行以下命令,為WordPress網(wǎng)站創(chuàng)建一個(gè)名稱為
wordpress
的數(shù)據(jù)庫。create database wordpress;
運(yùn)行以下命令,創(chuàng)建一個(gè)新用戶
user
管理WordPress庫,新用戶密碼為PASSword123.
,以提高數(shù)據(jù)安全性。create user 'user'@'localhost' identified by 'PASSword123.';
說明您可以使用
show variables like "%password%";
命令,查詢MySQL的密碼強(qiáng)度規(guī)則。本示例中密碼規(guī)則要求:長(zhǎng)度為8至30個(gè)字符,必須同時(shí)包含大小寫英文字母、數(shù)字和特殊符號(hào),其中特殊符號(hào)包含()` ~!@#$%^&*-+=|{}[]:;‘<>,.?/
。MySQL在5.7版本后默認(rèn)安裝了密碼強(qiáng)度驗(yàn)證插件validate_password。
運(yùn)行以下命令,賦予用戶對(duì)數(shù)據(jù)庫
wordpress
的全部權(quán)限。grant all privileges on wordpress.* to 'user'@'localhost';
運(yùn)行以下命令,使配置生效。
flush privileges;
運(yùn)行以下命令,退出MySQL。
exit;
下載WordPress,并移動(dòng)至網(wǎng)站根目錄。
運(yùn)行以下命令,進(jìn)入Nginx網(wǎng)站根目錄,下載WordPress壓縮包。
說明本示例默認(rèn)安裝的是WordPress中文版本。如果您需安裝WordPress英文版本,需運(yùn)行命令
wget https://wordpress.org/wordpress-6.4.4.zip
,下載WordPress英文版本壓縮包。同時(shí)您需要注意,后續(xù)操作中壓縮包的名稱必須替換為wordpress-6.4.4.zip
。cd /usr/share/nginx/html sudo wget https://cn.wordpress.org/wordpress-6.4.4-zh_CN.zip
(可選)運(yùn)行以下命令,安裝
unzip
命令。sudo yum install unzip -y
運(yùn)行以下命令,解壓WordPress壓縮包。
sudo unzip wordpress-6.4.4-zh_CN.zip
運(yùn)行以下命令,將WordPress安裝目錄下的
wp-config-sample.php
文件復(fù)制到wp-config.php
文件中,并將wp-config-sample.php
文件作為備份。cd /usr/share/nginx/html/wordpress sudo cp wp-config-sample.php wp-config.php
修改WordPress配置文件。
運(yùn)行以下命令,編輯
wp-config.php
文件。sudo vim wp-config.php
按
i
鍵進(jìn)入編輯模式。根據(jù)已配置的WordPress數(shù)據(jù)庫信息,修改MySQL相關(guān)配置信息示例如下所示。
說明配置文件中的WordPress數(shù)據(jù)庫名稱、MySQL數(shù)據(jù)庫用戶名和密碼需要和配置WordPress數(shù)據(jù)庫中保持一致。
// ** MySQL 設(shè)置 - 具體信息來自您正在使用的主機(jī) ** // /** WordPress數(shù)據(jù)庫的名稱 */ define('DB_NAME', 'wordpress'); /** MySQL數(shù)據(jù)庫用戶名 */ define('DB_USER', 'user'); /** MySQL數(shù)據(jù)庫密碼 */ define('DB_PASSWORD', 'PASSword123.'); /** MySQL主機(jī) */ define('DB_HOST', 'localhost');
說明WordPress網(wǎng)站的數(shù)據(jù)信息將通過數(shù)據(jù)庫的
user
用戶保存在名為wordpress
的數(shù)據(jù)庫中。按
Esc
鍵,輸入:wq
后按Enter
鍵,保存退出配置文件。
修改Nginx配置文件。
Alibaba Cloud Linux 3/2、CentOS 7
運(yùn)行以下命令,打開Nginx配置文件。
sudo vim /etc/nginx/nginx.conf
按
i
鍵進(jìn)入編輯模式。在
server
大括號(hào)內(nèi),將root
后的內(nèi)容替換為WordPress根目錄。本示例中WordPress的根目錄為
/usr/share/nginx/html/wordpress
。在
location ~ .php$
大括號(hào)內(nèi),將root
后的內(nèi)容替換為WordPress根目錄。
說明替換為WordPress根目錄時(shí),需將WordPress根目錄后加分號(hào)(
;
),否則無法重啟Nginx服務(wù)。按
Esc
鍵,輸入:wq
后按Enter
鍵,保存退出配置文件。運(yùn)行以下命令,重啟Nginx服務(wù)。
sudo systemctl restart nginx
CentOS 8
運(yùn)行以下命令,打開Nginx配置文件。
sudo vi /etc/nginx/conf.d/default.conf
按
i
鍵進(jìn)入編輯模式,替換WordPress根目錄。本示例中WordPress的根目錄為
/usr/share/nginx/html/wordpress
。在
location /
大括號(hào)內(nèi),將root
后的內(nèi)容替換為WordPress根目錄。在
location ~ \.php$
大括號(hào)內(nèi),將root
后的內(nèi)容替換為WordPress根目錄。
按
Esc
鍵,輸入:wq
后按Enter
鍵,保存退出配置文件。運(yùn)行以下命令,重啟Nginx服務(wù)。
sudo systemctl restart nginx
安裝并登錄WordPress網(wǎng)站。
在本地物理機(jī)上使用瀏覽器訪問
http://ECS實(shí)例公網(wǎng)IP
,進(jìn)入WordPress安裝頁面。填寫網(wǎng)站基本信息,然后單擊安裝WordPress。
填寫信息參數(shù)說明:
站點(diǎn)標(biāo)題:WordPress網(wǎng)站的名稱。例如:demowp。
用戶名:登錄WordPress時(shí)所需的用戶名,請(qǐng)注意安全性。例如:testwp。
密碼:登錄WordPress時(shí)所需的密碼,建議您設(shè)置安全性高的密碼。例如:Wp.123456。
您的電子郵件:用于接收通知的電子郵件。例如:username@example.com。
單擊登錄。
輸入在安裝WordPress時(shí)設(shè)置的用戶名
testwp
和密碼Wp.123456
,然后單擊登錄。成功進(jìn)入您個(gè)人的WordPress網(wǎng)站。使用WordPress的更多信息,請(qǐng)參見WordPress官網(wǎng)使用文檔。
相關(guān)操作
解析WordPress網(wǎng)站域名
通過實(shí)例公網(wǎng)IP地址直接訪問您的WordPress網(wǎng)站會(huì)降低服務(wù)端的安全性。如果您已有域名或者想為WordPress網(wǎng)站注冊(cè)一個(gè)域名,可以參考以下步驟。
注冊(cè)域名。
您可以在阿里云注冊(cè)域名。具體操作,參見通用域名注冊(cè)基本流程如何注冊(cè)阿里云域名。
備案域名。
如果您的域名指向的網(wǎng)站托管在阿里云中國內(nèi)地節(jié)點(diǎn)服務(wù)器,您需要進(jìn)行備案。首次備案,請(qǐng)參見ICP備案流程,其他情況請(qǐng)參見ICP備案流程。
說明備案要求ECS實(shí)例的計(jì)費(fèi)方式為包年包月且至少購買3個(gè)月,如果您的服務(wù)器購買時(shí)長(zhǎng)不滿足備案要求,需執(zhí)行以下操作:
如果ECS實(shí)例計(jì)費(fèi)方式為按量付費(fèi),則需轉(zhuǎn)為包年包月。具體操作,請(qǐng)參見按量付費(fèi)轉(zhuǎn)包年包月。
如果ECS實(shí)例購買不足3個(gè)月,需續(xù)費(fèi)實(shí)例。具體操作,請(qǐng)參見如何續(xù)費(fèi)包年包月實(shí)例。
整個(gè)備案流程預(yù)計(jì)所需時(shí)長(zhǎng)約1~22個(gè)工作日左右,具體時(shí)長(zhǎng)以實(shí)際操作時(shí)間為準(zhǔn)。
備案過程中的常見問題,請(qǐng)參見備案常見問題。
解析域名。
將域名指向?qū)嵗W(wǎng)IP。具體操作,請(qǐng)參見設(shè)置域名解析。
說明域名解析過程中的常見問題,請(qǐng)參見解析不生效類問題。
將實(shí)例公網(wǎng)IP替換為新域名。
遠(yuǎn)程連接已搭建WordPress網(wǎng)站的ECS實(shí)例。
具體操作,請(qǐng)參見連接實(shí)例。
運(yùn)行以下命令,登錄MySQL數(shù)據(jù)庫。
mysql -u root -p
運(yùn)行以下命令,切換至WordPress對(duì)應(yīng)的數(shù)據(jù)庫。
use wordpress;
運(yùn)行以下命令,為WordPress網(wǎng)站設(shè)置新域名。
說明操作時(shí)需修改命令中的參數(shù):
http://實(shí)例公網(wǎng)IP:替換為實(shí)際的實(shí)例公網(wǎng)IP。
http://www.example.com:替換為實(shí)際域名。
update wp_options set option_value = replace(option_value, 'http://實(shí)例公網(wǎng)IP', 'http://www.example.com') where option_name = 'home' OR option_name = 'siteurl';
運(yùn)行以下命令,退出MySQL。
exit;
成功為WordPress網(wǎng)站設(shè)置新域名。
常見問題
Q1:無法通過公網(wǎng)IP訪問WordPress
可能原因及其解決方案:
安全組未放開80端口、系統(tǒng)防火墻開啟、80端口被占用
具體排查方法,請(qǐng)參見無法訪問ECS實(shí)例中的服務(wù)的排查方法。
PHP、MySQL版本與WordPress版本不匹配
WordPress對(duì)PHP、MySQL版本存在依賴關(guān)系,如果版本不匹配則會(huì)導(dǎo)致WordPress安裝失敗。具體依賴信息,請(qǐng)參見WordPress Compatibility。
Q2:WordPress中設(shè)置固定鏈接后,跳轉(zhuǎn)頁面無法訪問
網(wǎng)站設(shè)置為靜態(tài)網(wǎng)頁有利于搜索引擎收錄網(wǎng)站。您在對(duì)WordPress站點(diǎn)設(shè)置固定鏈接前,需要先在Nginx服務(wù)器中設(shè)置為靜態(tài)規(guī)則。操作步驟如下:
登錄搭建WordPress的ECS實(shí)例。
具體操作,請(qǐng)參見使用Workbench工具以SSH協(xié)議登錄Linux實(shí)例。
運(yùn)行以下命令,打開Nginx配置文件。
sudo vim /etc/nginx/nginx.conf
按
i
鍵進(jìn)入編輯模式。在
location /
大括號(hào)內(nèi),添加如下代碼。if (-f $request_filename/index.html){ rewrite (.*) $1/index.html break; } if (-f $request_filename/index.php){ rewrite (.*) $1/index.php; } if (!-f $request_filename){ rewrite (.*) /index.php; }
按
Esc
鍵,輸入:wq
后按Enter
鍵,保存退出配置文件。運(yùn)行以下命令,重啟Nginx服務(wù)。
sudo systemctl restart nginx
Q3:WordPress中更新版本、上傳主題或插件時(shí),提示需要FTP登錄憑證或無法創(chuàng)建目錄
該問題可能是因?yàn)閃ordPress配置文件、主題或插件的權(quán)限不足,您可以參考以下步驟解決。
登錄搭建WordPress的ECS實(shí)例。
具體操作,請(qǐng)參見使用Workbench工具以SSH協(xié)議登錄Linux實(shí)例。
運(yùn)行以下命令,打開WordPress配置文件。
sudo vim /usr/share/nginx/html/wordpress/wp-config.php
按
i
鍵進(jìn)入編輯模式。在最下方,添加如下代碼。
define("FS_METHOD","direct"); define("FS_CHMOD_DIR", 0777); define("FS_CHMOD_FILE", 0777);
按
Esc
鍵,輸入:wq
后按Enter
鍵,保存退出配置文件。返回WordPress儀表盤,刷新頁面,可解決需要FTP登錄憑證的問題。
如果仍存在無法創(chuàng)建目錄的問題,需再次返回ECS實(shí)例,運(yùn)行以下命令,將網(wǎng)站根目錄的權(quán)限用戶更新為Nginx對(duì)應(yīng)的用戶,本示例環(huán)境中為
nginx
用戶。sudo chown -R nginx /usr/share/nginx/html/wordpress
Q4:如何修改WordPress鏡像中的MySQL 5.7數(shù)據(jù)庫的默認(rèn)用戶名和密碼?
遠(yuǎn)程連接安裝WordPress鏡像的ECS實(shí)例。
具體操作,請(qǐng)參見使用Workbench工具以SSH協(xié)議登錄Linux實(shí)例。
運(yùn)行以下命令,登錄MySQL數(shù)據(jù)庫。
mysql -u root -p
根據(jù)回顯信息,輸入MySQL數(shù)據(jù)庫root用戶的默認(rèn)密碼。
[test@izbp1cgfkqcrs8pi2li**** ~]# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.7.23 MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
運(yùn)行以下命令,進(jìn)入MySQL數(shù)據(jù)庫。
use mysql
說明運(yùn)行
select user from mysql.user;
命令,可查看MySQL數(shù)據(jù)庫的用戶名。根據(jù)需求,修改數(shù)據(jù)庫的用戶名和密碼。
運(yùn)行以下命令,修改數(shù)據(jù)庫用戶名為新用戶名。
update user set user="新用戶名" where user="用戶名";
本示例將
root
用戶名修改為admin
,命令如下:update mysql.user set user="admin" where user="root";
運(yùn)行以下命令,修改數(shù)據(jù)庫用戶名的密碼。
update mysql.user set authentication_string=password("新密碼") where user="要更新密碼的用戶名";
本示例將
root
用戶密碼改為newpassword
,命令如下:update mysql.user set authentication_string=password("newpassword") where user="root";
運(yùn)行以下命令,刷新權(quán)限使修改生效。
flush privileges;
運(yùn)行以下命令,退出MySQL數(shù)據(jù)庫。
quit;
相關(guān)文檔
如果您想在Docker中部署WordPress。具體操作,請(qǐng)參見使用Docker Compose部署應(yīng)用。
如果您想在寶塔面板中安裝WordPress,安裝寶塔面板的具體操作,請(qǐng)參見:
如果后續(xù)您需要通過FTP上傳WordPress主題或者插件,需要先搭建FTP服務(wù)器。具體操作,請(qǐng)參見:
如果您需要在一臺(tái)ECS實(shí)例中搭建多個(gè)Web站點(diǎn),具體操作,請(qǐng)參見:
如果WordPress網(wǎng)站已綁定了域名,可以為域名配置HTTPS加密訪問。具體操作,請(qǐng)參見SSL證書安裝說明。