Linux Geek

在DigitalOcean上搭建Wordpress记

2018-02-25  本文已影响115人  治部少辅

这是一篇“事后诸葛亮”式的文章,或者说一系列文章,来记录我折腾了一个下午的Wordpress搭建过程。虽然现在博客不流行了,不过仍不失为一种有效的记录平台。其实,我之前一直在简书上写一点东西,为什么要折腾下来自己搭建一个平台呢?主要是一下几个原因:

  1. 简书上缺少标签功能, 这使得文章多了以后难以规整和索引。尤其是写技术类文章的时候,会出现大量跨不同Topic的文章,此时用Tag来组织,就要比用文集组织的方式灵活的多。
  2. 简书作为一个平台,有起有落,自己搭建的博客平台,数据在自己手里,能“万古长青”。
  3. 自由度。生活在中国,大家都懂,有些话题不能说,有些问题不能问。即便我党未必在意的内容,各个平台也会自觉地自我审查。把自己搭建的博客平台放在国外,就可以省去这些烦恼。

我常年用DigitalOcean家的服务器来搭梯子,正好CPU占用率极低,恰好可以用来搭建Wordpress服务器。

为什么选择DigitalOcean(DO)

我用的VPS也不是太多,之所以开始选中了DigitalOcean这个平台是出于以下几点原因:

  1. 性价比较高:我之前的梯子一直是选用的$5一个月价位的,这个价位下,有1个CPU内核,512MB的内存(最近升级到了1G内存,价格还是$5),以及,重点是,有1TB的Transfer,以及不受限制的带宽(按照DO家的说法,其每个机器以1Gbps带宽连接到公网出口,而公网出口以10Gbps带宽连接到主干网,DO自己的并不会主动限制网速),经过两年的使用,大多数情况下百兆以上的带宽是没有问题的(不作为梯子必经还是受到要过海底光缆翻山越岭的限制)。
  2. 有不少优惠:拥有教育邮箱可以获得$50的代金券,以及其Space服务可以免费试用两个月。
    缺点也是有,就是有很多人拿DO的服务器去当爬虫,导致DO的IP基本上都被Google Scholar封禁了,这对做学术的人而言还是很伤的。不过好在Google Scholar的镜像站点也不少,也不是大问题。再者,如果是搭建博客平台,这个问题就不太要紧了。

为什么是Wordpress

最近时间紧张,没时间折腾,之后的职业道路,也并不打算选择前端这条路线,所以就选择了最为成熟的平台了。这次咬了牙买了一个很不错的付费主题,可以不用代码并且达到很高的设计自由度,之后这个主题用熟了再推荐给大家。

起手搭建

Prerequisite

  1. 注册DO账户,并且创建一个Droplet。至于Droplet的价位和地址,丰俭由己。我使用的操作系统是Ubunut 16.04。当然DO家也提供了Wordpress的一键式APP,嫌麻烦的可以试试这个。由于我是在已有的梯子服务器上搭建博客,就只能自己动手了。
  2. 准备LAMP环境。不会的参考这个教程:在Ubuntu 16.04上安装LAMP

STEP 1:准备数据库

以root账户登入Mysql数据库:

$ mysql -u root -p

中间会需要你输入Mysql的root账户的密码(注意不是服务器的root账户的密码)。
然后为wordpress创建数据库:

mysql> create database wordpress default character set utf8 collate utf8_unicode_ci;

注意Mysql命令要以分号结尾。
然后创建一个数据库用户来接入数据库

myslq> grant all on wordpress.* to 'wordpressuser'@'localhost' identified by 'use_your_password';

然后Flush权限更改到数据库以应用这些更改,并退出数据库。

mysql> flush privileges;
myslq> exit;

STEP 2:安装必要的PHP扩展

$ sudo apt-get update
$ sudo apt-get install php-curl php-gd php-mbstring php-mcrypt php-xml php-xmlrpc

然后重启Apache

sudo systemctl restart apache2

STEP 3:调整Apache配置,允许.htaccess文件覆写(override)和重写(rewrite)

我们还需要对Apache的配置稍作修改。目前,.htaccess文件的使用还是被禁用的,而Wordpress及其插件需要应用到这一文件来实现一些功能。

启用.htaccess覆写

打开Apache主配置文件

$ sudo vim /etc/apache2/apache2.conf

在这一文件底部,添加如下内容:

<Directory /var/www/html>
    AllowOverride All
</Directory>

保存并退出。

启动重写模块

运行如下命令以使用Wordpress的永久链接功能

$ sudo a2enmod rewrite

应用更改

首先运行下面这个命令来确保没有语法错误:

$ sudo apache2ctl configtest

如果出现了“AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message”这个Warning,可以通过在/etc/apache2/apache2.conf文件中设置ServerName来消除。
然后重启Apache

$ sudo systemctl restart apache2

STEP 4:下载Wordpress

我们从官网下载最新的Wordpress并放置到临时的文件夹:

