的随着新的一年的到来,我终于意识到自己挖的坑越来越多了,这个地方也一年没写东西了。
那么就把前几天折腾的服务器配置记录大致整理一下吧,也作为以后的记录。
之前一直参考的是凤凰卷的配置指南,这篇的平台还是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