@玛酷猫2 周前
历史总是惊人的相似呀,距离上次挪窝没几年(小窝迁移升级),类似的事情再次上演,前几年续费都有大力度折扣,算下来续费一年才300不到,哪知道今年直接蹦到600多,幸好11月份阿里云有活动,99元新购,续费也是99,这样一买一续,198到手两年,还是挺不错的。为了省钱就辛苦下手指头了。而且配置也有提升,原来的1U1G1M直接换成2U2G3M,直接换改善型小窝,等2年后看看有没有其他活动再换好了。
本来挪窝不复杂,阿里云有“搬家”的教程,做一个镜像备份,跨区拷贝,在还原就好了。但是考虑过了好几年了,系统、环境的老版本慢慢没有官方维护了,索性重新搭建一边好了。在购买的时候就舍弃了CentOS,直接用了阿里云自己的Alibaba Cloud Linux 3,原来PHP用的8.1,直接用最新的8.4,其他环境都使用最新的稳定版。架构还是和以前一样,选用LANMP模式,Nginx跑静态文件和代理,Apache跑PHP8,预配NodeJS,平时做简单的调试用,通过Nginx转发访问。
流程和以前差不多,区别也还是有的,首先就是命令由yum换成dnf(这下又知道dnf的一个新的解释),虽然两者有一大堆区别,从使用者角度来看,用起来感觉是一样的。阿里的官方教程也很齐全手动部署LNMP环境、手动部署LAMP环境,照着文档操作,安装Nginx、Apache,配置方面也和老服务器没什么的大区别,参考老服务器配置,配置好Nginx、Apache以及各个站点。
数据库没有用Mysql,还是用的MariaDB,安装和以前一样,只不过把yum换成dnf。MariaDB初始化会有一系列问题,对应的回答下就好。
1、Enter current password for root (enter for none): # 输入root密码,新装直接回车。 2、Switch to unix_socket authentication [Y/n] # 是否切换到unix_socket权限验证,考虑安全性,直接n,回车 3、Change the root password? [Y/n] # 是否修改root密码,y回车,输入新密码,再次输入一遍新密码。 4、Remove anonymous users? [Y/n] # 是否删除匿名用户,y回车 5、Disallow root login remotely? [Y/n] # 禁止root远程登录,y回车 6、Remove test database and access to it? [Y/n] # 删除测试库,y回车 7、Reload privilege tables now? [Y/n] # 刷新授权表,使设置立即生效,y回车
接着参照老服务器账号,新建一个账号用户用于正常的使用,先进入MariaDB,
mysql -u root -p # 输入刚才的密码 # 新建用户 GRANT ALL ON *.* TO '新用户'@'localhost' IDENTIFIED BY '密码' WITH GRANT OPTION; # 刷新权限 FLUSH PRIVILEGES; # 退出 exit;
接着将老服务器数据库备份,在新服务器上还原
# 使用mysqldump备份 mysqldump -u用户 -p密码 库名 2>/dev/null |gzip >文件路径和名称.sql.gz # 下载到本地在上传到新服务器并解压 # 登录mariaDB mysql -u新用户 -p # 创建数据库 CREATE DATABASE 数据库名; exit # 从sql文件还原数据库 mysql -u用户 -p密码 < 文件路径和名称.sql
接着打包老服务器站点文件,下载,上传到新服务器。其实可以在服务器之间传输,考虑打包后没多大,就下到本地在上传,顺便本地留一个备份。
# 打包 tar czvf 压缩包名.tar.gz 路径 # 解压 tar xzvf 压缩包名.tar.gz -C 路径 # 修改权限 chown -R apache:apache 站点根目录
接着配置域名证书,和之前配置一样(阿里云设置泛域名SSL证书)
export DP_Id='ID数字' export DP_Key='Token字符串' acme.sh --issue -d makumo.com -d *.makumo.com --dns dns_dp
系统出现如下提示
acme.sh is using ZeroSSL as default CA now. Please update your account with an email address first. acme.sh --register-account -m my@example.com See: https://github.com/acmesh-official/acme.sh/wiki/ZeroSSL.com-CA
原来acme.sh把CA服务器由Let’s Encrypt更换成ZeroSSL了,那就按着提示注册一个用户好了,注册完后,再重新运行一遍,耐心等待一会,证书搞定。
重头都检查了一遍,没发现啥大问题,结果启动Nginx就报错了,提示证书文件没找到。仔细看了下,原来证书生成的路径不太一样,修改了下Nginx站点证书路径,Nginx启动正常。
接着httpd启动报错,提示Invalid command php_admin_value,以前踩过的坑又踩一遍(升级PHP8踩坑记),用命令装了下mod_php,结果提示already installed,这就费解了。网上搜了半天也没找到如果解决这个问题,大部分版本都比较老,用之前方法就能解决。按道理两台服务器环境差的不多,老的Apache2.4.6+php8.1,新的Apache2.4.37+php8.4,配置文件都一样,不应该出现这个问题。暂时先注释掉这一行,等找到解决方案了在来处理了。
最后把域名解析到新服务器上,确定解析完成后,访问了下,站点都顺利打开。挪窝完成,再过两天就2025了,期待着新年新气象。