很久以前就对网站搬家这事存在疑问,尤其是wordpress,我对他的域名或者路径修改掉以后直接就不能访问了的不智能化搬家存在疑惑。废话少说立马把这几天研究的VPS搬家全过程记录下来。
为方便健忘的自己以及百度或者谷歌搜索如何搬家的新手朋友,我还是尽可能的把一个vps的全过程详细写下。
开通VPS后需要进行的操作
买vps的原因各种各样,既然我们做网站那么应该先配置环境:(以下操作均为Centos6.4 x32 )
设置时区与修改密码
直接输入:
tzselect
根据提示选择,一般5-9-1-1设置Beijing即可。(别小看时区问题,有时候会把你搞崩溃)
部分VPS在安装好后使用的是随机密码,很不好记,那么这时候可以在第一次登录VPS后输入:
passwd
根据提示输入两次新密码就可以了
安装LNMP
详细教程可到官网查看 点击此处
简单操作版: (有能力自主搭建的童鞋可以跳过此步)
1.安装screen:
yum install screen
或者
apt-get install screen
(screen的好处是当你使用ssh操作的时候断线不会中断任务。像我就中断过很多次,然后在伪完美主义的驱动下一次又一次地rebuild系统)
(screen的使用方法为:screen -S lnmp 创建名为lnmp的screen会话。如果网络掉线,可以重新连接,再执行 screen -r lnmp 就会看到你的lnmp安装进程。)
2.一键安装命令:
wget -c http://soft.vpser.net/lnmp/lnmp1.1-full.tar.gz && tar zxf lnmp1.1-full.tar.gz && cd lnmp1.1-full && ./centos.sh
3.设定各种参数:
Please input the root pass word of mysql:
请输入数据库密码回车
Do you want to install the InnoDB Storage Engine?
这里需要确认是否启用MySQL InnoDB,如果不确定是否启用可以输入 y ,这个可以单独在MySQL文件里关闭,输入 y 表示启用,输入 n 表示不启用。
Install PHP 5.3.17,Please input y ; Install PHP 5.2.17,Please input n or press Enter
这一步是选择php版本,可以选择 PHP 5.3.17 或 PHP 5.2.17,安装PHP 5.3.17的话输入 y ,安装PHP 5.2.17 输入 n,输入 y 或 n 后回车
Install MySQL 5.5.27,Please input y ; Install MySQL 5.1.60,Please input n or press Enter
可以选择MySQL 版本 5.5.27 或 5.1.60,安装MySQL 5.5.27的话输入 y ,安装MySQL 5.1.60 输入n,输入 y 或 n 后回车
提示"Press any key to start...",按回车键确认开始安装。
接下来只需耐心等待个十几分钟/数小时安装完成即可。
添加虚拟主机
不配置虚拟主机的话,是无法在一个vps上存放多个网站的哟。
1.先进入安装好的lnmp文件夹:
cd /root/lnmp1.1-full/
2.需要执行如下命令:
/root/vhost.sh
3.设定各种参数:
Please input domain:
请输入域名 (如果输入一个或多个字母按住Ctrl再按Backspace键删除)
Do you want to add more domain name?
这一步提示是否要在这个网站添加更多的域名 (带www和不带www的是不同的域名,如需带www和不带的www的域名都访问同一个网站需要同时都绑定;再输入要另外绑定的域名,多个域名可以用空格隔开。例如:zhouzexin.cn www.zhouzexin.cn blog.zhouzexin.cn)
Please input the directory for the domain:www.zhouzexin.cn
(Default directory:/home/wwwroot/www.zhouzexin.cn):
接下来是设置网站目录位置,一般情况下不需要设置直接回车即可。(建议管理多网站者,自己另建立目录;比如/data/ 下面有大量的空间也可以填写/data/www/zhouzexin 填写完回车确认。)
Allow Rewrite rule?
这里选择是否添加伪静态规则,如不需要伪静态,直接输入 n 回车。如果需要输入 y 回车,再选择伪静态或自定义伪静态。(默认已经有了discuz、discuzx、wordpress、sablog、emlog、dabr、phpwind、wp2(二级目录wp伪静态)、dedecms、drupal、ecshop、shopex,可直接输入以上名称即可)
如果以上伪静态没有自己需要的可以添加自定义伪静态规则,直接输入一个想要的名字,名字不能和前面这些伪静态的名字及/usr/local/nginx/conf/下的其他文件相同,程序会自动创建伪静态文件,直接在/usr/local/nginx/conf/你自定义的伪静态名字.conf 里面添加伪静态规则就行。
注:添加完执行/etc/init.d/nginx restart 重启生效。
Allow access_log?
接下来会提示是否需要启用日志功能,一般情况下不需要启用日志,直接输入 n 回车。如需启用日志,输入y 回车。
会提示:Type access_log name(Default access log file:www.zhouzexin.cn.log):
这里是要求输入要定义的日志文件名字,一般不自定义直接回车即可。
日志文件存放在:/home/wwwlogs/ 下面。
出现:Press any key to start create virtul host... 后,再次回车确认就会自动添加虚拟主机。
这样,虚拟机就配置好了。
删除虚拟主机
ssh登陆执行命令:
rm /usr/local/nginx/conf/vhost/域名.conf
如,前面我们添加的主域名是www.zhouzexin.cn,则该命令为:rm /usr/local/nginx/conf/vhost/www.zhouzexin.cn.conf
安装Pureftpd FTP服务
虽然viekee跟我说过linux系统下的FTP服务存在安全隐患,但作为个人博客我表示完全轮不到担心这个,尽管用!
1.先进入lnmp文件夹:
cd /root/lnmp1.1-full/
2.执行安装程序:
./pureftpd.sh
3.设定各种参数:
Please input your root password of mysql
按提示输入当前MySQL的root密码
Please input password of user manager
设置FTP用户管理后台的登陆密码
please input password of mysql ftp user
因为PHP管理后台需要连接数据库,所以会在MySQL上创建一个ftp用户,这里设置的就是这个用户的密码
显示 ”Press any key to start install Pure-FTPd...“ 再次回车确认即可开始安装。
由于MySQL 5.1和5.5下的语句有些不同导致在MySQL 5.5下安装失败,其实Pureftpd是安装成功的,只不过php的图形界面无法登陆。
MySQL 5.5 且使用了pureftpd的用户需要按如下方法修复,执行如下命令:
wget http://soft.vpser.net/lnmp/ext/fix_pureftpd_mysql55.sh && chmod +x fix_pureftpd_mysql55.sh && ./fix_pureftpd_mysql55.sh
按提示分别输入MySQL root密码,ftp用户管理面板密码和MySQL ftp用户密码。
解决存在问题
lnmp虽然是很强大,但每个版本都存在着bug。接下来是解决目前lnmp1.1-full 我遇到的一个问题
问题:卡在starting php-fpm
解决方法:用自带的php升级sh 升级php
具体操作:
1.先进入lnmp文件夹:
cd /root/lnmp1.1-full/
2.运行升级程序:
./upgrade_php.sh
3.输入升级升级版本:
5.3.26
4.重启服务或者系统:
reboot
好了,问题基本解决。接下来可以进入到搬家细节上了。
网站搬家细节操作
备份原网站资料
这里用wordpress来举例,假设我的zhouzexin.cn存放在/home/wwwroot/zhouzexin/,而博客位置则在/blog文件夹
1.首先ssh登录并进入旧网站文件夹:
cd /home/wwwroot/zhouzexin/
2.针对该文件夹内的blog进行打包:
tar -czf blog.tar.gz blog
将 “/blog” 目录压缩打包存放为blog.tar.gz;
3.导出数据库文件:
mysqldump -uroot -p*** zhouzexin_wp>zhouzexin_wp.sql
导出数据库文件,-u紧跟着数据库帐号root ; -p紧跟着数据库密码 ;zhouzexin_wordpress则是wordpress在数据库内使用的名字;>后面是导出数据的.sql格式
以上操作完毕后,应该能在网站根目录下看到你打包的两种数据:博客资料 zhouzexin.tar.gz以及 数据库zhouzexin_wp.sql;确保你能下载他们,最好是放在容易下载的路径上,例如:http://zhouzexin.cn/zhouzexin.tar.gz http://zhouzexin.cn/zhouzexin_wp.sql
转移网站资料并部署
国外网站连接到国内,一般下载速度都不快。我们也没必要把资料下载到本地再上传,这样做只是浪费时间。那么我们直接利用新VPS下载旧网站的资料既快速又省事。
1.进入打算存放网站的文件夹:
cd /data/www/zhouzexin
2.把旧网站资料下载到新VPS:
wget http://zhouzexin.cn/zhouzexin.tar.gz
wget http://zhouzexin.cn/zhouzexin_wp.sql
最好利用scp或者ftp确认一下是否已把文件完整下载到想要的位置上
3.把博客资料解包:
tar -xzf zhouzexin.tar.gz -C /data/www/zhouzexin/
4.新建并导入数据库文件:
mysql -uroot -p***
进入mysql , ***为你的密码
create database zhouzexin_wp;
创建名为zhouzexin_wp的数据库(千万别忘记输入";")
quit;
退出mysql(别忘记打分号,否则无法退出)
mysql -uroot -p*** zhouzexin_wp<zhouzexin_wp.sql
把下载下来的.sql导入新建的zhouzexin_wp数据库里
如果你的域名没有变更或者路径没有修改,那么到这里已经完成数据的转移。
更换网址或者修改路径遇到的问题
相信不到人都遇到这个问题,旧网站想换个域名或者想修改路径,结果更换网址或者修改路径后wordpress罢工无法访问了。
问题:无法正常访问网站,连管理后台都进不去
解决方法:修改数据库数据。
具体方法:
1.利用phpmyadmin进入wordpress数据库。
2.找到wp_options(如果你自定义过名字则是xx_options),在右侧表格中查看option_name分类中寻找siteurl。
3.修改option_value为目前你使用的网址或者路径,记得保存
4.别以为万事大吉了,你还是无法正常访问你的网站。
5.进入你的管理页面:http://域名/wp-admin
6.点设置->常规,把站点地址修改为你现在使用的网址(两项有关URL的都修改,与2.相同),保存就完成!
你真的以为万事大吉了?有没有发现插件主题什么的装不上?权限也要设置一下。
批量设置文件夹权限
权限什么的很简单,记住下面这条代码就行了:
chmod -R 777 /data/www/zhouzexin/blog
chmod -R是命令必须的,后面紧跟着权限为777,然后再就是需要修改的文件夹路径
顺便说下删除文件夹的方法,省得新人到处找了:(例子:删除blog文件夹)
1.先cd进你要删除文件夹的上一级目录:
cd /data/www/zhouzexin
2.执行删除命令:
rm -rf blog
附录:
zip文件打包方式:
zip -r mydata.zip mydata
压缩mydata目录,前提是先cd进上一级目录。
zip文件解压方式:
unzip mydata.zip
zip解压后非英文字符变成进制式了。建议大家少用zip压缩,tar打包真的很不错。
又以为万事大吉了吧?还没!!!
解决Nginx下WordPress后台wp-admin不自动加斜杠问题
这个问题相信困扰了不少人,搬家后访问后台总会丢失路径,例如:/wp-admin/这段不见了。
官方的解决方法:http://codex.wordpress.org/Nginx
Add trailing slash to */wp-admin requests.
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
那么我们只需要ssh进VPS,在路径/usr/local/nginx/conf/下找到wordpress.conf,把官方给的那一行加到文件最后面就行了:
location / {
if (-f $request_filename/index.html){
rewrite (.) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
}
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
记得保存,然后重启nginx即可。(懒人直接reboot吧)
再懒一点的,把这句话复制黏贴运行就可以了,附带自动重启:
echo 'rewrite /wp-admin$ $scheme://$host$uri/ permanent;' >> /usr/local/nginx/conf/wordpress.conf
/etc/init.d/nginx restart
这次是真的万事大吉了,有疑问的朋友可以留言。