Lunarpages实在是过慢了。服务行业就是这样,低价格一定是低品质。500ms以上的ping值无论如何不具有实用价值。于是挑战一下,从零开始试用了一下Linode的VPS。门户博客就像宾馆,拎包入住;虚拟主机就像毛坯房,尽管作何用很自由,但毕竟格局已定,条条框框就在那里,简单装修即可;VPS则彻底是地皮一块——裸机一台,需要自己选择系统究竟是CentOS还是Ubuntu,再通过SSH远程操作,从装系统开始,逐步搭建一个生产环境。 自从进了法学院,久违了这种码农似的研究。Linux的操作感果然很好,尽管没有GUI界面,依然是高效的。记录一下设置VPS的过程,方便以后的自己,也方便有缘读到这些文字的朋友。
一、牢记几个关键密码
这些密码层级不同,用处各异,必要的话用纸写下来。无论是操作虚拟主机还是VPS,千万不要因为记错不同的密码浪费时间。
- 登录linode的账号、密码
- 主机root密码
- MySQL的root密码
- FTP用户的密码
- MySQl的FTP数据库(PureFTPd)密码
- PhpMyAdmin的root密码
二、安装系统,搭建环境
这里我选择的是Ubuntu 11。这是我唯一接触过的Linux系统,使用者也多,google的资源丰富。 ssh环境下,vim或Linux操作时,鼠标右键单击=Ctrl+V,Ctrl+Inster=Ctrl+C。下面的所有指令都可以复制到剪贴板然后再ssh中右击粘贴,不要一个字母一个字母录入。
1.直接运行以下命令:
apt-get upgrade apt-get update
2.使用以下命令修改主机名称:
echo "YourVPSName" > /etc/hostname hostname -F /etc/hostname
其中YourVPSName可以替换成你自己的名字。
3.设置时区
tzselect
根据提示选择,一般5-9-1-1设置Beijing即可。
4.获取lnmp一键安装包并解压
wget -c http://soft.vpser.net/lnmp/lnmp0.8.tar.gz tar zxvf lnmp0.8.tar.gz
5.安装lnmp
cd lnmp0.8/ ./ubuntu.sh
这一步需要输入一个绑定的域名,根据lnmp.org的建议,使用一个二级域名lnmp.xxx.xxx,这个域名是互联网上不存在的,修改本地hosts可以使用。 马上要设定几个密码,准备好纸笔,写清楚即可。 这一步耗时大概30分钟左右。程序会自动安装编译Nginx、PHP、MySQL、phpMyAdmin、Zend这几个软件。
6.安装几个必要组件
这一步基本没什么难度,相当于Windows下的一路Next。这一阶段要安装eAccelerator、ionCube、imageMagick、memcached、PureFTPd等。
7.升级Nginx版本
./upgrade_nginx.sh
按提示输入nginx的版本号,如1.1.13。
8.升级PHP版本
./upgrade_php.sh
按提示输入php版本号,如5.3.9。这一步很重要,据说老版本的PHP有比较严重的漏洞。5.3.9比较安全。
9.添加虚拟主机
/root/vhost.sh
这里会要求输入一次rewrite的程序。输入即可。伪静态不管用,后面需要重新写rewrite规则。
10.至此,系统环境基本搭建完毕。
三、几个必须要做的调整
1.设置ftp自动运行
这一步是必需的,否则一旦VPS重新启动,FTP将无法直接登录。如果你几周以后Reboot了系统,忘了FTP不能自动运行,导出找原因会找到死。 执行如下命令使开机启动:
cat >/etc/init.d/pureftpd.sh<<eof /root/pureftpd start eof update-rc.d pureftpd.sh defaults
2.设置目录写入权限
之前我们的操作是以root账户完成的,所有文件/文件夹的所有者都是root。如果保持这个状态,之后我们将无法以ftp账户的名义执行很多操作——比如任何形式的写入;同样,Wordpress等程序也无法上传附件。
chown -R www /home/wwwroot
chown指令将后面的目录的所有权限指派给了www用户。在前面设置ftp你已经将ftp账号的uid和gid设置成www组了。至此,一个Wordpress的环境设置结束,可以“自豪的使用Wordpress了”。
3.设置可用的rewrite伪静态规则
网上有很多Nginx的rewrite伪静态规则笔记。在我的实践中发现,大多不能用——不仅仅没有效果,有可能连累系统无法运行。rewrite设置得我几欲放弃,已经甘心宁愿用“?p=**”的传统默认链接了,最后一试成功了。下面的代码可以直接解决单域名单一目录或多子目录(多Wordpress,比如kangjian.net)的伪静态rewrite问题:
vim usr/local/nginx/conf/wordpress.conf
单一目录rewrite伪静态规则:(根据WP所在目录改写/blog部分)
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 (.*) /blog/index.php; } }
多个wordpress程序,多个子目录:(根据WP所在目录改写/blog和/paste部分)
location /blog/ { 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 (.*) /blog/index.php; } } location /paste/ { 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 (.*) /paste/index.php; } }
改写完wordpress.conf,执行下列语句重新启动Nginx的web环境:
/usr/local/nginx/sbin/nginx -s reload
四、安装Wordpress程序
现在,安装Wordpress还是恢复别处备份来的Wordpress就看具体情况了。 感谢lnmp.org。
后续文章:
《Nginx下设置www.kangjian.net访问kangjian.net》 - 2012-1-30
《Linode VPS主机设置sendmail实现WordPress邮件通知》 - 2012-2-11
《Linode VPS升级 LNMP(Oneinstack版本)设置笔记,重点排除rewrite伪静态问题》 - 2016-8-23