云服務(wù)器使用WordPress搭建個(gè)人博客并綁定域名全記錄
一直在續(xù)費(fèi)云服務(wù)器,索性充分利用資源,復(fù)古一下,鼓搗個(gè)小博客記錄些東西。 現(xiàn)在大致已經(jīng)搭好博客了,那就先把這折騰了一整天的建站過程給記錄下。
關(guān)于服務(wù)器
前幾年購(gòu)入的Vultr的ECS,東京的相對(duì)性價(jià)比高一些,延遲和網(wǎng)速都很穩(wěn),現(xiàn)在(2019.1)還有3.5刀一個(gè)月的,非常實(shí)惠。

安裝 Apache2、MySQL、PHP
sudo apt-get install apache2
sudo apt-get install mysql-server mysql-client
測(cè)試一下Apache2是否成功安裝:瀏覽器訪問云服務(wù)器的IP,安裝成功的話會(huì)顯示Apache2的默認(rèn)頁面,It works。 安裝php7.0,并安裝apache的php擴(kuò)展,再安裝整合mysql和php的工具
sudo apt-get install php7.0
sudo apt-get install libapache2-mod-php7.0
sudo apt-get install php7.0-mysql
重啟一下Apache2和MySQL
sudo service apache2 restart
sudo service mysql restart
安裝 phpmyadmin 這是一個(gè)以PHP為基礎(chǔ),以Web-Base方式架構(gòu)在網(wǎng)站主機(jī)上的MySQL的數(shù)據(jù)庫(kù)管理工具。
sudo apt-get install phpmyadmin
開啟 apache 的 mod_rewrite,再重啟一次apache
sudo a2enmod rewrite
sudo service apache2 restart
先登錄mysql mysql -u root -p ,輸入密碼 首先創(chuàng)建名為“wordpressdb”數(shù)據(jù)庫(kù),然后查看創(chuàng)建的數(shù)據(jù)庫(kù)是否成功。
create database wordpressdb;
show databases;
看到圖中出現(xiàn)自己創(chuàng)建的數(shù)據(jù)庫(kù)。

給用戶服務(wù)權(quán)限,下面的wordpressuser改為安裝mysql時(shí)自己輸入的用戶名。
GRANT ALL PRIVILEGES ON wordpressdb.* TO wordpressuser@localhost;
FLUSH PRIVILEGES;
輸入 exit;退出mysql,并再次重啟服務(wù)。
sudo service apache2 restart
sudo service mysql restart
下載并配置WordPress
用wget從WordPress官方網(wǎng)站下載安裝包,放在 /var/www/html/ 目錄,然后解壓。 (最新版下載鏈接在 https://cn.wordpress.org/download/ 里面有)
cd /var/www/html/
sudo wget https://cn.wordpress.org/wordpress-5.0.3-zh_CN.zip
sudo tar zxf wordpress-4.9.4.tar.gz
在 /var/www/html/wordpress/wp-content/ 下創(chuàng)建uploads。 然后更改上傳目錄權(quán)限,不然之后博客上傳不了圖片。
sudo mkdir uploads
sudo chown -R www-data /var/www/html/wordpress
sudo chmod -R 755 /var/www/html/wordpress
sudo chown -R :www-data /var/www/html/wordpress/wp-content/uploads
配置wp-config-sample.php ,該文件在/var/www/html/wordpress/下
sudo vi wp-config-sample.php
修改方法如下圖所示:

瀏覽器訪問 http://服務(wù)器IP地址/wordpress ,如果安裝正常則進(jìn)入wordpress的安裝界面。 安裝好后的效果如圖:

到此建站完成。接下來申請(qǐng)域名并綁定服務(wù)器。
申請(qǐng)域名并配置DNS
通過比價(jià)網(wǎng)站可以先大致看一下想要的域名價(jià)格 https://www.domcomp.com/
看了一下知乎,大家推薦的域名供應(yīng)商有 NameSilo 、Namecheap、Porkbun、GoDaddy等,親測(cè)了一遍,發(fā)現(xiàn) NameSilo 用戶界面太丑;Namecheap 實(shí)際并不 cheap;最多人說的 GoDaddy 也偏貴但是支持支付寶,Porkbun 性價(jià)比高而且界面友好。 因?yàn)橛芯惩庵Ц兜男庞每ň筒豢紤] GoDaddy 了,直接在 Porkbun 上下單了一個(gè) .com 域名,首年不到 7刀,續(xù)費(fèi) 8.7刀。
值得一提的是支付時(shí)好幾張卡支付失敗,建行、農(nóng)行都不行,換了廣發(fā)的萬事達(dá)才支付成功,有點(diǎn)迷。 付款后主頁可以看到自己域名的各種詳情,然后要設(shè)置的是 DNS RECORDS

