+86 13541016684Mon. - Fri. 10:00-22:00

服务器迁移到亚马逊AWS

服务器迁移到亚马逊AWS

最近遇到一客户以前的博客是放在了HawkHost上,用了将近三年时间,到今年1月份就要到期了。因为在HawkHost上买的是共享主机,自己没权限随便折腾,而且网站打开速度也比较慢,所以打算不再续费。于是打算使用目前比较火的是VPS,但是通过对比国外VPS,像linodeDigitalOcean,价格都偏贵,国内阿里云最低配的ECS每个月也得五六十元,其他公司的云服务又不靠谱。最近在浏览亚马逊的AWS时,看到它现在推出了一个免费体验套餐,体验时间是一年,配置跟阿里云最低配的ECS差不多,所以让他果断注册试用。

我们帮他迁移步骤如下:

  • 在亚马逊AWS的管理后台创建一个EC2实例。
  • 在创建好的EC2实例上搭建好LAMP环境,参见如何搭建LAMP环境
  • 把HawkHost上的WordPress程序和数据库迁移到EC2实例上。
  • 修改域名的DNS记录到EC2实例的IP地址。

迁移完后,网站可以访问,但是遇到一个问题,文章页面打不开(404)。这个应该是因为Apache httpd的配置问题导致的。使用Nginx+PHP-FPM的方式。配置步骤如下:

1.停掉Apache httpd:

$ sudo service httpd stop
$ sudo chkconfig httpd off

2.安装nginx和php-fpm:

$ sudo yum -y install nginx php-fpm
$ sudo service nginx start
$ sudo service php-fpm start
$ sudo chkconfig nginx on
$ sudo chkconfig php-fpm on

3.在浏览器中访问http://blog.bypat.com/,出现nginx的默认页面。

4.注释掉/etc/nginx/nginx.conf中的server配置。

5.在/etc/nginx/conf.d中添加blog.conf,内容如下:

server {
    listen 80;
    server_name blog.bypat.com;
    root /var/www/blog;

    location / {
        index index.php index.html index.htm;
        if (-f $request_filename) {
            expires 30d;
            break;
        }
        if (!-e $request_filename) {
            rewrite ^(.+)$ /index.php?q=$1 last;
        }
    }

    location ~ .php$ {
        fastcgi_pass   localhost:9000;  # port where FastCGI processes were spawned
        fastcgi_index  index.php;
        include /etc/nginx/fastcgi_params;
    }
}

6.修改/etc/nginx/fastcgi_params,添加以下配置:

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  PATH_INFO          $fastcgi_path_info;
fastcgi_param  PATH_TRANSLATED    $document_root$fastcgi_path_info;

7.测试配置并重启Nginx:

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
$ sudo service nginx restart
Stopping nginx:                                            [  OK  ]
Starting nginx:                                            [  OK  ]

配置完成后,在浏览器中打开博客主页、文章页面和管理页面,都可以正常访问,大功告成。后续再将DNS服务由HawkHost迁移回GoDaddy。