AWS EC2 t2.micro实例WordPress迁移后加载极慢且不完整求助
解决AWS EC2 t2.micro上WordPress迁移后慢且加载不全的问题
刚迁移完WordPress就碰到这种糟心事儿确实头疼,结合你用的是t2.micro实例(本身资源就很有限),咱们一步步排查解决:
1. 先排查t2.micro的资源瓶颈
t2.micro是AWS免费层级的实例,只有1核CPU和1G内存,很容易因为资源耗尽导致站点变慢甚至加载异常:
- 用
top或htop命令实时监控CPU、内存使用率:如果CPU长期跑满100%,或者内存占用接近90%,那就是资源不够了- 临时缓解:可以先停止无用服务(比如
systemctl stop apache2后重启),或者清理内存缓存echo 3 > /proc/sys/vm/drop_caches(这只是临时办法) - 长期解决:如果还在免费期,建议升级到t3.micro(性能更稳定且同样在免费层级内);超出免费期的话可以考虑t2.small,资源翻倍能明显改善性能
- 临时缓解:可以先停止无用服务(比如
2. 检查挂载卷的权限配置
你把WordPress数据挂载到了/media/vdc/www/html,权限不对会导致Apache无法正常读取文件,直接引发加载不全或缓慢:
- 执行命令修正权限:
sudo chown -R www-data:www-data /media/vdc/www/html sudo chmod -R 755 /media/vdc/www/html - 同时确认Apache配置允许访问该目录:打开
/etc/apache2/sites-available/000-default.conf,检查<Directory /media/vdc/www/html>块,确保包含AllowOverride All和Require all granted,之后重启Apache:sudo systemctl restart apache2
3. 修正WordPress的URL配置细节
你已经添加了WP_HOME和WP_SITEURL,但注意不要留空格!你写的define('WP_HOME',' http://ip_or_domain.com ')里引号后有空格,会导致URL解析错误,改成:
define('WP_HOME', 'http://你的弹性IP或域名'); define('WP_SITEURL', 'http://你的弹性IP或域名');
另外登录WordPress后台,进入「设置」→「常规」,确认站点地址和WordPress地址与配置一致,避免后台残留旧URL引用。
4. 优化数据库配置与性能
t2.micro上同时跑MySQL+Apache+PHP很吃内存,数据库优化能有效缓解压力:
- 先确认
wp-config.php里的数据库连接信息(DB_NAME、DB_USER、DB_PASSWORD、DB_HOST)完全正确,避免因连接失败拖慢站点 - 编辑MySQL配置文件
/etc/mysql/mysql.conf.d/mysqld.cnf,针对1G内存调整参数:
之后重启MySQL:innodb_buffer_pool_size = 256M key_buffer_size = 64M max_connections = 50 query_cache_size = 16Msudo systemctl restart mysql - 优化数据库表(替换成你的表前缀):
OPTIMIZE TABLE wp_posts, wp_postmeta;
5. 启用缓存提升加载速度
对于资源有限的t2.micro,缓存是提升速度的关键:
- 安装轻量级缓存插件,比如WP Super Cache(新手友好),开启静态缓存后能大幅减少服务器请求压力
- 也可以开启Apache静态文件缓存,编辑Apache配置文件添加:
启用模块并重启Apache:<IfModule mod_expires.c> ExpiresActive On ExpiresByType text/css "access plus 1 month" ExpiresByType application/javascript "access plus 1 month" ExpiresByType image/jpeg "access plus 1 year" ExpiresByType image/png "access plus 1 year" </IfModule>sudo a2enmod expires && sudo systemctl restart apache2
6. 排查静态资源加载异常
加载不全大概率是静态资源(CSS、JS、图片)的URL错误或权限问题:
- 用浏览器开发者工具(F12)查看「控制台」,找到404/500错误的资源,对应修复路径或权限
- 如果之前用旧域名,现在换成弹性IP,需要批量替换数据库里的旧URL(替换前先备份数据库):
UPDATE wp_posts SET post_content = REPLACE(post_content, '旧域名', '新弹性IP'); UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, '旧域名', '新弹性IP');
内容的提问来源于stack exchange,提问作者saucewagon




