Ubuntu18.10 上搭建WordPress博客

[toc]

一、背景

现在(2019年2月22日)大家看到的我的博客是基于Ubuntu 14.04搭建的,也就是说系统出来已经五年了,所以很多工具还是比较老的,于是我尝试着将系统做一次升级。升级过程中,提示我某些工具版本可能不兼容,等等,我都没怎么在意,结果升完级一看,博客无法正常打开了。只好将系统还原回去,另作打算。后来一想,即使能解决成功,但是肯定会出现一些小问题的,对于我这种有点小洁癖的人,心里自然是不太爽的。干脆基于Ubuntu 18.10重新搭建博客,再将数据迁移过来。一来可以完美升级一下系统;二来顺便记录一下博客搭建的步骤和方法,分享给更多人;再次顺便实践一下博客数据的备份和恢复,以防万一哪天博客打不开,我可以以最快速度还原一个镜像出来。博客的迁移涉及到很多数据,比如博客文章的数据,网页站点的设置,还有一些小功能,比如安装SSL证书,添加google索引,等等。所以,本次博客的迁移将按照以下步骤来完成,每个步骤分别为一篇文章。

  1. 新系统上博客的搭建
  2. 博客数据备份、迁移和还原
  3. 个人博客免费申请并安装SSL证书
  4. 一些其他的小设置

简单说一下我的博客框架:我的博客是以WordPress为模板、以apache作为Web服务器、以phpmyadmin为数据库管理工具搭建出来的。当然,安装wordpress最权威的教程自然是官方的博客。但是,安装不可避免的会碰到各种各样的问题。由于环境不一样,每个人遇到问题自然不一样。所以本文也会详细节录下来我这次安装时遇到的问题,以供大家参考。

二、环境

系统版本: Ubuntu 18.10
Kernel版本: 4.18.0-10-generic

以上是我本次搭建博客的服务器信息。该服务器是VPS,它是按照如何搭建自己的虚拟专用服务器上记录的方法创建出来的。注意:操作系统的版本是ubuntu 18.10,不同的操作系统,后续安装的软件方法会略有不同,务必区分清楚系统版本。

三、必备软件安装

以下是官方博客中提到的安装WordPress基本软件需求。

  • PHP 7.3 or greater
  • MySQL 5.6 or greater OR MariaDB 10.0 or greater
  • Nginx or Apache with mod_rewrite module
  • HTTPS support

下面我们来一一安装。安装时我参考了参考阅读1

3.1 安装Web服务器

apache2是一个被广泛使用的Web服务器,它的作用就是相应浏览器的需求,将用户需要的页面提供给浏览器。类似的nginx也是一种Web服务器,我们在前面搭建Gerrit的时候已经遇到过了。这里使用apache2来最为我们本次搭建博客的Web服务器。其安装命令如下:

sudo apt update
sudo apt install apache2

安装完成之后,可以打开浏览器,输入以下网址来测试apache2是否安装成功:

http://your_server_ip

如果从浏览器能看到下图,则表示安装成功。

apache2_test

3.2 安装MySQL

博客的数据库使用MySQL来存储和操作。其安装方法如下:

sudo apt install mysql-server

3.3 安装PHP

由于WordPress是使用php来编写的博客框架,所以我们需要安装php相关的套件,以支持WordPress的运行。具体安装命令如下:

sudo apt install php libapache2-mod-php php-mysql

3.4 安装phpMyadmin

phpMyadmin是一个基于Web页面管理MySQL的工具,在其上面可以方便的建立、修改、删除数据库。其安装命令如下:

sudo apt install phpmyadmin php-mbstring php-gettext

在安装过程中会弹出来下面窗口:

phpmyadmin-install1

此时,默认会选中apache2,应该按下空格键,apache2前面出现*,即选定apache2,然后按TAB,再按下回车键。这个步骤最终会在/etc/apache2/config-enable目录下创建phpmyadmin.conf文件。

