之前说过VPS主机OS有更新时我们有三种策略:在线升级、重装系统、重购新机(VPS)。额,对了,还有一种是不管不顾,放任自流。

(图源 :pixabay)
这几种方法是各有利弊,比如最后一种方法就适合懒人,当然了,系统真的出问题被黑了,懒人们就会欲哭无泪了。
之前我在线升级了一台有站点的VPS,好处是不用再做任何其它设置站点也能正常访问(不是每次升级都这样哦),站点IP也不变。但是弄完后总觉得不够优雅。
而重购新机又要面临IP被换的问题,所以更好的解决方案就是重装系统,在Linode的系统中,这个方法叫Rebuild。
其实这台VPS已经升级到最新系统了,完全没有必要Rebuild,我想Rebuild的VPS是cutehive.com所在的VPS,但是又怕出什么大问题,嗯,就拿这台已经升级好的机器练练手吧。
准备工作
因为这台VPS也有一个站点,还有一堆脚本,还有一些定时任务,所以Rebuild之前,最重要的事情就是要做好备份啦。
我的做法是把站点、脚本都复制到另外一台VPS上,这样比下载到本地备份要快得多。站点的配置文件、定时任务的内容(crontab -l)则保存到本地的txt文件中。
都保存完毕,检查一下有没有疏漏,就可以进行下一步啦。
Rebuild系统
接下来就可以在 Linode的后台Rebuild系统啦,不得不说Linode的面板是简洁又好用,深得我心呀。
Rebuild系统最关键的就是系统的选择和初始密码啦(当然也可以选择SSH KEY)

其它的选项还有加密磁盘、初始化脚本和数据等等,但是这机器上放的是不甚敏感的数据,也没啥要初始化的,所以就不用设置了。
最后的确认步骤,防止你因为操作失误Rebuild了VPS,这点还是很贴心的。

之后就开始Rebuild进程啦,可以在主机列表以及事件提醒中看到相应的进度

不得不说嗷嗷快,只需不要2分钟,新系统就搞定了,比在线升级快无数倍!

系统的初始化设置
系统Rebuild好了以后,我们就可以使用root用户来SSH登陆到主机的22端口(前提要在防火墙中打开22端口)。
无论使用root用户还是用默认的22端口登陆都是非常危险的,所以我们要添加新用户(赋予sudo权限),修改SSH监听端口,禁用root登陆等等。
之后就不用root用户而是新添加的用户进行操作啦,这样可以避免不小心犯下大错。😳
还有需要进行的操作包括但不限于:修改主机名(方便识别);卸载无用服务;更新系统等。
自此主机设置完成,我们可以进行下一步啦。
安装需要的软件
因为这台VPS上运行着一个站点,所以必须安装相应的网站服务软件。我之前用的是Apache,那么还用Apache吧。
sudo apt install apache2
安装PHP
执行完之后才想起来,这个站点不需要PHP,嗯,可以再删除。
至于MySQL这个站更是不需要:
sudo apt install php8.3
安装mpm-itk模块
sudo apt install libapache2-mpm-itk
关闭默认站点:
sudo a2dissite 000-default.conf
并对Apache进行简单的加固,降低被攻击的风险。
还可以针对VPS的配置,编辑/etc/apache2/mods-enabled/mpm_prefork.conf来优化Apache的设置。
创建(或者说恢复)站点
首先用于运行站点的用户。
sudo adduser siteuser
登陆对应用户,在用户目录中创建www(用于放置站点内容)以及logs(用于放置站点日志)两个目录。
以root权限复制原来的站点配置文件到/etc/apache2/sites-available
启用站点:
sudo a2ensite mysite
sudo systemctl reload apache2
当然,事情不是总是一帆风顺的,比如我执行上述指令时就报错了,根据出错信息,去逐项排查和解决就好。
我遇到的出错信息

解决起来也没啥难度:
sudo a2enmod rewrite
sudo systemctl restart apache2
在把之前备份的站点数据复制回对应用户的www目录下,至此站点恢复完成。
为站点设置SSL证书
你以为到这就结束了嘛?当然没有,接下来我们要为站点安装SSL证书,这样我们就可以用https的方式访问啦。
为了达到这个目的,我执行以下两条指令:
sudo apt install certbot
sudo certbot --apache
结果就华丽地翻车了呢?

文字版翻车信息:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
The requested apache plugin does not appear to be installed
原来是我没装对应的apche插件,那就装上呗:
sudo apt install python3-certbot-apache
之后再重新执行sudo certbot --apache按提示操作即可。期间出错了一次,发现我的防火墙屏蔽了80端口,打开后再重新执行,就正常啦。
恢复其它数据
之前说过这台VPS上除了站点还有一些脚本等数据,这些也要恢复的啦。
创建相应的用户和目录,把数据从备份的VPS上复制过去。再安装相应的计划任务(crontab -e),搞定!
测试
通过浏览器访问站点查看站点是否工作正常。
登陆脚本所在的用户,手工执行相应的脚本,查看输出和日志,看看脚本以及定时任务是否工作正常。

(图源 :pixabay)
目前看起来一切正常,VPS Rebuild搞定,这下子强迫症一下子就舒爽了,觉得不单单VPS清清爽爽,整个人都清爽了好多呢!
有了这次Rebuild的经验,下次就可以拿我的https://cutehive.com下手啦,那个情况要略微复杂一些,之前几次升级都差点搞坏,不过我现在信心十足呢!
O哥厉害
过奖过奖了
专业的事情还得由O哥这样专业的人去做,GOOD。
好复杂,O哥牛啤克拉斯