脚本化搬家过程

搬家当然不是真的搬家。

建立这个博客是希望能够做一些长久的记录,但因为比较喜欢折腾,所以总是会出现各种各样的状况,有些状况实在解决不了了,整个主机就必须删掉重建。

从开通一个 VPS 到一个还算满意的博客上线可能需要耗费一整天的时间,虽然随着熟练度上升耗费的时间越来越短,重建的频率也越来越低,但整个过程仍旧会相当繁琐,有时还不得不因为同一个问题无数次重复的搜索解决方案,好在还有 Shell 脚本可以将这个过程缩短,于是在数十次的重建之后终于也形成了一些我自己的脚本,虽然粗鄙简陋,但毕竟是自己心血,记录下来备忘。

环境的搭建

脚本地址:set_system.sh

这个脚本有五个函数

  • 第一个函数更新系统并设置了 1G 大小的 SWAP 分区以弥补内存不足;
  • 第二个函数生成4个随机字符串,第1个字符串将作为 Mysql 数据库 root 账号密码,后面的3个字符串则分别作为后面安装 WordPress 的数据库名称/数据库用户名及密码,4个字符串会保存在脚本相同目录下的 mysql.txt 文件中;
  • 第三个函数采用 apt 包管理方式安装了 Apache/PHP/Mysql ;
  • 第四个函数新建一个 Mysql 数据库并设置好权限,名称和密码均由函数1生成;
  • 第五个函数安装了其它一些可以通过包管理方式安装的常用的或者后续需要的软件。

WordPress安装

脚本地址:install_wordpress.sh

这个脚本的主要功能是生成了一个 WordPress 的配置文件。

  • 首先是读取 mysql.txt (由第一个脚本生成)文件中的数据库名/用户名/密码并写入配置文件;
  • 然后进行了一些个性化的设置:1)关闭了自动保存文章版本;2)对 https 进行了支持;3)分离了的静态内容;
  • 再然后有一些简单的安全设置: 1)按照官方文档加盐;2)将生成的 wp-config.php 文件放在主程序的上级目录中;
  • 最后将最新版的 WP 程序下载到默认的网站主目录中。

这个脚本也可以作为自动升级 wordpress 主程序的脚本。

动静分离

脚本地址:install_nginx.sh

Apache 作为服务器基本上是够用的,但有些比较新潮的功能就显得没有那么灵活,支持文档也没那么多,所以安装个 Nginx 放在 Apache 的前端就比较有必要,这里就是个编译安装 nginx 的脚本,添加的模块和功能如下:

  • Google 出品的 pagespeed 模块,以服务器端性能换访问速度,优化的效果立竿见影;
  • 添加 SSL / http2 / ipv6 / http_sub_module 等支持模块。

数据备份

脚本地址:install_gsutil.sh & backup_db_and_files.sh

如果搬家是一种常态,快速备份并恢复各种配置文件以及数据文件就相当必要,思路很简单:1)将数据库导出和各种需要备份的文件放在一起打包;2)备份到云端。

云端备份选用 Google Cloud Storage(GCS),主要因为两个原因:1)几乎免费;2)备份工具好用。

  • 脚本 install_gsutil.sh 安装 GCS 的官方工具 gsutil ,可以像操作本地目录一样操作云端,非常方便;
  • 脚本 backup_db_and_files.sh 完成了数据及文件的本地打包备份并同步到云端,备份文件保留了最近3天的版本(每天仅保留当天最新的备份版本),备份过程需要用到上面的脚本1生成的数据库信息文件以及另外一个纪录备份路径的文本文件,具体设置另文再讲。

数据恢复

脚本地址:restore_form_backup_files.sh

恢复的过程:1)导入数据库文件;2)将备份的文件复制到相同的位置

其它

其它一些脚本汇总在这里