还是没管住手:Rebuild一台我的VPS

in HIVE CN 中文社区20 hours ago

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

image.png
(图源 :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)
cc22d84db9670108e1f53e79250e681c.png

其它的选项还有加密磁盘、初始化脚本和数据等等,但是这机器上放的是不甚敏感的数据,也没啥要初始化的,所以就不用设置了。

最后的确认步骤,防止你因为操作失误Rebuild了VPS,这点还是很贴心的。
1c5c216e4b6affbf0121bc81be024ec1.png

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

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

系统的初始化设置

系统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

当然,事情不是总是一帆风顺的,比如我执行上述指令时就报错了,根据出错信息,去逐项排查和解决就好。

我遇到的出错信息
5fca09708af94eb09d2ef856774bbd80.png

解决起来也没啥难度:

sudo a2enmod rewrite
sudo systemctl restart apache2

在把之前备份的站点数据复制回对应用户的www目录下,至此站点恢复完成。

为站点设置SSL证书

你以为到这就结束了嘛?当然没有,接下来我们要为站点安装SSL证书,这样我们就可以用https的方式访问啦。

为了达到这个目的,我执行以下两条指令:

sudo apt install certbot
sudo certbot --apache

结果就华丽地翻车了呢?
a03526252898697fb03eb46735a830c0.png

文字版翻车信息:

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),搞定!

测试

通过浏览器访问站点查看站点是否工作正常。

登陆脚本所在的用户,手工执行相应的脚本,查看输出和日志,看看脚本以及定时任务是否工作正常。

man-7174965_960_720.jpg
(图源 :pixabay)

目前看起来一切正常,VPS Rebuild搞定,这下子强迫症一下子就舒爽了,觉得不单单VPS清清爽爽,整个人都清爽了好多呢!

有了这次Rebuild的经验,下次就可以拿我的https://cutehive.com下手啦,那个情况要略微复杂一些,之前几次升级都差点搞坏,不过我现在信心十足呢!

Sort:  

O哥厉害

过奖过奖了

专业的事情还得由O哥这样专业的人去做,GOOD。

好复杂,O哥牛啤克拉斯