1. 购买域名

个人推荐 GoDaddy 老品牌、稳定、活动力度还不小(非店大欺客),且支持支付宝付款;缺点是不支持中文。 - 很久之前用过 Bluehost,体验很差(主要是慢),这次没试,刚看了一下,已经支持中文了,技术支持应该比之前会好一些。 - 这次还看了糖果主机 Sugarhosts ,支持中文和支付宝付款,不过笔者订购的时候比 GoDaddy 贵一些,而且生效时间比 GoDaddy 长(交完钱之后挺长时间都是“待定”状态,而 GoDaddy 申请完就生效了);最坑爹的是域名服务不支持退款,跟它客服沟通了半天,才把钱给退了(买服务的时候一定要把服务条款看清,慎之慎之)。

P.S. 多说一句,目前最火(贵)的 “高大上” 域名顺序是(.com域名性价比较高):

.io > .me > .in > .xyz > .cc > .com > .org > .net > .info

2. 购买 VPS

一般的虚拟主机限制太多(当然最便宜),而独立服务器又太贵(个人试水的时候完全没必要),这时候 VPS 就提供了一个个人建站性价比最高的解决方案:你可以随便折腾你的系统(这点对程序员来说非常重要),又花费不高。

这里强烈推荐 Linode,高度可定制、速度还可以(国内用户建议选择日本机房),最基础(便宜)的版本 Linode 1GB 每月10美元(不过目前好像这个版本没有日本机房了,囧);你还可以同时选择 VulerDigitalOceanLinode 进行容灾备份,它们的最基础价格都是每月5美元。

购买好 vps 以后,你就可以把你的 IP 绑定到你的域名上,准备提供对外网站访问了。

当然,还有一些安全设置、网络高级配置等等,可以按照Linode的文档库中所讲的一项一项设置。

3. VPS 环境设置

笔者的目的是试水个人网站开发,不采用传统的LAMP架构;数据存储目前计划是使用免费的云存储(如七牛云),开发语言选择 Go(Full Stack 解决方案),服务器代理用 Nginx;还可以尝试 Docker,看看是否能建立一套不一样的生态体系。

Go 环境搭建

先安装 go1.4

(1) 下载源码

$ wget https://storage.googleapis.com/golang/go1.4.2.src.tar.gz

(2) 设置环境

$ vim ~.bashrc

增加如下设置

export GOROOT=$HOME/go
export GOOS=linux
export GOARCH=amd64
export GOBIN=$GOROOT/bin
export GOPATH=$HOME/workspace/go
export PATH=$PATH:$GOBIN

(3) 安装

$ tar -xzvf go1.4.2.src.tar.gz
$ cd go/src && ./all.bash

(4) 验证安装

$ go version

此时你应该能看到如下信息

go version go1.4.2 linux/amd64

(5) 为了下面能够顺畅安装 go1.5,把源码拷到 $GOROOT 下,并改名

$ cd .. && cp -rf * $GOROOT
$ cd && mv go go1.4

再安装高大上的 go1.5

(1) 获取源码

$ git clone https://go.googlesource.com/go
$ cd go
$ git checkout go1.5.1

(2) 编译

$ cd src && ./all.bash

(3) 验证安装

$ go version

此时你应该能看到如下信息

go version go1.5.1 linux/amd64

(4) (Optional) 源码到 GOROOT 下并删除 go1.4

$ cd .. && cp -rf * $GOROOT
$ cd && rm -rf go1.4

(5) 设置 go 工作环境

$ cd && mkdir -p worksapce/go
$ cd workspace/go && mkdir bin pkg src

(6) 安装有用的 go tools

$ go get golang.org/x/tools/cmd/...

(7) (Optional) 搭建 web 网站,推荐一个非常好用的 Go 框架 beego

$ go get github.com/astaxie/beego
$ go get github.com/beego/bee

至此,你的 Go 环境就完全设置好了,以上是在 Ubuntu14.04 LTS 上亲测可行的源码安装方式,更详细的信息,可以参考其官方文档

Nginx 环境

(1) 获取源码

$ hg clone http://hg.nginx.org/nginx

(2) 编写 Buildfile

$ cd nginx && vim Buildfile

内容如下:

all install:
	  ./auto/configure --user=www --group=www --prefix=${HOME}/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-http_image_filter_module
	  make
	  make install
clean:
	  make clean

(3) 安装依赖

$ sudo apt-get install libpcre3-dev libssl-dev libgd-dev

(4) 源码安装

$ make -f Buildfile

(5) 验证安装

$ $HOME/nginx/sbin/nginx -v

如果看到类似如下信息,证明nginx安装成功

nginx version: nginx/1.9.5

Docker 环境

关于Docker环境的安装,可以参考我这篇文章,这里再简单列一下:

(1) 获取最新的 docker package

$ curl -sSL https://get.docker.com/gpg | sudo apt-key add -
$ curl -sSL https://get.docker.com/ | sh

(2) 创建 docker 用户组并添加到你的用户

$ sudo usermod -aG docker your_user_name

(3) 更新最新的 docker engine

$ curl -sSL https://get.docker.com/ | sh

(4) 验证安装

$ docker run hello-world

(5) (Optional) 获取 docker 源码

$ git clone https://github.com/docker/docker.git

4. SS上网配置

天朝的上网大家都懂的,为了自由地获取信息,笔者曾经使用过多种不同的方法,早期以免费为主,包括

它们最大的缺点是不稳定,下面介绍一种基于 ShadowSockes 的“安全”上网方法,不多说,步骤如下3:

(1) 在你的 VPS 上运行 shadowsocks-server:

$ go get github.com/shadowsocks/shadowsocks-go/cmd/shadowsocks-server

并配置 config.json, E.g. 你的 server 开启 8088 端口提供服务:

{
    "server":"127.0.0.1",
    "server_port":8088,
    "password":"MySSServerPasswd@VPS",
    "timeout":600,
    "method":"aes-128-cfb"
}

最后启动

$ nohup shadowsocks-server -c config.json > sss.log &

(2) 在你的本机运行 client:

$ go get github.com/shadowsocks/shadowsocks-go/cmd/shadowsocks-local

并配置 config.json,E.g. 本机开启 7070 端口进行服务:

{
    "server":"your_vps_ip_address",
    "server_port":8088,
    "local_address":"127.0.0.1",
    "local_port":7070,
    "password":"MySSServerPasswd@VPS",
    "timeout":600,
    "method":"aes-128-cfb"
}

最后启动

$ nohup shadowsocks-local -c config.json > ssl.log &

(3) 这时,你就可以用如下配置在本机安全上网了:

SOCKS5 127.0.0.1:7070

比如,你可以配置 chromeSwitchyOmega 插件,新建 profile 把上述 proxy 信息填进去,保存后使用此 profile,chrome 访问 https://www.google.com/ncr,bingo :) 享受你的自由吧!

至此,环境就基本搭好了,可以继续折腾你的个人网站了。



  1. 被墙,需自备翻墙工具访问(这又是类似一个鸡生蛋蛋生鸡的问题);第三方提供的下载需谨慎,一般都有后门

  2. goagent 作者迫于压力,在 github 的源码已经删除

  3. shadowsocks 的源码在 github 也已经删除了,目前用的是其 go 实现的一个版本 shadowsocks-go