迁移网站到阿里社区云全过程

前两天收到了ServerPronto的服务通知,大致意思是说服务费要涨到90美元一个月(我当时是购买的超值促销的服务器25美元一个月)。涨价之后基本就没啥性价比了,只好准备换一个服务商。

经过一番考察,决定把迁移到阿里云的社区云服务(http://phpwind.aliyun.com/show/ecc)。最近开始促销,每月199人民币,1990一年,性价比非常不错。

购买不赘述,一路默认下一步即可。付款之后,约15分钟左右服务即可以使用。在管理控制台(http://phpwind.aliyun.com/product/vm_manage/)管理该服务,既可以看到关于服务器的详细信息(配置,IP,默认软件的安装位置等等),其实这就是一台Linux服务器(当然你也可以选择Windows系统)。

我默认安装的PHPwind,倒不因为我要建立一个论坛,我只是让他给我安装好默认的软件(Apache,PHP,Mysql),偷个小懒。

因为我之前使用的Nginx,所以还要手动安装一个Nginx。

安装Nginx:

SSH登录到服务器,下载最新版Nginx(http://nginx.org/en/download.html), 因为默认服务器没有安装PCRE,所以需要自己下载安装(ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/)。

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.12.tar.gz
tar xzvf pcre-8.12.tar.gz
wget http://nginx.org/download/nginx-1.1.0.tar.gz
tar xzvf /nginx-1.1.0.tar.gz

cd nginx-1.10

#注意参数 --with-pcre=../pcre-8.12
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 --with-pcre=../pcre-8.12

make && make install

环境已经准备就绪,即所谓的(LNAMP架构)Linux + Nginx+ Apache + Mysql + PHP 。接下来开始迁移工作。

Nginx  作为前端的服务器,并且处理静态内容

Apache 处理动态内容(PHP)

Mysql 数据库

网站程序迁移:

这个就比较简单,直接把WordPress打包,拷贝到新的服务器。下述仅作描述流程所用,相关路径根据你的实际情况做修改。


#打包

tar czvf main-site.tar.gz main-site

#复制到新的服务器,这里建议用服务器直接对服务器,网速超快(主干网就是不一般啊!木哈哈),当然那你也可以下载-上传

scp main-site.tar.gz  username@host:~/wwwroot/

#ssh登录到新服务器,解压

cd wwwroot

tar xzvf  main-site.tar.gz

数据库迁移:

直接用mysqldump 导出数据库(http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html)。然后再导入到新服务器的数据库即可,建一个和原来服务器上相同的用户,最后密码也相同,这样省得去修改wordpress。


#导出数据库

mysqldump --opt -u root -p mainsite > exportDB.sql

#复制到新的服务器

scp  exportDB.sql  username@host:~/wwwroot/

#SSH登录到新服务器

cd wwwroot

#导入数据库

mysql -u root -p  main_site <  exportDB.sql

目前为止,环境,网站程序,数据库都齐了,可以开始最烦人的部分了,配置!!!

因为我们有两个webServer,都用80的端口,这个怎么办呢?端口冲突。仔细分析,Nginx对外提供服务,Apache仅对内提供服务,这个微妙的区别。解决办法:Nginx绑定到外网IP的80端口,Apache绑定内网(多台服务器)或本机(一台服务器)的80:端口。

配置Apache和Nginx:

Apache:


Listen 127.0.0.1:80

#...忽略默认内容
NameVirtualHost *:80
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" phpwind
CustomLog "|/webserver/apache2.2.15/bin/rotatelogs /logs/apache/%Y-%m-%d-9qc_log.log 100M" phpwind
ErrorLog "/logs/apache/apacheerror_log"

<VirtualHost *:80>
    ServerAdmin admin@admin.com
    DocumentRoot /wwwroot/main_site
    ServerName www.nealmi.com
    ServerAlias main
    ErrorDocument 404 /404.php
    DirectoryIndex index.html index.php index.htm

   <Directory "/wwwroot/main_site">
     Options +Includes
     AllowOverride FileInfo # Fancy Link 使用
     Order allow,deny
     Allow from all
   </Directory>
</VirtualHost>

 

Nginx:

#rewrite xx.com 成 www.xx.com
server {
listen       110.xx.xx.xx:80; # 外网IP
server_name  nealmi.com;
rewrite   ^  http://www.nealmi.com$request_uri? permanent;
}

server {
listen       110.xx.xx.xxx:80; # 外网IP
server_name  www.nealmi.com;
index index.html index.htm index.php;
root /wwwroot/main_site;

#Fancy Link必须设置这个
location / {
        try_files $uri /index.php;
}
#转发php请求到apache
location ~ .*\\.(php)$ {
    proxy_pass         http://127.0.0.1:80;
    proxy_redirect     off;

    proxy_set_header   Host             $host;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

    client_max_body_size       10m;
    client_body_buffer_size    128k;

    proxy_connect_timeout      90;
    proxy_send_timeout         90;
    proxy_read_timeout         90;

    proxy_buffer_size          4k;
    proxy_buffers              4 32k;
    proxy_busy_buffers_size    64k;
    proxy_temp_file_write_size 64k;
}
location /status {
    stub_status on;
    access_log   off;
}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
    expires      30d;
}
location ~ .*\.(js|css)?$ {
    expires      12h;
}

log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
             '$status $body_bytes_sent "$http_referer" '
             '"$http_user_agent" $http_x_forwarded_for';
access_log  /logs/nginx/access.log  access;
}

配置完成,接下来,将域名的记录指向到新服务的IP,大功告成!

这篇文章就是我在迁移到新服务器之后写的。