网站迁移记

Aengus Sun 952 2019-05-11

前言

PHP是世界上最好的语言

在2018年11月首次有了自己的网站,当时是托管到GitHub上的,采用Jekyll生成的静态页面,经过半年多的修修改改,网站也大体符合我的要求,不过后来看别人的博客时,看到了一些很美观的博客,而且有着后台管理界面,就萌生了买台服务器做网站的想法。

有了想法很快就动手了,买服务器(系统CentOS7.0),网站备案(备案是真的慢),同时开始挑选博客系统。原本在B站的一个UP主那看到了一款用Java写的博客系统halo,比较美观,于是就采用了halo。但是在使用过程中发现了不少问题。一个是博客部署有点麻烦(没有采用Docker),而且服务启动后关闭,再启动后就失败,再按照安装步骤重新安装就需要重新设置了。可能是系统环境或设置的原因,在本机IDEA上运行并没有这些问题,但还有一个问题就是喜欢的主题不支持LaTeX公式,就放弃了这个系统。最终选择了WordPress。

在安装WordPress时也遇到了各种各样的问题,不过最终都解决了,并且网站基本符合了我的要求。

!此篇博客的所有操作都是在root权限下操作的

安装数据库

无论是采用何种系统,数据库基本上都是需要的,我们这里用的是MySQL。

直接通过命令yum install mysql安装是无法安装完整的数据库的,还需要运行命令

yum install -y mysql-server mysql-devel

mysql-servermysql-devel都安装上去,然后运行命令

systemctl start mysql

运行MySQL,首次运行可能需要设置密码,设置好即可。

之后我们可以用以下命令登录数据库系统:

mysql -u root -p

然后输入密码即可,这里-u后面的root代表用户名,也可以是自己设置的用户名,-p代表我们要用密码登录。

此外还有其他命令:

systemctl status mysql     // 查看mysql服务状态
systemctl stop mysql       // 停止服务
systemctl restart mysql    // 重启服务

安装Apache

Apache是一个Web服务器,我们将WordPress放在其中,就可以直接访问主机的IP地址来访问博客。

直接通过命令yum install httpd即可安装,httpd是Apache的服务名称。然后在浏览器中输入主机IP地址访问(确保80端口已经打开),如果出现“Testing 123...”表示Apache服务安装成功,同样可以通过上面提到的systemctl命令实现对httpd服务状态的管理。

安装PHP

如果主题对PHP版本没有要求或者要求比较低的话,是可以通过命令

yum install php

安装PHP的,但是这样默认安装的版本是5.6,如果主题要求7.0以上的版本,则需要我们自己安装。

有篇博客说的比较详细,可以参照:CentOS7.0安装PHP7.2,注意在操作之前要卸载掉自己安装的PHP版本,否则可能会发生冲突。

安装WordPress

在安装之前首先要创建一个数据库,mysql -u root -p登录后,用以下代码创建数据库:

CREATE DATABASE wordpress;    // 注意一定要有分号,数据库名称wordpress可以用其他名称

WordPress的安装既可以现在电脑上下载下来,修改之后上传到服务器,也可以直接在服务器上下载修改,这里以后者为例:

首先下载WordPress

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

下载下来后是一个压缩包,用命令tar -zxvf latest.tar.gz解压到当前文件夹,然后切换到解压后的文件夹内,重命名wp-config.sample.php文件为wp-config.php:

mv wp-config-sample.php wp-config.php

然后打开此文件:

vim wp-config.php

以下贴出来的是需要修改的:

/** WordPress数据库的名称 */
define('DB_NAME', 'wordpress');

/** MySQL数据库用户名 */
define('DB_USER', 'root');

/** MySQL数据库密码 */
define('DB_PASSWORD', '密码');

/** MySQL主机 */
define('DB_HOST', 'localhost');

/** 创建数据表时默认的文字编码 */
define('DB_CHARSET', 'utf8');

/** 数据库整理类型。如不确定请勿更改 */
define('DB_COLLATE', '');

/**#@+
 * 身份认证密钥与盐。
 *
 * 修改为任意独一无二的字串!
 * 或者直接访问{@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org密钥生成服务}
 * 任何修改都会导致所有cookies失效,所有用户将必须重新登录。
 *
 * @since 2.6.0
 */
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');

保存并退出。

最重要的一步,是将wordpress文件夹中移动到/var/www/html目录下,注意这个文件夹是Apache Web服务器的文件夹,如果没有采用Web服务器或者其他服务器的可能要放在其他文件夹。如果直接将wordpress文件夹移动到html文件夹内,则访问 “主机IP地址/wordpress”;如果将wordpress文件夹内的所有文件移动到了html目录下,则直接访问 “主机IP地址”。访问后首先出现的是设置界面,设置后就可以管理自己的博客了。

WordPress无法上传文件

此问题多半是权限不够的原因,网上很多解决方案是修改为777或775权限,有些是将文件夹设置为www用户权限,但是都没能解决问题,最终是通过以下命令解决的:

chown -R apache:apache /var/www/html/*

WordPress修改域名

首先直接在WordPress 设置——常规 下修改站点地址和WordPress地址,注意要包含域名前的http://或https://,但是保存设置后刷新会发现打不开了,我们还需要对数据库进行更新。登录数据库后:

USE wordpress;

UPDATE wp_options SET option_value = replace( option_value,'http://www.old.com', 'http://www.new.com') WHERE option_name = 'home' OR option_name = 'siteurl';

UPDATE wp_posts SET post_content = replace( post_content, 'http://www.old.com', 'http://www.new.com');

UPDATE wp_posts SET guid = replace( guid, 'http://www.old.com', 'http://www.new.com'); 

其中http://www.old.com是旧域名,http://www.new.com是新域名。

WordPress图片裁剪失败

这是因为缺少PHP GD库所致,直接运行安装命令后重启Apache服务即可:

yum install php-gd
systemctl restart httpd

Jekyll部署到服务器

顺便说一下将Jekyll部署到服务器上的步骤。

在部署前要安装Ruby语言,但是yum install ruby安装的版本太低,不能使用Jekyll,不过网上已经给出了很多安装高版本Ruby的方法(centos7/rhel7安装较高版本ruby2.2/2.3/2.4+),这里不再赘述,如果采用编译安装的话编译过程中可能会出现错误,比如g++缺失,提示什么就安装什么即可。

安装完之后运行命令gem install jekyll-paginate安装插件,然后切换到Jekyll博客的根目录下,运行以下命令即可:

jekyll s --host 0.0.0.0

然后直接访问 “主机IP地址:4000” 就可以访问了(4000端口要在防火墙中开启),由于浏览器默认访问的都是80端口,所以想直接访问IP地址就访问Jekyll博客还需要修改端口。注意80端口只能给一个服务用。

参考链接

Linux服务器安装MYSQL数据库

WordPress 提示"在裁剪您的图像时发生了错误"解决方案

【wordpress】wordpress更换域名

[在VPS上安装Jekyll,搭建自己的静态博客](