點(diǎn)擊Edit,添加兩個(gè)A記錄,分別是帶www和不帶的域名,ANSWER填自己的主機(jī)地址。

兩個(gè)NS填DNS提供商的,這里因?yàn)閂ultr自帶了免費(fèi)的DNS服務(wù),直接填上去即可,具體的DNS地址可在Vultr的設(shè)置頁里找。 下圖就是設(shè)置頁,可以看到底下有兩條DNS地址,填到 Porkbun 里,然后還要在 Vultr 里 Add Domain,綁定服務(wù)器到域名。

兩邊都操作完成后,靜候幾分鐘,然后訪問一下自己的域名,應(yīng)該就出來了。
常見問題
在儀表盤的設(shè)置中不小心更改了wordpress地址后回不到后臺(tái)
在建站過程中,如果改動(dòng)了 wordpress地址或站點(diǎn)地址,就回不到后臺(tái)了。
解決方法:網(wǎng)站首頁在wordpress目錄下的index.php中的require這行的內(nèi)容。
下圖是wordpress下index.php的require所在行的內(nèi)容。

最開始wordpress url是: 主機(jī)ip/wordpress。 它會(huì)自動(dòng)去找index.php,然后就通過index.php里面的內(nèi)容加載wordpress環(huán)境,更改了url后,就不能自動(dòng)去找index.php了。此時(shí)后臺(tái)也無法登錄。解決這個(gè)問題,直接進(jìn)數(shù)據(jù)庫(kù)修改相關(guān)數(shù)據(jù)即可。操作如下。
mysql -u root -p //然后輸入密碼
show databases; //顯示所有數(shù)據(jù)庫(kù)
use wordpressdb; //選中你自己網(wǎng)站對(duì)應(yīng)的數(shù)據(jù)庫(kù)。
show tables; //顯示該數(shù)據(jù)庫(kù)所有表格。
select * from wp_options where 1=1 limit 10; //查看數(shù)據(jù)庫(kù)前10條記錄
update wp\_options set option\_value='http://服務(wù)器ip(或域名)/wordpress' where option_name='siteurl';//(如果home也改了就也改回來)
update wp\_options set option\_value='http://服務(wù)器ip(或域名)/wordpress' where option_name='home';
其實(shí)就是改變了wordpress url ,則wp_options表中的siteurl的值變化了,只要把它在修改過來就行。
使用服務(wù)器IP(或域名)根地址直接訪問網(wǎng)站首頁
此文章的建站方法是把所有東西都放在wordpress目錄下,因此建完后,訪問網(wǎng)站的網(wǎng)址為:主機(jī)IP/wordpresss。
通常情況下,我們會(huì)買一個(gè)域名與云主機(jī)IP綁定,輸入IP地址只能訪問根目錄。 即/var/www/html,但是無法訪問其下面的子目錄。
以下將給出解決方案。如果使主機(jī)IP直接定位到網(wǎng)站首頁。
第一種解決方式是把wordpress的內(nèi)容直接都弄到根目錄中,這是不提倡的,會(huì)使根目錄變得雜亂。通常推薦第二種方案。
第二種方案操作如下: 登錄后臺(tái),打開 設(shè)置→常規(guī),修改站點(diǎn)地址。
WordPress地址是本體存放的地址,按本文安裝的話就不用改動(dòng)了。 站點(diǎn)地址是瀏覽器訪問的地址,改為 “http://服務(wù)器IP(或域名)” 的形式,如下圖即可。

