起因
我有一台2015年(初三)左右购入的惠普笔记本,当时买来用于练习英语听力。到了2020年左右,我正在上大二,且仍然使用这台惠普。
笔记本、手机等更新换代是常有的事,然而我的惠普上的windows7旗舰版能够胜任我一个计算机专业学生的所有需求,只不过硬件有些撑不住了–外壳破裂,开启无线网的按钮失灵。
2020年寒假,我照常把笔记本丢在了学校,结果因为疫情没法回去,所以顺势买了台新的戴尔笔记本。老惠普从此退役,没在打开过。
今年暑假,我觉得老惠普就这样扔掉太可惜,于是想将它变成服务器。这里记录了这个过程。
经过
- 网络和电源
我用一根网线直接连接路由器和老惠普,使其不仅有网还比无线网络稳定。电源也一直连接着。电脑屏幕会息屏,但是息屏是桌面的事,不会干扰ssh登陆。
- 重装系统
改造之前,惠普上是windows11+ubuntu16.04+ubuntu16.04的三系统共存。windows11到底是比较吃硬件的,在老惠普上运行很慢。两个ubuntu非常好用,只可惜空间有点小。虽然能直接访问windows下的D、E、F各个盘,还是觉得windows11的存在很累赘。于是我把系统重装为ubuntu22.04单系统。重装完之后老惠普的键盘出现了大小写错乱和没按shift却一直输出特殊字符的问题。此时想重装为之前没这种Bug的ubuntu16.04已经晚了。这是因为重装为ubuntu22.04之后只有uefi一种引导方式了,而ubuntu16.04的镜像文件里恰恰没有照应uefi的引导文件,导致开机检测不到u盘里的ubuntu16.04镜像文件。
可能还有其他方法可以把系统装回低版本ubuntu,但已经不想折腾了。况且作为服务器,老惠普的键盘、桌面统统不重要。因为远程ssh登陆老惠普之后的输入都跟老惠普自身的键盘、桌面无关。ubuntu比windows轻捷很多,同样的老机器,ubuntu运行起来非常顺滑。
- 启用ssh
新装的ubuntu上ssh是没开的。装下openssh-server
1 | sudo apt update |
新装的系统上带了防火墙。看看防火墙的状态,确保ssh使用的22端口是放行的。
1 | sudo ufw status |
此时,因为我的戴尔和惠普处在同一个家庭网中,用我的戴尔是能够ssh登陆老惠普的。老惠普的键盘错乱到我不想用的地步,ssh一开我立马从戴尔上登入惠普。
- frp内网穿透
老惠普老当益壮,4G内存,4核CPU,400G+的磁盘,已经完胜XX云上普通配置的机器了。
他唯一的弱点是没有一个公网ip,让我离家千里之后能在互联网上寻找到他。
好在我有kexueshangwang的刚需,手里常年会有一台vultr的最低配置的vps。但是vps要花钱,我穷我舍不得买高配的用,低配的带些服务器比较吃力(我觉得会比较吃力)。此外,最不放心的是vps在物理上经常永远不属于我,我不想把重要的东西放在上边。
我需要把vps的公网ip和老惠普的硬件资源做一个整合。把vps当作门户,把我的域名jixinlong.top解析到vps的ip上。即使以后更换vps也可以很快的调整dns解析条目。利用frp做一个内网穿透,建立从vps到老惠普的ssh,http,https,静态文件服务 映射。
- vps 7000端口 –绑定– 惠普7000端口
- vps 80端口 –http映射– 惠普80端口
- vps 443端口 –https映射– 惠普443端口
- vps 非22端口 –ssh映射– 惠普22端口
- vps 8080端口 –静态文件服务映射– 惠普某端口
还需要一个8888端口给后续的宝塔面板使用。
- vps 8888端口 –tcp映射– 惠普8888端口
vps上的frps.ini:
1 | root@01:~/frp_0.43.0_linux_amd64# cat frps.ini |
惠普上的frpc.ini
1 | jxl@jxl-HP-g14-Notebook-PC:~/frp_0.43.0_linux_amd64$ cat frpc.ini |
注意这里的宝塔8888端口映射使用普通的tcp映射就好,采用http反而连不上报错。这个和宝塔面板本身有关。
两边分别运行frps和frpc,此时就可以利用ssh直接域名dns.jixinlong.top及对应非22端口来远程登陆老惠普了。vps那边可以用screen把frps切到一边去常态化监听。
- 惠普的frpc开机自启
vps一般是不会无故重启啥的,比较稳定。但是惠普就不一定了,家里停电、断网啥的都可以导致它关机。一旦关机我就没法在外地远程登陆惠普了。所以这里需要让惠普这边的frpc开机自动启动。
此处参考了网上的一些写法,配置systemctl进行开机启动
创建frpc.service服务
1 | vim /lib/systemd/system/frpc.service |
输入:
1 |
|
注意: 网上教程的After和Wants是这样写的:
1 | After=network.target syslog.target |
区别在于没有-online。不加online的network.target意味着希望在网络服务启动之后再启动frpc服务,但网络服务启动不保证能连上网络。我实际实验时也发现这种写法的自启动,网络并没有连接上,导致frpc启动失败。改成我这种写法之后,就能使网络连接成功之后再启动frpc。
继续,终端里输入
1 | systemctl daemon-reload |
之后便可以直接使用systemctl命令来控制frpc
1 | #启动 |
- 安装宝塔面板,并利用宝塔安装wordpress
宝塔是一个帮人快速搭建建网站的环境,并帮人建网站的面板。wordpress单纯是一个帮助人快速建网站的框架。wordpress需要数据库、php、Apache 服务等作为环境,这些可以在ubuntu上自己挨个装(方法1);也可以先搞个宝塔,利用宝塔一键装这些环境(方法2)。
网上有的教程是用宝塔装好环境之后,直接在宝塔的应用商店里搜到wordpress一键装wordpress的。但我没搜到。所以我是基于方法2,从wordpress中文官网下载压缩包,丢到宝塔网站目录里装的wordpress。
总之把wordpress安装好之后,网站就初步建立了。
- wordpress使用
网上说wordpress写得很不好,资源利用率不高啥的。我不明觉厉。wordpress也有优点,就是快捷建站,有良好的生态(使用者多,那么围过来的开发者就多),插件、网站主题很多。跟同样快捷的Hexo+github静态建站方案比起来,它的优点是动态的,天然地带评论区等功能。
图片、视频、音乐都可以上传到wordpress的媒体库。主题可以随时换,不同主题不一样,有没有用到背景图、头像等因主题而已,但是针对某个主题的设定会有记忆,下次切回来的时候不用重新挨个设置该主题的内容元素。
插件这边,我装了WP Githuber MD,可以直接把本地写好的markdown复制进去,自动渲染后发表成文章。wordpress默认使用的头像服务被ban了,访问时会出现头像加载不出来的丑态。我直接One User Avatar插件把所有人的头像设成存在网站本地的小鸟游同学大头照。
- wordpress更换网址(可选)
首先要修改设置里的WordPress地址(URL)和站点地址(URL)为新地址。此时frp穿透无误的情况下,是可以通过新网址访问网站前后台的。
接着,网站中存有很多之前写文章时导入的图片,其链接还是旧的,这些图片就会加载不出来。改下数据库里的这些链接。进入phpmyadmin数据库管理,找到 wp_posts 这个数据表,切换到SQL状态,在输入栏中输入如下代码执行即可:
1 | UPDATE wp_posts SET post_content = replace( post_content, '老域名','新域名') ; |
改完大部分图片加载正常了。去网站上翻翻看,还有音频啥的没改过来,就重新编辑所在文章,删了重新添加,音频的链接就会变成新的。
- http更换为https
这一步其实很简单。
宝塔面板里 该网站-设置-SSL-申请个证书并部署它-打开“强制https”
http变成https也算是网址的更换了,所以要做一次wordpress更换网址
更换之后再访问网站,浏览器就不会提示不安全连接啥的了。
- 假如改wordpress网址玩脱了
导致登不进去了。有两种办法。
- 宝塔进入使用主题的function.php,在任意空白处加上下面两行代码:
1 | update_option('siteurl','改之前的网址'); |
保存,再次登录即可。记得再把这两行注释掉。
- 直接改数据库,把记录里的网址改回去。
宝塔登陆phpMyAdmin,选中你的WordPress数据库;
找到wp-options这个数据表;
打开这个表,找到第一条记录,也就是option_name为siteurl的那条记录,将option_value中错误的地址改为正确的即可。(如果option_name为home的那条记录地址也是错误的,改为正确的即可)
优缺点总结
本方案利用vultr的vps做网站门户,实际网站资源部署在家庭网内的老惠普上。这样的好处是:
- 将域名解析到一个oversea的vps上,且名义上我oversea的vps就是网站所在地,这样不需要繁琐的域名、网站put on records 工作。
- vps的更换可以是高度灵活的。假如我换了vps,只需要把域名解析到新的ip,然后在新的vps上继续运行frps即可。重启老惠普上的frpc,老惠普会自动依据我的域名寻址到新的vps,并请求和新的vps建立映射。真正网站实体在老惠普上,铁打的惠普,流水的vps。
这样的坏处也显而易见:
- 本来可以直连的网站中间多了个vps,路径变远了。更何况这个vps还是oversea的,远上加远。这降低了网站速度。