猫窝私语 — Makumo's Blog

玛酷猫的温馨小窝,记录生活点点滴滴。

@玛酷猫3 周前

12/30
20:58
建站日志

挪窝记2024

历史总是惊人的相似呀,距离上次挪窝没几年(小窝迁移升级),类似的事情再次上演,前几年续费都有大力度折扣,算下来续费一年才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了,期待着新年新气象。

挪窝记2024

@玛酷猫5 年前

06/10
11:46
其他

阿里云设置泛域名SSL证书

泛域名SSL证书首选还是Let’s Encrypt,之前小窝加装泛域名证书用的也是它,具体可以查看之前的文章小窝加装泛域名SSL证书,今天帮朋友的站点设置SSL证书,步骤不太一样,顺便记录一下。

首先还是要下载acme.sh,安装成功后断开重新连接下终端,要不会后续的命令提示找不到

curl https://get.acme.sh | sh

由于朋友的域名是在阿里云上面,操作和DNSPOD上有些区别,先登录阿里云,在产品与服务里面,找到监控与管理分类,再在里面点选访问控制,或者在产品与服务下面直接搜索RAM访问控制,进入后先在左边菜单人员管理——用户里面新建一个用户,新建用户成功后会显示该用户的AccessKey ID和AccessKey Secret,这时候一定要记录下这两个值,因为这个只显示一次,如果丢失的话只能重新新建用户。随后在用户列表新建的用户后面操作里面点选添加权限,在弹出的权限列表里面搜索解析
,然后选择AliyunDNSFullAccess,后面备注是管理云解析(DNS)的权限。添加后点最下面的确定就好。

随后回到服务器命令行,依次键入下面命令(修改成对应的参数)

export Ali_Key='之前记录下的AccessKey ID'
export Ali_Secret='之前记录下的AccessKey Secret'
acme.sh --issue -d xxxx.com -d *.xxxxx.com --dns dns_ali

等待执行完毕就好。后续的服务器端的配置就和之前文章所写类似。

顺便一提的是Let’s Encrypt有申请错误的限制,同一域名同一账号连续失败5次后会被暂停申请1个小时,之前忘了给RAM用户附加权限,提示添加txt校验域名失败,添加权限后,然后就出现如下提示

 Create new order error. Le_OrderFinalize not found. {
  "type": "urn:ietf:params:acme:error:rateLimited",
  "detail": "Error creating new order :: too many failed authorizations recently: see https://letsencrypt.org/docs/rate-limits/",
  "status": 429
}

这个就是频繁提交失败后被服务器暂停申请了,等1个小时再试就好了。

阿里云设置泛域名SSL证书

@玛酷猫6 年前

01/3
23:01
WordPress 建站日志

小窝加装泛域名SSL证书

(本来打算写在上篇的,篇幅有点长,干脆拆成两篇好了)
书接上回,话说随着chrome的版本更新,所有的http访问的网站都会在网址前面标一个大大的不安全,这都9102年了,不给网站弄的SSL证书也太不像话了。免费证书哪家强,当然是选择Let’s Encrypt,而且今年去年年中的时候已经支持泛域名的证书,B格更高,同时也推出了新的申请方式,相对于以前单个域名的申请,方便很多。

首先要下载acme.sh,安装成功后断开重新连接下终端,要不会后续的命令提示找不到

curl https://get.acme.sh | sh

由于acme.sh可以自动配置DNS,这就需要获取到域名的API,我的域名是使用DNSPOD解析的,这里就用DNSPOD做例子,其他的请参考官方指南。登录DNSPOD,在控制台——用户中心——安全设置里面,启用API Token,创建新的API Token,这里一定要保存好Token,因为这个是只显示一次,关掉后就没法获取完整,只能删掉重新建,同时记下Token对应的ID,然后运行下面命令,等待120秒验证,屏幕上会显示倒计时,如果一切正常的话,屏幕会显示申请成功并显示4个证书文件的路径。

export DP_Id='ID数字'
export DP_Key='Token字符串'
acme.sh --issue -d makumo.com -d *.makumo.com --dns dns_dp

然后打开站点的Nginx的配置文件,添加相关的配置,例如:

server 
    {
        listen 443 http2 ssl;
        server_name makumo.com;
        index index.html index.php;
        root  站点目录;
        ssl_certificate /root/.acme.sh/makumo.com/fullchain.cer;
        ssl_certificate_key /root/.acme.sh/makumo.com/makumo.com.key;
        ssl_trusted_certificate  /root/.acme.sh/makumo.com/ca.cer;
        include proxy-pass-php.conf;
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }
        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }
        location ~ /\.
        {
            deny all;
        }
}

proxy-pass-php.conf文件即为上一篇中的关于转发到Apache的部分.

nginx -s reload

重新加载Nginx配置文件就能使用https访问站点,这时候还会存在几个问题,站点中图片、脚本、样式还是使用的http来引入,在浏览器中会报出错误,后台无法进入,浏览器会显示过多的重定向,网络里面会看到一堆的302重定向,搜了下,绝大部分都会说在Wordpress配置文件中添加开启SSL的配置,如下:

$_SERVER['HTTPS'] = 'on';
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

但是我这么设置后,前台没问题了,后台还是无法进入,虽然不报过多的重定向,直接报403错误了。
搜素了半天,还在有更简便的解决方案,安装插件really-simple-ssl,一次性解决各种恶心的问题。
另外,由于站点使用七牛作为图片的CDN缓存,站点切换为https后也需要将七牛的CDN改成https模式,在七牛的后台添加下证书(之前申请证书的4个文件,fullchain.cer是证书,域名.key就是对应的密钥),关联域名开启SSL就好了,这也是泛域名证书的方便之处,不用再次申请单域名证书了。七牛的https是收费的,看了下,0.28元/G,之前还有赠送的10元余额。应该能用段时间。

小窝加装泛域名SSL证书