同時(shí),打開 設(shè)置→固定鏈接,把固定鏈接修改成如下形式:(去掉中間的/wordpress/)

至于文章后綴名,網(wǎng)上有關(guān)WordPress永久鏈接設(shè)置的介紹眾多,普遍認(rèn)為 /%postname%.html 是最佳的自定義永久鏈接形式。
這種形式將顯示為:http://你的域名/日志標(biāo)題.html,簡(jiǎn)單明了,有利于SEO。但當(dāng)你的日志標(biāo)題是中文時(shí),文章標(biāo)題以中文形式出現(xiàn),看上去很不符合標(biāo)準(zhǔn),或者可能會(huì)出現(xiàn)如:%64%b3%e8%ae%ar%e6%ba%a7%e5%9.html 類似亂碼的顯示。因此需要在編輯文章時(shí),標(biāo)題下面固定鏈接項(xiàng),點(diǎn)擊編輯,用拼音或英文輸入文章標(biāo)題。

然后把wordpress目錄下的index.php 和 .htaccess文件復(fù)制一份到根目錄下,.htaccess 是隱藏文件,可以使用ls -all。將其顯示出來。注意是復(fù)制文件,原來目錄下還存在。
cd /var/www/html/wordpress/
cp index.php /var/www/html/
cp .htaccess /var/www/html/
然后使用vim修改.htaccess文件的內(nèi)容為下圖所示。(默認(rèn)文件如果就是如此則跳過該步驟)

修改index.php文件,因?yàn)閕ndex.php文件是wordpress下index.php的復(fù)制品,因此文件內(nèi)部的require那一行的值當(dāng)對(duì)于當(dāng)前目錄,是不正確的。同樣使用vim編輯該文件,把require那一行路徑,修改成下圖那樣。

此時(shí)再輸入IP,看到還是It works界面,那是因?yàn)榘惭bapache時(shí),我們看到的It works界面其實(shí)是根目錄下的index.html。當(dāng)index.html 和 index.php同時(shí)存在時(shí),默認(rèn)還是打開index.html,所以應(yīng)該把index.html移出該目錄。我們把它移出到其他目錄就行。
然后可能會(huì)產(chǎn)生下一個(gè)問題,設(shè)置固定鏈接后,文章頁會(huì)404
解決方法如下:
sudo vi /etc/apache2/apache2.conf
把 AllowOverride None 改為 AllowOverride ALL


注意有兩處要改,然后操作一下
sudo a2enmod rewrite
sudo /etc/init.d/apache2 restar
刷新一下應(yīng)該就能正常打開文章了。
主頁樣式修改


頁尾和功能模塊里的鏈接如果覺得礙眼,可以去除。
刪除頁尾“自豪地使用WordPress”字樣


如果是通過函數(shù)生成頁尾的主題,一般在模板函數(shù)那里修改,查找 "Proudly powered by" 的字樣刪掉就ok。
<a href=“<?php echo esc\_url( \_\_( ‘http://wordpress.org/’, ‘twentyeleven’ )); ?>” title=“<?php esc\_attr\_e(‘SemanticPersonalPublishing Platform’, ‘twentyeleven’ ); ?>” rel=“generator”><?php printf( __( ‘Proudly powered by%s’,‘twentyeleven’ ), ‘WordPress’ ); ?></a>
刪除功能小工具里的“文章RSS”、“評(píng)論RSS”、“WordPress.org”
打開組件文件夾:wp-include/widgets/class-wp-widget-meta.php 找到代碼段刪除即可。
<!\-\- 屏蔽 RSS 功能
<li><a href="<?php echo esc\_url( get\_bloginfo( 'rss2\_url' )); ?>"><?php \_e('Entries <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li>
<li><a href="<?php echo esc\_url( get\_bloginfo( 'comments\_rss2\_url' )); ?>"><?php _e('Comments <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li>
-->