还在为WordPress网站图片拖慢服务器速度而烦恼?阿里云ECS内网挂载OSS,轻松实现图片分离存储,访问速度更快,还能省下巨额流量费!
大家好,我是万事屋的技术小编阿银。今天咱们来聊聊怎么给你那跑在阿里云ECS Debian10.6上的WordPress网站(比如你的/home/www/meiqiantu
)减负——通过内网挂载OSS,把烦人的图片等媒体文件丢到对象存储里去,让网站飞起来,还能省下不少流量钱!
这事儿靠谱吗?当然!同地域下ECS通过内网访问OSS,流量免费,速度还快,相当于给你网站的图片找了个无限容量又高速还免费的”外挂硬盘”。
一、 准备工作:先别急着操作
开工之前,有几件事得先搞定,不然就像炒菜没备料,手忙脚乱。
- 确认ECS和OSS同地域:这是内网流量免费的前提!比如你的ECS在”华东1(杭州)”,那你创建的OSS Bucket也得在”华东1(杭州)”。别跨地域,不然流量费照收。
- 创建OSS Bucket:到阿里云OSS控制台创建一个Bucket。记下它的名字、地域Endpoint(比如
oss-cn-hangzhou-internal.aliyuncs.com
,注意用内网Endpoint)。权限方面,如果只是存公共读的图片,可以设置成公共读(Public Read),但更建议保持私有并结合CDN和授权访问,更安全。 - 获取AccessKey:准备好一个有操作OSS权限的用户的AccessKey ID和AccessKey Secret。建议使用RAM子用户,并遵循最小权限原则,别直接用主账户AK。
二、 安装和配置ossfs(让系统认识OSS)
ossfs是个神奇的工具,能让你的Linux系统像访问本地文件夹一样访问OSS Bucket。
1. 安装ossfs
在你的Debian10.6服务器上,执行以下命令:
# 更新软件包列表
sudo apt-get update
# 安装ossfs
sudo apt-get install ossfs
2. 配置AccessKey信息
将你的AccessKey信息写入配置文件:
# 将Bucket名称、AccessKey ID和AccessKey Secret按格式写入配置文件
echo <你的Bucket名称>:<你的AccessKey ID>:<你的AccessKey Secret> | sudo tee /etc/passwd-ossfs
# 修改配置文件权限,确保安全
sudo chmod 640 /etc/passwd-ossfs
请替换<你的Bucket名称>
、<你的AccessKey ID>
和<你的AccessKey Secret>
为你的实际信息。
三、 挂载OSS到本地目录
1. 创建本地挂载点
你需要一个本地目录作为挂载点,用来访问OSS Bucket中的文件。
# 创建一个目录作为挂载点,例如/mnt/oss
sudo mkdir /mnt/oss
# 更改挂载点的所有者为你网站运行的用户(如www-data)
sudo chown www-data:www-data /mnt/oss
更改所有者很重要,这样WordPress(通常以www-data
用户运行)才有权限读写这个目录。
2. 执行挂载命令
使用以下命令将OSS Bucket挂载到刚创建的目录:
sudo ossfs <你的Bucket名称> /mnt/oss -ourl=http://<你的OSS内网Endpoint> -o allow_other
请将<你的Bucket名称>
替换为你的Bucket名称,<你的OSS内网Endpoint>
替换为你的Bucket的内网Endpoint(例如oss-cn-hangzhou-internal.aliyuncs.com
)。
-o allow_other
选项允许其他用户(如Web服务器用户)访问挂载点。
3. 验证挂载是否成功
使用df -h
命令检查挂载情况。如果成功,你应该能看到类似ossfs
的文件系统类型以及你的挂载点信息。
df -h
四、 迁移WordPress图片到OSS
现在,OSS已经挂载到本地了,接下来就是把WordPress的wp-content/uploads目录里的宝贝图片搬过去。
1. 暂停Web服务(建议)
为避免数据不一致,迁移前最好暂停Web服务器(如Nginx或Apache)。
# 例如暂停Nginx
sudo systemctl stop nginx
2. 同步文件到OSS挂载点
使用rsync
命令同步本地uploads目录到OSS挂载点。
# 假设WordPress网站根目录为/home/www/meiqiantu
sudo rsync -av /home/www/meiqiantu/wp-content/uploads/ /mnt/oss/
-av
选项表示归档模式并显示详细过程。
3. 备份并重命名原uploads目录(保险起见)
同步完成后,不要立即删除原目录。先重命名它,做个备份。
# 进入WordPress的wp-content目录
cd /home/www/meiqiantu/wp-content/
# 重命名原uploads目录
sudo mv uploads uploads.bak
4. 创建符号链接(关键一步)
创建一个指向OSS挂载点的符号链接(软链接),让WordPress以为上传目录还在老地方。
# 在wp-content目录下创建指向/mnt/oss的符号链接,并命名为uploads
sudo ln -s /mnt/oss uploads
# 确保符号链接的所有者正确
sudo chown -R www-data:www-data /mnt/oss
sudo chown www-data:www-data /home/www/meiqiantu/wp-content/uploads
5. 恢复Web服务并测试
启动Web服务,并测试文件是否正常访问。
# 启动Nginx
sudo systemctl start nginx
然后,在WordPress后台尝试上传一张新图片,检查是否成功出现在OSS Bucket中。同时,访问网站原有的图片链接,看是否能正常打开。
五、 设置开机自动挂载
为了避免服务器重启后需要手动挂载OSS,我们需要设置自动挂载。
1. 编辑fstab文件
使用以下命令编辑/etc/fstab
文件:
sudo nano /etc/fstab
在文件末尾添加一行配置(具体参数需根据你的情况调整):
ossfs#<你的Bucket名称> /mnt/oss fuse _netdev,allow_other,url=http://<你的OSS内网Endpoint> 0 0
注意:_netdev
选项表示等待网络就绪后再挂载,这对网络文件系统很重要。
2. 测试自动挂载
你可以先卸载OSS,然后使用mount -a
命令测试配置是否正确。
# 卸载OSS
sudo umount /mnt/oss
# 重新挂载所有在fstab中定义的文件系统
sudo mount -a
再次使用df -h
命令检查是否挂载成功。
六、 验证与优化
- 检查内网访问:确认你的OSS Bucket使用的是内网Endpoint(以
-internal.aliyuncs.com
结尾),并且ECS通过内网成功访问OSS,以享受免费流量。 - 权限检查:确保
/mnt/oss
目录和符号链接/home/www/meiqiantu/wp-content/uploads
对Web服务器用户(如www-data
)有读写权限。 - 考虑使用CDN:对于大量公开的图片等静态资源,强烈建议结合阿里云CDN,进一步提升全国乃至全球用户的访问速度。
- 探索WordPress插件:如果你觉得命令行操作繁琐,也可以考虑使用像”WP Offload Media Lite”或”Aliyun OSS”这类WordPress插件,在WordPress后台管理媒体文件到OSS的同步。但注意,插件方式通常需要配置Bucket策略或CDN。
七、 总结与注意事项
通过以上步骤,你应该已经成功将WordPress的媒体库迁移到了阿里云OSS上。同地域内网访问OSS免费,这为你节省了可观的流量费用,同时OSS的高可靠性也为你的数据提供了更好的保障。
重要提醒:
- 操作前务必备份! 包括网站文件和数据库。
- 确保ECS和OSS Bucket在同一地域,并使用内网Endpoint,否则会产生公网流量费用。
- 关注OSS的存储费用和请求费用(虽然内网流量免费,但这些费用仍会产生)。
- 如果使用符号链接方式,某些文件列表操作(如在WordPress后台查看媒体库)可能会变慢,因为需要通过网络访问OSS。
- 本文的方法主要适用于将新上传的媒体文件存放到OSS。对于已有的媒体文件,如果已在文章中使用旧URL,可能需要额外操作(如数据库搜索替换或使用插件)来更新链接,但此操作有风险,务必先备份数据库。
希望这篇教程能帮你解决WordPress网站存储的烦恼!如果你有更好的方法或踩坑经历,欢迎分享。
友情提示:云产品计费策略和功能细节可能更新,本文内容基于当前公开资料和笔者经验。最准确的信息请务必以阿里云官方最新文档为准哦!
本文首发于万事屋,转载请保留出处。来源:万事屋 – https://www.rei3.com
没有回复内容