$ cd /tmp
$ curl -O https://wordpress.org/latest.tar.gz

解压缩改文件

$ tar xzvf latest.tar.gz

在我们将解压后的文件移动到文档根目录前,我们需要手动创建.htaccess文件,并正确设置其权限:

$ touch /tmp/wordpress/.htaccess
$ chmod 660 /tmp/wordpress/.htaccess

然后从模板配置文件中创建Wordpress实际使用的配置文件:

cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php

我们还需要创建好upgrade文件夹,这样Wordpres在下载更新文件时就不会遭遇权限问题:

$ mkdir /tmp/wordpress/wp-content/upgrade

现在我们可以把整个Wordpress的内容迁移到文档根目录上了。在移动过程中带上-a标签来确保各种权限标识保持不变。

$ sudo cp -a /tmp/wordpress/. /var/www/html

STEP 5:配置Wordpress文件夹

调整文件夹的所有者和权限

Apache是由www-data这个用户来运行的,为了正常访问Wordpress文件, 我们需要调整Wordpress文件夹下各个文件的权限。同时,又为了限制www-data,使其不至于做出非法的更改,我们将Wordpress文件夹下的内容设置为另一非root用户,并且为www-data这一用户组下的用户添加合适的访问权限。

$ sudo chown -R sammy:www-data /var/www/html

接下来设置用户组权限

$ sudo find /var/www/html -type d -exec chmod g+s {} \;
$ sudo chmod g+w /var/www/html/wp-content
$ sudo chmod -R g+w /var/www/html/wp-content/themes
$ sudo chmod -R g+w /var/www/html/wp-content/plugins

设置Wordpress配置文件

首先要设置的是一系列安全相关的秘钥。Wordpress提供了一个自动生成这些秘钥的工具:

$ curl -s https://api.wordpress.org/secure-key/1.1/salt/

其输出类似下面列出的:

define('AUTH_KEY',         '1jl/vqfs<XhdXoAPz9 DO NOT COPY THESE VALUES c_j{iwqD^<+c9.k<J@4H');
define('SECURE_AUTH_KEY',  'E2N-h2]Dcvp+aS/p7X DO NOT COPY THESE VALUES {Ka(f;rv?Pxf})CgLi-3');
define('LOGGED_IN_KEY',    'W(50,{W^,OPB%PB<JF DO NOT COPY THESE VALUES 2;y&,2m%3]R6DUth[;88');
define('NONCE_KEY',        'll,4UC)7ua+8<!4VM+ DO NOT COPY THESE VALUES #`DXF+[$atzM7 o^-C7g');
define('AUTH_SALT',        'koMrurzOA+|L_lG}kf DO NOT COPY THESE VALUES  07VC*Lj*lD&?3w!BT#-');
define('SECURE_AUTH_SALT', 'p32*p,]z%LZ+pAu:VY DO NOT COPY THESE VALUES C-?y+K0DK_+F|0h{!_xY');
define('LOGGED_IN_SALT',   'i^/G2W7!-1H2OQ+t$3 DO NOT COPY THESE VALUES t6**bRVFSD[Hi])-qS`|');
define('NONCE_SALT',       'Q6]U:K?j4L%Z]}h^q7 DO NOT COPY THESE VALUES 1% ^qUswWgn+6&xqHN&%');

复制这些内容(注意一定要自己运行命令生成秘钥,而不是复制上面的内容),然后打开配置文件

$ vim /var/www/html/wp-config.php

找到下面的内容,然后替换之:

define('AUTH_KEY',         'put your unique phrase here');
define('SECURE_AUTH_KEY',  'put your unique phrase here');
define('LOGGED_IN_KEY',    'put your unique phrase here');
define('NONCE_KEY',        'put your unique phrase here');
define('AUTH_SALT',        'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT',   'put your unique phrase here');
define('NONCE_SALT',       'put your unique phrase here');

之后我们需要设置数据库相关的配置

define('DB_NAME', 'wordpress');

/** MySQL database username */
define('DB_USER', 'wordpressuser');

/** MySQL database password */
define('DB_PASSWORD', 'use_your_password');

同时,之前我们给予了www-data组在wp-content及其下两个文件夹的写入权限,我们可以设置文件系统的访问方法为”direct”来使其直接写入相关文件。在上面数据库设置内容的下方添加一行:

define('FS_METHOD', 'direct');

STEP 6: 完成安装

此时在你的电脑上打开浏览器,访问

http://server_domain_or_IP

就可以通过网页界面访问并配置Wordpress。

升级

运行Apache的www-data用户并不拥有Wordpress文件夹,所以在升级时会出现权限问题。这是需要通过

$ sudo chown -R www-data /var/www/html

来给予其足够的权限。在升级完成后,通过

$ sudo chown -R sammy /var/www/html

来恢复现场。

进一步阅读:

上一篇下一篇

猜你喜欢

热点阅读