这里记录下我的博客搭建过程。
购买VPS
VPS提供商有很多,我用的美国 BudgetVM 提供的linux vps,最便宜的那种,128M RAM、10G硬盘、一个固定的IPv4的IP地址,3个IPv6的IP地址,500G流量/月,14.99$/年,非常便宜,一年不到100元。这样的配置搭个个人网站完全够了。
购买之后可以通过信用卡或paypal付款,付款后需要大约十分钟进行系统安装等工作,然后你就拥有一台新电脑了,只是看不见而已。
可以通过 ssh root@ip-address
进行访问了。
我选的是Ubuntu 12.04 32位的,默认安装了Apache。
域名
买了VPS后虽然有固定的IP地址了,但没有人会去记一串数字的地址,而且以后如果迁移到其他的VPS提供商时,IP会变的,所以最好有个自己的域名。
我的域名是在万网买的,150元3年。是.net
的域名,用.cn
的话还得备案什么的超级麻烦。
有了域名和IP地址后,还要把两者关联起来,就需要配置DNS解析了。我用的DNSPod(<www.dnspod.cn>),可以免费使用,如果要用人家的增值服务,那肯定是要付费的。
配置DNS后需要一定的时间来使DNS服务器的记录更新,很快就可以通过 http://you-domain
来访问了。如果你看到Apache的默认页面: it works
,说明到目前为止的配置都是成功的,否则就google吧。
选择并搭建博客软件
开源的博客软件非常多,最著名的应该是wordpress了,我选的是wordpress3.5的。
数据库选的是mysql 5.6。
web服务器用的nginx,占用的资源比Apache更少,能支持的连接数更多,对于资源不多的服务器还是很好的。
由于wordpress是用php编写的,所以也需要安装php。
这些软件都是开源免费的,典型的lnmp。php、nginx、mysql都是采用源码安装,源码安装的好处就是可以用最新版的。
要注意的就是:一定要把安装过程中的用到的命令、脚本都记录下来,以后系统重装、迁移到其他的VPS时,只需要把记录下的脚本重新跑一遍就ok了。
下面是这些软件的安装过程。我的所有下载的源码、软件都是放在一个目录下,安装脚本也放在同一个目录下,源码也是解压到这个目录,各个软件的配置文件也放在这个目录的 conf
目录下。
新建一个普通用户和组
之所以要用普通用户是因为,万一这些软件有个漏洞啥的被人攻击了,破坏会小点,因为没有超级用户的权限。不同的应用最好采用不同的用户来运行。
我新建了一个用户组appgroup(方便按组分配权限);两个普通用户 mysql (用于运行mysql数据库)和 php(运行php进程和nginx工作进程)。
命令:groupadd appgroup && useradd -r -g appgroup mysql && useradd -r -g appgroup php
安全前升级系统与清理
安装其他软件之前最好先升级系统,同时把不需要的软件也清理了,以免占用资源。
下面是我的清理脚本:
apt-get update && apt-get upgrade
# clean up os first
apt-get -y purge apache2_* bind9-* xinetd samba-* nscd-* portmap sendmail-* sasl2-bin
apt-get -y purge lynx memtester unixodbc python-* odbcinst-* tff-*
apt-get autoremove && apt-get clean
安装nginx、mysql、php
这三个都是采用源码安装,本来想把安装脚本贴出来的,但想想网上有一大堆这样的教程,且每个人的环境都不一样,还是让读者自己搜索解决。
软件的注意事项
这里说下注意事项。
配置nginx时要注意
- 要指定用户和用户组来执行工作进程。nginx的主进程主要是用来接收连接并分发给工作进程进行处理、监控工作进程,工作进程处理实际的请求。
- 要指定使用
epoll
事件处理方式,这是一种高性能的工作模式。
mysql注意事项
- 不要把mysql暴露在公网上。
- 不要用mysql数据库的root用户来连接博客的数据库,应该给每个数据库实例分配一个用户。与系统的root用户与普通用户一样的原因。
php注意事项
- 运行php也要指定用户和用户组。(我直接在上面的脚本里进行指定)
- 运行php-fmp时,也要指定只监听本地端口,不要暴露在公网。
权限
安装过程中还得考虑各种读写执行权限的问题,没有相应的权限容易出现文件找不到、不能读取之类的问题。坚持最小权限原则,只给必要的权限!
配置开机启动脚本
VPS可能会重启的,自己也可能重启系统,但不能每次重启都要手动启动那些软件,所以很有必要写个开机启动的脚本,把整个博客拉起来。
把启动脚本放在 /etc/init.d
目录,或者建个软链接链接到启动脚本。
备份数据和压缩日志
数据备份是非常重要的,谁也不能保证VPS不出故障,多个备份总有好处,这里主要备份数据库的数据。访问日志也有必要保存下来,以后可以写个脚本来分析下啥的,因为磁盘空间只有10G,需要压缩下。
数据备份与日志压缩最好每天进行,所以需要写个脚本,用crontab调度执行。
后记
在搭建过程中也碰到了一堆问题,借助google基本上解决了,到目前为止,这个博客的运行还算稳定。有空的也可以去看看: 码蜂笔记 http://coderbee.net
通过折腾这个博客,也学到很多东西。一句话说就是:谁折腾过,谁知道!
在这个VPS上,我还安装了个Git,加上ssh自动登录,我又有了个方便的Git服务器。
在自己的电脑上安装了ssh客户端后,执行这样一个命令: ssh -qTfnN -D 7070 usr@coderbee.net
,加上Firefox的AutoProxy插件,我又有了一副方便的梯子,可以看看墙外的世界。
真心觉得所有码农都应该有个VPS,如果你现在心动了,可以猛戳这个链接 https://www.budgetvm.com/account/aff.php?aff=1005 购买一个。最便宜的93块钱,还不够跟朋友出去吃顿饭。
2017-04-17 更新:把博客迁移到了 DigitialOcean 上,是 512M 内存、SSD 硬盘,感觉访问确实快了很多,这个配置是每月 5$,也还好,推荐链接:https://m.do.co/c/f9ee93c1327d
这个是来自 DigitalOcean 的,有SSD硬盘可选择,价格也贵点,512M内存的大概是5$/月:
https://www.digitalocean.com/?refcode=f9ee93c1327d
补充
2013-07-10补充:前几天下厨房的数据丢失事件让我觉得只把数据备份在vps上也是不够的,所以用dropbox的java sdk写了几个类,在数据库备份成功后把备份sql文件上传到dropbox上。这相当于有了台备份机,一切自动完成。
欢迎关注我的微信公众号: coderbee笔记,可以更及时回复你的讨论。
你·128M编译时不会出现内存不足么
不会啊。
博主,你好!
我按照你的方法到https://www.budgetvm.com/account/去买了一个15刀的VPS,昨天晚上使用Google Wallet付款了,但是到现在budgetvm上仍然显示那个order是未付款的状态,正常吗?
第二个问题,买了域名之后,还需要什么其他手段吗?
第三个问题,使用DNSpod.cn,怎么不需要关联IP地址和域名呢?我登陆进去发现只要添加一个域名就Okay了,不需要关联到IP地址吗?
谢谢!望博主解惑。
VPS买了之后应该会收到budgetVM的邮件的,里面有VPS的IP地址之类的信息。
DNSpod应该还需要配IP地址的,要不然它怎么知道你的IP呢。我当时的域名是在万网买的,需要把域名的解析迁移到DNSpod,具体细节记不得了,DNSpod上应该有教程的。DNS配置google下不难的。
博主,
你好,收到了budgetVM的邮件,但是付款一直卡在Enzu Inc http://www.enzu.com这个网站上,一直没有收到VPS付款成功的邮件,因为Google Wallet这个order一直在pending状态,纠结啊!
你要确认你的google wallet支付是否成功先?我当时用paypal很快啊。
博主,
有什么更详细一点的网站搭建教程吗?Linux基本操作,脚本编写都没什么大问题,但是wordpress + mysql + nginx,这三者如何组合?建站很多细节不是很清楚。
你可以推荐一些详细一点的建站文章吗?
Thanks
我没有收藏什么详细的建站文章。
mysql、nginx、php这些都只是软件安装的问题,配置网上也有一大堆;nginx转发到php-fpm的配置真的很简单,wordpress连mysql在wordpress的5分钟教程上就有。没你想象的那么难,just do it !
这年头互联网上的信息太多了,学会用google吧,不是百度哦。
哈哈,谢谢博主,我也搭建好了我的站点,不过现在非常简陋,欢迎访问。
http://www.imlongluo.com/
不知道博主是怎么进行博客搬家的?
博客文章的图片或者其他内容博主你放在哪里呢?
Thx
恭喜!
我以前也在iteye上写了点博客,不多,觉得有价值的就直接拷贝过来了,没用什么工具去搬。
你好博主,我付款成功并且收到了budgetVM的邮件,用邮件里说明的IP和账户无法SSH登录,问下这是什么情况啊?
能不能ping通??如果ping不同可能是被墙的IP,一般是不会被墙的,换多个不同的地方去ping下;ping得通就看看ssh的命令有没有错,一般是 ssh root@ip
已经解决了。我给他们发了工单,换了新的IP,可能像你说的,IP被墙了。多谢!
博主,想咨询下,在BudgetVM VPS的nginx 二级Wordpress目录如何静态化?
试过了好几个方法,都显示404错误,不知道博主是如何做的?
想参考下你的Nginx配置文件,可以吗?
我的只把图片交给nginx直接处理,其他的仍然是转发给php-fpm处理的,下面的配置也是参考网上的:
location ~* \.(gif|jpg|png|jpeg|swf|flv) {
root /var/www/wordpress;
valid_referers none blocked coderbee.net;
if ($invalid_referer) {
return 404;
}
}
博主,你看下,这是我的配置,但是一直没有成功:
http://bbs.vpser.net/viewthread.php?tid=10318&pid=30841&page=1&extra=page%3D2#pid30841
另外,可以互相做个友情链接不?
http://www.imlongluo.com/blog/