派兹
莓办法 银不了 尽梨了
派兹的小站

升级,再接着咕 — 服务器迁移小记

鉴于目前在用的阿里云轻量服务器,无论从线路还是性能方面来说都十分捉急,于是换了一台新的服务器,顺便升级一下现有的服务器架构。

服务器选择

新的服务器选择了腾讯云轻量应用服务器,地域是香港,电信 CN2 GIA 回程,联通 169 回程,移动 CMI 回程,路由还算不错。配置方面选择了 1C 2G 30M 1T 的组合,对一般通过建站用户来说简直不要太美好(

给服务器跑了一下分,LemonBench 结果如下:腾讯云 阿里云

搭建 Web 环境

选好服务器,下一步肯定是搭建 Web 环境啦。由于本人实在太懒,于是这次选择使用 Oneinstack 一键包搭建 Web 环境。

选择的 Stack 为 Nginx + PHP 8.0 + MariaDB 10.5 + Pure-FTPd + PhpMyAdmin,PHP 安装了 imagick 和 fileinfo 扩展。安装指令如下:

wget -c http://mirrors.linuxeye.com/oneinstack-full.tar.gz
tar xzf oneinstack-full.tar.gz
./oneinstack/install.sh --nginx_option 1 --php_option 10 --php_extensions imagick,fileinfo --phpmyadmin  --db_option 5 --dbinstallmethod 1 --dbrootpwd <数据库Root密码> --pureftpd  --reboot 

安装完成之后,就可以在 oneinstack 文件夹中使用 ./vhost.sh 创建站点了。

切换至 ZeroSSL 证书

Oneinstack 内置了 acme.sh 工具,可以便捷的签发 SSL 证书。如果不想使用默认的 Let’s Encrypt 证书,也可以切换至 ZeroSSL , Buypass 等证书。

ZeroSSL 提供了免费的单域名及通配符证书,支持 acme 协议签发,单张证书有效期为 3 个月。下面是本人使用的命令,列出来供大家参考一下:

alias acme.sh=~/.acme.sh/acme.sh
acme.sh --register-account --server zerossl --eab-kid [EAB-KID] --eab-hmac-key [EAB-HMAC-KEY]
acme.sh --set-default-ca --server zerossl
export DP_Id="[DNSPOD-API-ID]"
export DP_Key="[DNSPOD-API-KEY]"
acme.sh --issue --dns dns_dp -d example.com -d *.example.com
acme.sh --installcert -d example.com -d *.example.com --cert-file /path/to/cert/cert.crt --key-file /path/to/key/key.key --fullchain-file /path/to/fullchain/fullchain.crt --reloadcmd "service nginx force-reload"

签发证书前需要前往 ZeroSSL 官网 注册账号,生成 EAB KID 以及 EAB HMAC KEY,并添加至环境变量中。由于本人的域名托管在 DNSPod 上,所以还需要添加两个环境变量 DP_IdDP_Key,分别为 DNSPod API 的 ID 和 KEY。如果使用阿里云 DNS,那么环境变量名为 Ali_KeyAli_Secret ,签发时需要将 dns_dp 改为 dns_ali 。需要文件验证或者其他 DNS 提供商可以参考 acme.sh 的 官方 Wiki

Nginx 配置指北

获得 SSL 证书后,为了使得网站更加安全,我对 Nginx 配置进行了部分修改。

将 HTTP 请求重定向至 HTTPS

都1202 年了,难道真的还有网站不用 HTTPS 吗.webp

if ($ssl_protocol = "") { return 301 https://$host$request_uri; }

在配置中添加此行,即可将所有 HTTP 请求重定向至 HTTPS。

禁用过时的 TLS 协议

Chrome 浏览器的警告信息

各大主流浏览器早在 2020年3月 就已经开始对仍在使用 TLS1.0 及 TLS1.1 的网站进行警告,如果你并不需要对老设备进行适配,就请取消对这两个过时协议的支持吧。

ssl_protocols TLSv1.2 TLSv1.3;

在配置中删除此行的 TLSv1.0TLSv1.1 字段,即可取消对这两个协议的支持。

选择合适的加密套件

ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

使用这些加密套件可以更好的保护安全,只需替换配置中的相应字段即可。

开启 HSTS 和 OCSP 装订

add_header Strict-Transport-Security "max-age=63072000" always;

开启 HSTS 后,如果网站声明了 HSTS 策略,浏览器会拒绝所有的 HTTP 连接并阻止用户接受不安全的 SSL 证书。

ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /path/to/certs/fullchain.pem;
resolver 127.0.0.1;

开启 OCSP 装订后,当用户访问网站时,服务器将会把自己存储的站点证书、中间证书以及根证书一起下发到客户端,省去客户端进行实时 OCSP 查询的过程。开启后,用户访问网站的速度将获得提升。

搭建系统监控页面

折腾完 Nginx,总觉得服务器上少了点什么,于是准备搭建一个状态监控服务。最后我选择的是 Garfana + Prometheus ,功能比较全面,配置也很简单。

本站的状态监控页面

首先进入 Prometheus 官网,下载最新版本的压缩包并解压

wget https://github.com/prometheus/prometheus/releases/download/v2.26.0/prometheus-2.26.0.linux-amd64.tar.gz
tar -xf prometheus-2.26.0.linux-amd64.tar.gz
cd prometheus-2.26.0.linux-amd64
./prometheus  --config.file=prometheus.yml

运行上述指令后,Prometheus 将会运行在 127.0.0.1:9090 上。但是光安装 Prometheus 没有太大意义,所以还要安装 node_exporter ,用于监控服务器信息并通过 API 的形式返回。node_exporter 的安装方式也很简单,在 Prometheus 官网可以找到最新版本的安装包。

wget https://github.com/prometheus/node_exporter/releases/download/v1.1.2/node_exporter-1.1.2.linux-amd64.tar.gz
tar -xf node_exporter-1.1.2.linux-amd64.tar.gz
cd node_exporter-1.1.2.linux-amd64
./node_exporter

运行指令后, node_exporter 将会运行在 127.0.0.1:9100 上。此时在 Prometheus 的面板上输入 up 并点击 Excute,可以看到 node_exporter 正在运行。

接下来需要安装 Garfana。在 Garfana 官网的下载界面下载适合你使用的 Linux 发行版的版本,并安装即可。下面以 Ubuntu 20.04 为例:

sudo apt-get install -y adduser libfontconfig1
wget https://dl.grafana.com/oss/release/grafana_7.5.4_amd64.deb
sudo dpkg -i grafana_7.5.4_amd64.deb
sudo service grafana-server start
sudo update-rc.d grafana-server defaults

安装完成后,可以通过 127.0.0.1:3000 访问 Garfana ,默认用户名和密码为 admin 。登录面板后,点击侧栏的 Configuration – Data Sources -Add data source ,选择 Prometheus ,URL 填写 http://127.0.0.1:9090 ,点击 Save & Test 即可。然后点击侧栏 Create – Import ,输入 ID 8919 ,点击 Load 后选择 VictoriaMetrics 为刚刚创建的 Prometheus 数据源,再点击 Import 就可以完成导入。

https://blog.blw.moe/wp-content/uploads/2021/04/屏幕截图-2021-04-23-164303-1024x559.png
完成图

还没有完成的事

本文写的匆忙,还有一些基础工作并没有完成,比如网站备份、证书监控等。本文将会继续更新我的维护日常,欢迎大家支持(

以上便是本次迁移和升级服务器架构的粗略过程,若有不足之处还请批评指正,谢谢大家!

发表评论

textsms
account_circle
email

派兹的小站

升级,再接着咕 — 服务器迁移小记
[本文章由作者的鸽子代写] 鉴于目前在用的阿里云轻量服务器,无论从线路还是性能方面来说都十分捉急,于是换了一台新的服务器,顺便升级一下现有的服务器架构。
扫描二维码继续阅读
2021-04-23