Dream Sphere

梦想的空间

海外置业指南

的随着新的一年的到来,我终于意识到自己挖的坑越来越多了,这个地方也一年没写东西了。

那么就把前几天折腾的服务器配置记录大致整理一下吧,也作为以后的记录。

之前一直参考的是凤凰卷配置指南,这篇的平台还是Ubuntu 12.04 LTS,而我现在的服务器上主流使用的是Ubuntu 14.04 LTS。去年夏天曾经使用过 16.04,遇到了一部分稳定性问题以后就换回14.04了。而且锐速也不支持16.04,虽然现在也不用了。

第一章 Shadowsocks

在海外盖房子第一件事当然是搭梯子,之前用过一段时间的SSR,年底的时候又搞了个大新闻,看在整个项目前景堪忧的份上我还是换回原始的SS好了。

其实这东西本身很简单,总觉得有些写自动化脚本的大神把简单的东西弄复杂了,我还是记录一下手工工序好了。

安装

apt-get install python-pip
pip install shadowsocks

配置文件样例

{
    "server":"my_server_ip",
    "server_port":587,
    "local_address": "127.0.0.1",
    "local_port":1080,
    "password":"mypassword",
    "timeout":300,
    "method":"rc4-md5",
    "fast_open": true
}

安装Supervisor
easy_install supervisor
这是官网推荐的方式,姑且记下。实话说我记得当时我还是用apt-get来着。

Supervisor配置文件
nano /etc/supervisor/conf.d/shadowsocks.conf

[program:shadowsocks]
command=ssserver -c /etc/shadowsocks.json
autostart=true
autorestart=true
user=root

设置Supervisor的主要考虑在于有些服务器需要不定期重启,相比我以前直接挂一个进程来说更方便。

因为锐速崩溃的时候比能用的时候多,所以TCP优化这一点我还是手动完成好了。
SS给出了一份教程,就不复读了:https://github.com/shadowsocks/shadowsocks/wiki/Optimizing-Shadowsocks

第二章 LAMP(或者LNMP)

要是盖好房子要请客人来就需要装修一下客厅,然后摆出一套桌椅沙发来接待客人。
两种客厅装修方案的区别就不详述了,大体上根据实际情况选择就行了(像我有一次装自动化脚本把Nginx装坏了被迫使用Apache这种事就不详细说了)。
同理,因为自动化脚本到处都有外加可能会引起各种奇怪的问题,我这里只记录手动方法。
感谢DigitalOcean上的Justin Ellingwood提供的两篇教程:

How To Install Linux, nginx, MySQL, PHP (LEMP) stack on Ubuntu 14.04

How To Install Linux, Apache, MySQL, PHP (LAMP) stack on Ubuntu 14.04

1、Apache2 或 Nginx

无非也就这一步有区别:
Apache:

sudo apt-get update
sudo apt-get install apache2

Nginx:

sudo apt-get update
sudo apt-get install nginx

之后可以用浏览器验证一下。

2、MySQL

sudo apt-get install mysql-server php5-mysql
还有两个配置步骤我个人认为是可选,但是既然教程里提到了,作为可能的故障排除记录一下:
sudo mysql_install_db
sudo mysql_secure_installation

3、PHP
老实说这一步其实也是有区别的,先从Apache开始
sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt
然后修改一下配置/etc/apache2/mods-enabled/dir.conf
把DirectoryIndex里面的index.php调到第一顺位。
重启Apache2service apache2 restart
之后如果需要PHP的其他模块再单独安装。

然后是Nginx
sudo apt-get install php5-fpm php5-mysql
我们需要修改一下/etc/php5/fpm/php.ini,把cgi.fix_pathinfo改成0。
重启PHPservice php5-fpm restart
Nginx最麻烦的莫过于手动修改配置文件,教程里给出的样例我这里原样复读一下。
nano /etc/nginx/sites-available/default

server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;

root /usr/share/nginx/html;
index index.php index.html index.htm;

server_name server_domain_name_or_IP;

location / {
try_files $uri $uri/ =404;
}

error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}

location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

此处旨在配置PHP正常工作,后面还要加需要另外的修改。

第三章 SSL

这个其实算是最近沉迷Cloudflare和Let’s Encrypt不能自拔的后果。
就以Let’s Encrypt大力推荐的Certbot来说,对Apache有自动配置功能,一切都可以按提示操作,所以这里就专门记录一下在Nginx上使用Certbot的繁琐步骤。

首先是安装

wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
./certbot-auto

之后因为不能自动配置,我们要做的就是用Certbot先拿到证书:
./certbot-auto certonly

然后按照申请商业证书的方式配置到Nginx里,证书的位置在/etc/letsencrypt/live/your-domain/

对应的Nginx配置文件里面加上这些

listen 443 ssl;
ssl_protocols TLSv1.2 TLSv1.1 TLSv1;

ssl_certificate     /etc/letsencrypt/live/your-domain/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain/privkey.pem;

之后别忘了配置自动更新证书crontab -e
根据Let’s Encrypt官网推荐的间隔12小时随机时间更新,在最下面加上

12 4 * * * bash /etc/certbot/certbot-auto renew --quiet --no-self-upgrade
7 16 * * * bash /etc/certbot/certbot-auto renew --quiet --no-self-upgrade