博客搭建笔记

这里记录下我的博客搭建过程。

购买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时要注意

  1. 要指定用户和用户组来执行工作进程。nginx的主进程主要是用来接收连接并分发给工作进程进行处理、监控工作进程,工作进程处理实际的请求。
  2. 要指定使用epoll事件处理方式,这是一种高性能的工作模式。

mysql注意事项

  1. 不要把mysql暴露在公网上。
  2. 不要用mysql数据库的root用户来连接博客的数据库,应该给每个数据库实例分配一个用户。与系统的root用户与普通用户一样的原因。

php注意事项

  1. 运行php也要指定用户和用户组。(我直接在上面的脚本里进行指定)
  2. 运行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笔记,可以更及时回复你的讨论。

博客搭建笔记》上有37个想法

  1. 博主,你好!
    我按照你的方法到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下不难的。

        • 你要确认你的google wallet支付是否成功先?我当时用paypal很快啊。

          • 博主,
            有什么更详细一点的网站搭建教程吗?Linux基本操作,脚本编写都没什么大问题,但是wordpress + mysql + nginx,这三者如何组合?建站很多细节不是很清楚。
            你可以推荐一些详细一点的建站文章吗?
            Thanks

          • 我没有收藏什么详细的建站文章。

            mysql、nginx、php这些都只是软件安装的问题,配置网上也有一大堆;nginx转发到php-fpm的配置真的很简单,wordpress连mysql在wordpress的5分钟教程上就有。没你想象的那么难,just do it !

            这年头互联网上的信息太多了,学会用google吧,不是百度哦。

  2. 哈哈,谢谢博主,我也搭建好了我的站点,不过现在非常简陋,欢迎访问。
    http://www.imlongluo.com/
    不知道博主是怎么进行博客搬家的?
    博客文章的图片或者其他内容博主你放在哪里呢?
    Thx

    • 恭喜!

      我以前也在iteye上写了点博客,不多,觉得有价值的就直接拷贝过来了,没用什么工具去搬。

  3. 你好博主,我付款成功并且收到了budgetVM的邮件,用邮件里说明的IP和账户无法SSH登录,问下这是什么情况啊?

    • 能不能ping通??如果ping不同可能是被墙的IP,一般是不会被墙的,换多个不同的地方去ping下;ping得通就看看ssh的命令有没有错,一般是 ssh root@ip

      • 已经解决了。我给他们发了工单,换了新的IP,可能像你说的,IP被墙了。多谢!

  4. 博主,想咨询下,在BudgetVM VPS的nginx 二级Wordpress目录如何静态化?
    试过了好几个方法,都显示404错误,不知道博主是如何做的?
    想参考下你的Nginx配置文件,可以吗?

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据