程序员建站极简指南
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美元(不过目前好像这个版本没有日本机房了,囧);你还可以同时选择 Vuler 和 DigitalOcean 对 Linode 进行容灾备份,它们的最基础价格都是每月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
比如,你可以配置 chrome 的 SwitchyOmega 插件,新建 profile 把上述 proxy 信息填进去,保存后使用此 profile,chrome 访问 https://www.google.com/ncr,bingo :) 享受你的自由吧!
至此,环境就基本搭好了,可以继续折腾你的个人网站了。