接下来会弹出来下面窗口:

phpmyadmin-install2

询问是否使用dbconfig-common来设置数据库,这里选择.

然后,会弹出下面的窗口,来设置数据库的密码:

phpmyadmin-install3

之后会再次弹出窗口确认密码:

phpmyadmin-install4

等待程序安装完成之后,使用下面的命令使能mbstring这个php扩展插件。

sudo phpenmod mbstring

然后使用下面的命令重启apache服务:

sudo systemctl restart apache2

这时,phpMyAdmin已经成功安装了。在浏览器中输入

http://your_server_ip/phpmyadmin/

可以看到下面的界面,使用账号:phpmyadmin和刚才输入的密码即可登陆。

phpmyadmin-login

四、WordPress安装

下面我们来安装WordPress

4.1 下载wordpress

wget https://wordpress.org/latest.tar.gz

4.2 解压

由于在访问网站时,apache默认读取的是/var/www/html下的内容,因此,我们只需要把WordPress里解压出来的内容替换到这个目录下即可。注意,在安装apache时,默认在/var/www/html文件下生成了一个名为index.html的网页。而apache默认会优先读取它,所以在复制WordPress下的内容之前,应该先删除掉该文件.

sudo rm /var/www/html/index.html
tar zxvf latest.tar.gz
sudo cp -rf wordpress/* /var/www/html
sudo chown -R www-data:www-data /var/www

完成上述操作后,博客已经部署完成,登录博客http://your_server_ip/就可以看到下图:

blog-deploy

可以看出来第一次登录默认跳转到设置界面。选择你的博客后台默认语言(我选择的是简体中文),然后继续。则会看到下面的页面。

blog-deploy2

这里是要填写博客的数据库等信息。

4.3 添加数据库及相关权限。

在设置完phpMyAdmin之后,我们可以使用用户名为phpmyadmin来登录数据库后台,但是这个用户仅具有设置phpmyadmin数据库的相关操作的权限,并非我们创建博客使用的数据库的权限。因此,我们最好是使用root账号或者创建一个新用户来专门管理博客使用的数据库。

在运行高于MySQL 5.7版本以上的Ubuntu系统上,root用户被设置成默认使用auth_socket而不是使用密码登录。这虽然在某些情况下更安全和更实用,但是对于使用外部程序管理数据库(比如phpMyAdmin)的软件来讲,却变得非常复杂。所以,为了能够使用root账号登录MySQL,我们需要把root用户的认证方式从auth_socket切换成mysql_native_password

4.3.1 查看当前认证方式

使用下列命令查看

sudo mysql

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

查看结果如下图所示:

mysql-show

上图可看出,当前root用户的plugin使用的是auth_socket

4.3.2 设置root用户密码并且换认证方式

使用下面命令修改认证方式,并查看是否修改成功:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
mysql> FLUSH PRIVILEGES;
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

注:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'中的passwordroot用户的密码,可根据自己需要设置。

mysql-setting

上图可以看出,已经修改成功。此时,我们就可以使用root账户可刚刚设置的密码来登录数据库的后台了。在浏览器中输入http://your_server_ip/phpmyadmin/,登陆成功后,可以看到下面的页面:

phpmyadmin-login-success

我们注意到左侧列表中的数据库比之前我们使用phpmyadmin账户登录后看到的数据库多了几个。这里可以看到使用命令行安装的phpMyAdmin版本为4.6.6

4.4 为博客创建数据库

1) 使用root登录phpMyAdmin,点击左上角的新建

2) 输入数据库的名字(比如wordpress_DB),点击创建

create-blog-DB

4.5 继续完成安装博客

  1. 填写数据库等信息
    还记我们4.2中,我们打开博客后显示的管理页面吗?点击现在就开始!,再打开的页面中输入4.4中我们填的数据库名字。账户为4.3.2中提到的root,密码为当时设置的密码。后面两项默认即可。点击提交。GO!

blog-deploy3

点击现在安装

  1. 填写博客信息

blog-infor-setting

“站点标题”、“用户名”和“密码”可以自己随意设置,“邮箱”填写自己可用的邮箱。点击安装WordPress

  1. blog-deploy-success

点击登录

  1. blog-manage-deploy

使用刚才创建的博客后台账号密码登录

  1. 博客后台预览

blog-manage-login-success

恭喜你,你的博客已经搭建OK!

五、遇到的问题

5.1 数据库导入页面检测到错误

现象:在使用root账户登录到phpMyAdmin后,我们点导入按钮,会发现以下报错:

Warning in ./libraries/plugin_interface.lib.php#551
 count(): Parameter must be an array or an object that implements Countable

phpmyadmin-issue-fix

经过google发现类似的问题需要修改phpMyAdmin的源码。这种问题显然是软件的bug,因此我觉得可以通过更新较新的版本来解决。

解决办法:更新phpMyAdmin版本
由于我们之前是在update源之后通过命令安装的phpMyAdmin,在不修改源的情况下,是没有办法通过命令更新到较新版本的。所以这里需要手动下载安装phpmyadmin版本。注意,重新安装不能卸载之前的版本!
1. 使用命令sudo rm -rf /usr/share/phpmyadmin删掉phpmyadmin的安装目录(一般是在/usr/share下)
2. 打开phpMyAdmin官网,查找最新版本的下载链接,使用wget下载最新安装包。

wget -P ~/Downloads/ https://files.phpmyadmin.net/phpMyAdmin/4.8.5/phpMyAdmin-4.8.5-all-languages.zip
  1. 使用下列命令解压上述文件,并将其复制到/usr/share下。
cd ~/Downloads 
unzip phpMyAdmin-4.8.5-all-languages.zip
sudo cp -rf phpMyAdmin-4.8.5-all-languages /usr/share/phpmyadmin
sudo mv /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php

执行完上述操作后,打开phpmyadmin,原来的错误果然没有了。但是,如果你能够看到以下两个小错误的话,

1. the configuration file now needs a secret passphrase (blowfish_secret). phpmyadmin
2. The $cfg['TempDir'] (./tmp/) is not accessible. phpMyAdmin is not able to cache templates and will be slow because of this.

请继续往下做。

  1. 打开网站,复制它帮我们生成的Blowfish Secret,将其填写到/usr/share/phpmyadmin/config.inc.php里的$cfg['blowfish_secret']对应的值。这样可以解决第一个错误。

  2. 为phpMyAdmin创建运行的临时目录可以解决第二个错误。命令如下:

    sudo mkdir /usr/share/phpmyadmin/tmp
    sudo chown -R www-data:www-data /usr/share/phpmyadmin
    

按照上述设置修改完成之后,在进入phpmyadmin首页我们会发现,其版本变成了4.8.5.

六、参考文章

  1. 如何在Ubuntu 18.04上安装Linux,Apache,MySQL,PHP(LAMP)
  2. How To Install and Secure phpMyAdmin on Ubuntu 18.04
  3. how to upgrade phpmyadmin revisited

“Ubuntu18.10 上搭建WordPress博客”的7个回复

  1. 请问这个配置下应该怎么修改maximum upload file size。

    我尝试了网上所有办法都没成功,php.ini等等。试了俩小时了,无论怎么改,WORDPRESS的限制都是2M

    1. 和默认上传文件大小相关的值有三个:memory_limit、post_max_size和upload_max_filesize。这三个值的大小依次应该是:
      memory_limit > post_max_size > upload_max_filesize

      你可以确认一下memory_limit,post_max_size这两个值是不是被限制成2M了,如果是的话也要将它们改大一点,比如20M。

      1. 感谢,已经搞定了。
        浪费那么多时间主要原因是懒得查phpinfo,自以为知道默认php.ini的位置。今天先查了info才发现实际加载的php.ini在另一个目录

发表回复

您的电子邮箱地址不会被公开。