此文是本人CentOS下搭建WordPress的一些筆記,環境搭建時間:201804;將看過的幾篇文章總結下來,形成一條龍長文、不用大家再找來找去。
本文大概分為此幾部分:
一、基礎命令更新;
二、服務器加速(非必選)(10分鍾);
三、LNMP安裝(30分鍾);
四、WordPress搭建(30分鍾);
五、開啟https\https2.0(15分鍾);
六、http跳轉https(10分鍾);
七、“噢,沒有這個文件”;
什么是lnmp?就是Linux、Nginx、MySql、PHP,裝好這些就能為你的應用(WordPress)提供部署環境。這些在lnmp.org上面都能找到官方教程。當然還有lamp、lnmpa等,a代表Apache。如果我無寫明具體路徑的,說明命令是哪里都能執行。現在開始一條龍教程。
一、基礎命令更新:
yum -y install wget lrzsz screen gcc glibc-devel iptables iptables-services
screen:這個命令新手可能比較陌生,解釋一下。screen可以在終端斷開連接的情況下,不終止服務器的服務運行。lnmp需要安裝十幾至幾十分鍾,過程中很容易斷網的。
lrzsz:針對secureCRT客戶端,實現輕便的文件上下傳功能。
二、服務器加速(非必選):
其實就是serverSpeeder安裝教程。如果已經安裝過,就可以跳過。沒裝過的也可以先把WordPress裝好,對網速覺得不滿意再回來搞這部分。
1、先更換內核:
centos6: kernel-2.6.32-504.3.3.el6
rpm -ivh http://xz.wn789.com/CentOSkernel/kernel-firmware-2.6.32-504.3.3.el6.noarch.rpmrpm -ivh http://xz.wn789.com/CentOSkernel/kernel-2.6.32-504.3.3.el6.x86_64.rpm --force
centos7: kernel-3.10.0-229.1.2.el7.x86_64
rpm -ivh http://soft.91yun.org/ISO/Linux/CentOS/kernel/kernel-3.10.0-229.1.2.el7.x86_64.rpm --force
rpm -ivh https://buildlogs.centos.org/c7.1511.00/kernel/20151119220809/3.10.0-327.el7.x86_64/kernel-3.10.0-327.el7.x86_64.rpm --force
2、安裝完成后,需要重啟才能生效:
shutdown -r now
3、安裝服務:
cd /home/down (下載目錄,根據你習慣而定)
wget -N --no-check-certificate https://raw.githubusercontent.com/91yun/serverspeeder/master/serverspeeder-all.sh && bash
chmod +x serverspeeder-all.sh
./serverspeeder-all.sh
三、LNMP安裝:
完整教程請查看:https://lnmp.org/install.html
不過既然寫文章了,當然要總結一下:
1、啟動screen(必須):
screen -S lnmp (大寫S)
如果網絡掉線,可以重新連接,再執行 screen -r lnmp 就會看到你的lnmp安裝進程
2、進入個人下載目錄:
cd /home/down (下載目錄,根據你習慣而定)
3、下載LNMP並啟動安裝腳本:
wget -c http://soft.vpser.net/lnmp/lnmp1.4.tar.gz && tar zxf lnmp1.4.tar.gz && cd lnmp1.4 && ./install.sh lnmp
如果你的服務器內存有1G以上,你可以選擇MYSQL5.6或以上、PHP7或以上。 反之,如果你必須安裝MYSQL5.6或以上、PHP7或以上,你的服務器必須有1G以上內存。
如無特別要求,一直按Enter鍵,直到開始安裝即可。默認安裝對機器要求只需128M~512M。
4、安裝完成:
如果看到這個界面,表示安裝成功,按ctrl+c退出此界面。
四、WordPress搭建
這個環節比較多命令,修改文件比較多,首次操作需要半小時左右。先簡單說下,這里要做的事是創建Nginx--WordPress--MySQL的整條鏈接。
1、創建mysql連接:
登錄mysql:
mysql -u root -p
>輸入密碼
輸入的時候密碼不會顯示,這個密碼就是你安裝lnmp時候設置的密碼。如果你是一路enter(回車)下來,默認就是root/root。
創建數據庫:
CREATE DATABASE wordpress_db;
創建MySQL用戶:
CREATE USER wordpress_user@localhost;
設置密碼:
SET PASSWORD FOR wordpress_user@localhost=PASSWORD("password");
配置權限:
GRANT ALL PRIVILEGES ON wordpress_db.* TO wordpress_user@localhost IDENTIFIED BY 'password';
刷新權限
FLUSH PRIVILEGES;
記下你創建的WordPress數據庫名,數據庫用戶,用戶密碼,后面用於寫入到WordPress的conf文件中。WordPress就能通過配置文件連接上mysql數據庫。(我知道你們十有八九都是寫wordpress\wordpress\wordpress,或者直接復制我的命令改也不改,不是不行,只是你們要確定mysql遠程連接是關閉,具體方法這里不展開,不然小心數據庫被黑)
2.下載WordPress
官方地址是:https://cn.wordpress.org
進入個人下載目錄:
cd /home/down
下載WordPress壓縮包:
wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
解壓:
tar -zxvf wordpress-4.9.4-zh_CN.tar.gz
此時解壓出來的文件夾只是我們用來備份用的。原則上不改動里面的內容。
然后將WordPress復制到運行目錄,這里才是以后修改文件的地方。當然你也可以復制到別的路徑中:
cp -r ./wordpress/* /var/www/
默認配置文件只給了模板,我們要把模板復制出來:
cp /var/www/wp-config-sample.php /var/www/wp-config.php
修改目錄權限
chown -R www:www /var/www
設置wp-config.php文件(重要)
vi /var/www/wp-config.php
按照如下修改:
// ** MySQL 設置 - 具體信息來自您正在使用的主機 ** //
/** WordPress數據庫的名稱 */
define('DB_NAME', 'wordpress_db');
/** MySQL數據庫用戶名 */
define('DB_USER', 'wordpress_user');
/** MySQL數據庫密碼 */
define('DB_PASSWORD', 'password');
/** MySQL主機 */
define('DB_HOST', 'localhost');
約在20行左右,將剛才記下的WordPress數據庫名,數據庫用戶,用戶密碼往這里填。然后記下這個/var/www,下一步需要用到。
(vi怎么用沒必要解釋了吧。。。)
3.配置Nginx
lnmp搭建的Nginx主目錄位於/usr/local/nginx中,配置文件在其下conf/文件夾中
vi /usr/local/nginx/conf/nginx.conf
按照如下修改:
server
{
#需要監聽的端口
listen 80 default_server;
#這里輸入服務器的域名或者ip
#server_name 192.168.1.100;
server_name domain.com;
index index.html index.htm index.php;
#這里輸入WordPress主目錄
root /var/www;
……
}
約60行左右,配置好監聽端口(80)、服務器地址(ip或域名)、WordPress主目錄(/var/www)。
重啟Nginx:
service nginx restart
幾秒后就可以通過 ip/wp-admin 或者 domain.com/wp-admin 訪問你的WordPress初始化頁面。
至此,WordPress搭建完成,但手工部署的WordPress有幾個大坑。大家可以先玩兩天,然后再回來修改幾個坑。
------從這部分開始屬於應該屬於進階技能,太基礎的命令不會說。直奔重點和踩過的坑了-----
五、使用Let's Encrypt開啟https\https2.0
Let's Encrypt 是一個免費的SSL機構,acme.sh 是一款用於簽發 Let's Encrypt 證書的腳本。
項目地址:https://github.com/nanqinlang-script/acme
具體教程:https://sometimesnaive.org/article/61
獲取腳本:
wget https://raw.githubusercontent.com/nanqinlang-script/acme/master/acme_2.0.sh
運行:
bash acme_2.0.sh
使用說明
①輸入你的域名(如yourdomain.com)
②選擇要生成證書的類型。輸入數字 0(生成 RSA 類型) 或 1(生成 ECC 類型)。若未選擇則默認生成 RSA 類型
③用 DNS 方式驗證域名所有權:添加腳本中顯示的 綠色字體的 TXT 記錄,添加完成后稍等下(等個五分鍾應該夠了),回車繼續
④SSL 證書文件生成至 /home/your-domain_rsa 或 /home/your-domain_ecc 路徑下
執行后會生成如下文件:
ca.cer:中間證書
yourdomain.key:證書密鑰
yourdomain.cer:站點證書
fullchain.cer:站點證書+中間證書
坑1:運行腳本后會生成一串txt,暫停在此。然后去你的域名管理商那里,按照腳本提示添加記錄。最好嚴格按照這個步驟做,我第一次沒弄好,后面出了一些莫名其妙的問題,重新做多幾次會提示你申請次數過多(貌似限制5、6次/3小時)。
坑2:cer、key文件我是確定拉了下來,但 /home/your-domain_rsa 這個文件夾生成失敗,解決方法:刪除 acme_2.0.sh 最后兩行 rm -rf 命令,然后自己建立 /home/your-domain_rsa,自己把cer、key文件拷進去(前提是你很確定生成的cer、key文件沒問題)。
坑3:用這個腳本生成的證書是cer文件,用其他方法可能生成crt文件。如果你在其他教程看到crt,其實用法還是一樣,兩個文件相當於一個xls、一個xlsx。
nginx.conf配置:(加上后面幾行ssl開頭的語句,加在access_log前后、server節點之內)
server
{
listen 443 ssl http2;
server_name yourdomain.com;
…
ssl on;
ssl_certificate /home/yourdomain.com_rsa/yourdomain.com.cer;
ssl_certificate_key /home/yourdomain.com_rsa/yourdomain.com.key;
access_log /home/wwwlogs/access.log;
}
六、http跳轉https
這個不難,一開始沒做過會以為是在域名服務商設置跳轉的,其實還是用Nginx做內部重定向而已。
server
{
listen 80 default_server;
server_name yourdomain.com;
rewrite ^(.*)$ https://yourdomain.com permanent;
}
server
{
listen 443 ssl http2;
server_name yourdomain.com;
…
}
七、“噢,沒有這個文件”
用這一套流程下來的WordPress默認禁止文件夾掃描權限。主要體現在兩個方面:
1、WordPress后台--外觀--編輯,提示“噢,沒有這個文件”
2、沒有下載過的歷史主題
修復方法:
轉自:http://www.heminjie.com/wordpress/2149.html
1、用ssh登陸服務器,找到php.ini(lnmp默認的php配置文件在/usr/local/php/etc/目錄下)
2、用vi命令編輯php.ini
vi /usr/local/php/etc/php.ini
3、查找scandir,大概在385行左右,找到后刪除scandir,(注意后面的逗號也要一起刪除哦~)最后wq!保存。
4、重啟php或者整個lnmp服務使配置生效,再刷新下wp后台主題編輯頁面,已經OK了~
php重啟命令:service php-fpm restart
lnmp重啟命令:lnmp restart
暫時寫完,后續有新發現再補充……