如何使用Apache进行网站迁移
小樊
39
2025-12-28 04:24:01
Apache网站迁移实操指南
一 迁移总览与准备
- 明确范围:迁移对象包含网站文件、数据库、Apache配置(如虚拟主机、.htaccess)、以及可能的SSL证书与计划任务/环境变量。
- 准备新环境:安装与源站相近的组件版本(如Apache/HTTPD、PHP、数据库),并准备同版本的操作系统或确认兼容性。
- 完整备份:对源站的**/var/www/html**(或自定义目录)、/etc/httpd/conf 与 /etc/httpd/conf.d(或 /etc/apache2 与 /etc/apache2/sites-available)、数据库进行全量备份。
- 规划切换窗口与回滚方案:选择低峰时段切换,保留旧站运行;准备回滚DNS或反向代理策略,确保可快速恢复。
- 工具与账号:准备SCP/RSYNC用于传输,确保新服务器防火墙与SELinux(如启用)策略允许Web访问与文件访问。
二 迁移步骤
- 备份源站
- 网站文件
- CentOS/RHEL:sudo tar -czvf /path/to/backup/site_files.tar.gz /var/www/html
- 数据库(以MySQL为例)
- mysqldump -u 用户名 -p 数据库名 > /path/to/backup/database_name.sql
- Apache配置
- CentOS/RHEL:sudo cp -r /etc/httpd /etc/httpd_backup
- Debian/Ubuntu:sudo cp -r /etc/apache2 /etc/apache2_backup
- 可选:导出证书与私钥(如 Let’s Encrypt)
- sudo cp -r /etc/letsencrypt /etc/letsencrypt_backup
- 在新服务器部署基础环境
- 安装Apache
- CentOS/RHEL:sudo yum install httpd && sudo systemctl enable --now httpd
- Debian/Ubuntu:sudo apt-get update && sudo apt-get install apache2 && sudo systemctl enable --now apache2
- 防火墙放行
- firewalld:sudo firewall-cmd --permanent --zone=public --add-service=http --add-service=https && sudo firewall-cmd --reload
- ufw:sudo ufw allow 80,443/tcp
- 迁移网站文件与数据库
- 传输文件
- scp -r /path/to/backup/site_files.tar.gz 用户@新服务器IP:/path/to/dest
- 在新服务器解压:sudo tar -xzvf /path/to/dest/site_files.tar.gz -C /var/www/html
- 传输并导入数据库
- scp /path/to/backup/database_name.sql 用户@新服务器IP:/path/to/dest
- mysql -u 用户名 -p 数据库名 < /path/to/dest/database_name.sql
- 权限设置(CentOS/RHEL)
- sudo chown -R apache:apache /var/www/html
- sudo chmod -R 755 /var/www/html
- 迁移与调整Apache配置
- 复制配置
- CentOS/RHEL:sudo cp -r /etc/httpd_backup/conf /etc/httpd/ && sudo cp -r /etc/httpd_backup/conf.d /etc/httpd/
- Debian/Ubuntu:sudo cp -r /etc/apache2_backup/apache2.conf /etc/apache2/ && sudo cp -r /etc/apache2_backup/sites-available /etc/apache2/
- 按需调整:端口、ServerName/ServerAlias、DocumentRoot、日志路径、目录权限、Include 虚拟主机配置等。
- 启用模块与站点
- Debian/Ubuntu:sudo a2enmod rewrite && sudo a2ensite your-site.conf && sudo a2dissite 000-default.conf
- 语法检查与生效
- 语法检查:httpd -t 或 apache2ctl configtest
- 生效:sudo systemctl reload httpd 或 sudo systemctl reload apache2
- 更新应用配置与切换解析
- 更新数据库连接:修改应用配置中的DB_HOST/DB_PORT/DB_NAME/DB_USER/DB_PASSWORD,必要时调整wp-config.php、.env 等。
- 测试访问
- 先通过IP或临时域名验证;如为WordPress等,需修正站点URL以避免重定向循环(例如更新 wp_options 中的 siteurl/home)。
- 切换DNS
- 将域名的 A/AAAA 记录指向新服务器IP;为降低风险可使用低TTL并分阶段切换(先小流量验证,再全量切换)。
三 验证与回滚
- 功能与性能验证:登录后台、提交表单、上传下载、检查HTTPS/重定向/伪静态与错误页是否正常;对比关键页面与接口响应。
- 日志排查
- 实时查看:sudo tail -f /var/log/httpd/error_log 或 /var/log/apache2/error.log
- 访问日志用于核对流量与状态码,定位403/404/500等问题。
- 回滚预案
- 若异常:立即将DNS切回旧服务器;必要时在新站前启用反向代理指向旧站,待修复后再切回。
四 常见问题与优化
- 权限与SELinux
- 权限:确保运行Apache的用户(如apache或www-data)对网站目录具备读取/执行权限,上传目录具备写入权限。
- SELinux(CentOS/RHEL):sudo restorecon -Rv /var/www/html;必要时使用 setsebool 调整布尔值。
- 虚拟主机与多站点
- 使用基于名称的虚拟主机在同一IP托管多个域名;确保DNS记录已指向服务器IP;必要时配置多个 VirtualHost 与日志分离。
- 重写与 .htaccess
- 确认启用mod_rewrite,并在 中设置 AllowOverride All,以保证 .htaccess 规则生效(如WordPress固定链接)。
- 过渡期零停机
- 采用双写/复制或反向代理方案,先同步数据与新站运行,再切换DNS,实现平滑迁移。