博客搭建笔记

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

购买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. 学习了~我自己也建了个站,不过跟博主差远了。。。我学软件不久,建站更是菜鸟中的菜鸟。现在买的香港的空间,不支持php,所以也用不了WordPress。自己写的站练练技术还行,实际使用光界面就差的远了。看了博主的文章,对vps有了更深入的了解,过段时间买个用用看。

    • 如果只是写博客的话,那样也够了。

      但自己有个vps可以做很多事情。

    • 你可以ping下,我这边大概是这样:

      $ ping coderbee.net

      Pinging coderbee.net [198.56.238.193] with 32 bytes of data:

      Reply from 198.56.238.193: bytes=32 time=180ms TTL=52
      Reply from 198.56.238.193: bytes=32 time=184ms TTL=52
      Reply from 198.56.238.193: bytes=32 time=267ms TTL=52
      Reply from 198.56.238.193: bytes=32 time=185ms TTL=52

      Ping statistics for 198.56.238.193:
      Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
      Approximate round trip times in milli-seconds:
      Minimum = 180ms, Maximum = 267ms, Average = 204ms

  2. 求博主的nginx和wordpress关于URL rewrite的配置
    如果不便于贴出来,烦请email给我,谢谢!

    • 我的nginx没有配置url rewrite,所以文章的url可以看到index.php,至于/notes/20130620/,是wordpress允许的定制url模式。

    • 1. 如果你的博客是建立在自己的vps上,你拥有与博客相关的所有数据:访问日志、评论交互等。一般的博客只会让你导出文章吧。从访问日志你可以看到用户来自哪里,通过什么样的渠道来到你的站点,比如我昨天看日志,发现绝大多数都是从dbanotes上过来的。
      2. 翻墙肯定是个重要用途了。
      3. 做个中转了,比如有时候我要下个jar包,结果直接下很慢,我就在vps上下载好,再scp下来,scp的速度可以达到上百K,我觉得很不错。
      4. 有了个不关机的机器,你可以把你长时间运行的任务放到vps上去跑啊,就不用老是开着本地的电脑了。
      5. 如果不怎么懂linux,可以学着管理linux服务器,至少可以学学shell啥的,用惯window的也不用搞双系统了,装个ssh客户端就行。

      我也还在挖掘vps的更多用途,真心建议你买个试试,毕竟93元/年也不是多少钱,也没必要一开始就买很贵的,一般用不了那么多资源。

      很多没用过的东西,我们都不知道能用来干嘛,但用多了,就能发现更多的用法,期待你的分享!

  3. 我在51php上买了一个虚拟主机(香港),但是我想搭建一个vpn服务器,但是网上的教程都让我无从下手,51php提供给我的管理面板只能管理一些数据库和域名、空间之类的,是不是意味着我买的只是一个空间而已,不能搭建VPN?原谅我是个新手

    • 虚拟主机与vps的区别你可以看看这张图:
      vps-服务器-虚拟主机-区别

      所以应该没法搭建VPN了。

  4. 哎呀,还是模糊着虚拟主机~VPS的概念,我如果建站,用这两者之一配域名,都是可以的吧?

    • 我觉得那张对比图说得很明白了。配域名是要指向独立IP的,有就可以吧。

  5. 一直苦于没有一个合理的vps能搭载我的博客,因为我的博客是自己写的,当初用的数据库比较偏门- – ,看到博主的这个vps价格也挺合理的,就买了,现在搭建起来了,也学习了linux的一些基础命令,非常感谢博主的资料

  6. 看了这篇文章,买了一个vps。不过用ssh翻墙感觉有点慢,搭vpn时出现问题,iptablesg不能使用nat。不知你在上边搭了vpn没。

发表回复

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

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