Dream Sphere

梦想的空间

欢度国庆

嗯,欢度国庆……个鬼!

多亏党国70周年庆典嗷,梯子断了一堆又一堆嗷,这下体现出Linode和AWS自助换IP的重大优势了嗷。

早先也不是没被拆过梯子,哎,逆境求生吧。

不过这次发现一个更明显的问题,显然方教授的刻耳帕洛斯已经被喂养得能自主学习了,有时候新换一个IP,过不到8个小时就瘫痪了。

嗯……也算是体验一下很多重点地区小伙伴们的苦日子吧。

这样一来就不得不做两手准备,好在目前的技术来说,骗过刻耳帕洛斯的眼睛还是做得到的。

前几天开通了Google Cloud Platform之后尝试了一下被很多人奉为神明的Websocket+VMess+Nginx方案。实话说,伪装来讲很到位了,比起我之前简单把KCP伪装成微信视频或μTP都难以发现多了。不过不知道是因为哪个环节的问题,速度上……基本是不能用的状态。别说什么油管4K啥的了,我上黑底P站看马小姐跳舞拉二胡都卡成幻灯片。

后来分析了一下,毕竟在能保障通畅的前提下尽量提高性能才是正道。于是我又搭上了完全暴露的VMess over KCP,唯一的安全性在于用了443端口(实话说这数据特征和TLS完全不一样恐怕更加危险,请勿效仿)。

结果还算满意,效果不错,用了一周左右没有被拆。

但是这样的问题在于,占用了443端口就不能兼做Web服务器了,至少我懒得搞了。

那么现在的问题就是,这个啥都没有的网站扔哪。

碰巧网上看到hostinger搞1刀一个月的活动,还赠一个.com域名一年。顿时有想折腾一下的冲动,毕竟当年用cPanel搞网站的不太愉快的记忆还历历在目,也想看看这年头这玩意到底能做到啥程度。

点结账一看,好嘛,一次性付48个月才能享受0.99刀/月的价格。算了,懒得搬家了,大不了你跑路我用够十几个月就算回本呗?

这边一顿折腾不提,现在搬家很熟练了,唯一就是一个,因为不给SSH的后台,用不了Let’s Encrypt,起码我不会用。那么还有一个办法就是Cloudflare了,确实很久没用了还有点想念。

结果就是各种525错误啦、不信任证书啦之类的……

后来折腾累了睡觉,结果第二天好了……

这时候我才反应过来之前报错的证书是Cloudflare的服务器到CDN专用证书……

啊,你的对外证书不是实时部署的话能不能好好写在文档里啊!

所以目前,本站暂时使用drmspr.com这个域名,为期一年,到时候续费与否……看心情和价格吧。

再次回到Linux

别问,问就是真香

总而言之,经过一番折腾我又回到了Linux的怀抱,更确切的说,是回到了Linode的怀抱。

其实Windows有强大的地方,但是确实对于我的需求来说,带来的麻烦超过了收益。

首先是梯子,因为Shadowsocks-libev的原生Windows(其实还是MinGW)服务端效率极差,Shadowsocks-libQT又面临各种奇怪的问题,我投入了V2Ray的怀抱。

一开始觉得真香啊,这玩意Windows的原生支持甚至比Linux还原生,还自带背景运行,结果越用越奇特。

先是TLS无法实现,这是Windows的证书管理机制问题,算了。

然后发现丢包较多,看了一下,想尝试一下mKCP,结果是配置文件查不出任何错,但是数据包就是过不来。

而且速度慢到不能忍受,虽然没有仔细查是不是Vultr的锅,但是YouTube完全不能看对我来说就要命了。

而且你们不是都说Vmess比SS快得多么!

再加上不明原因家里的网用远程桌面卡到令人发指,今天终于忍不住了上Linode开了个机器说拿着之前的配置文件试一下。

mKCP贼鸡儿流畅!

哎嘛这4K真香!

得了,Windows Server我也算爽过了,才疏学浅,告辞!

10年后重回Windows Server

这次因为某些不可抗力的原因,服务器又要进行搬迁。巧在我前日刚看过一篇用DD脚本给云服务器装Windows Server的教程,本着尝鲜的想法想一步到位搞一个Windows Server 2019,感受其作为生产环境的用户体验。

经过多方对比选定的还是Vultr,优点如下:

  • 相对合理的价位。我选择的10刀的套餐提供了1核CPU、2GB内存、55GB存储和2TB月流量,完全满足需求。
  • 支持上传ISO。出于懒得折腾DD脚本的考虑,其实这个最重要。

当然缺点也有,其日本机房在国内访问速度堪忧,不知道是不是家里网络的原因,远程桌面延迟较高,属于可以一边肝手游一边干活的程度……但是在单位的E8400上反倒比较流畅,也可能本身就比较卡我习惯了……

一、制作ISO

因为Vultr提供了付费的Windows Server云服务器,一开始还担心会不会违反TOS,后来在上传ISO的界面看到了提醒使用Windows的用户要手动整合VirtIO驱动的小字,大概是没事吧……

Vultr Docs里面有一篇:https://www.vultr.com/docs/windows-custom-iso-with-virtio-drivers,办法比较简单粗暴,就是把驱动文件夹添加到系统安装盘里,之后在安装过程中手动加载。之前在别的网站上看到过诸如用Dism类的工具整合进系统驱动的教程,我试了一下没有成功,可能原因是VirtIO驱动没有提供Windows Server 2019的版本所以没有自动识别。

整个过程中只有将整合好的ISO上传到服务器的时间比较长,教程上提到Dropbox可以提取直链,我用的之前的服务器,sftp上传耗时1h余。

二、安装系统

Windows系列做的最好的也莫过于系统安装体验了,没有什么好说的。版本方面我选择的Datacenter带桌面体验,毕竟在配置好远程桌面之前是要靠VNC的。

整体来说用VNC和插显示器没有明显区别,延迟有点高可能也是线路问题。

三、系统配置

进系统之后第一印象就和Win10 LTSC没什么两样,没有Cortana也没有念诗,比起桌面系统多了服务器管理器。2019的主要区别在于。弹窗推荐使用Windows Admin Center。装了几次都没有搞定证书的问题,回头再折腾。

激活很简单不提,我就说一句:KMS一时爽,一直KMS一直爽。

在服务器管理器里安装IIS,手动把CGI找出来勾上;去SQL和PHP官网找安装包装回来,这些步骤都没什么,直到……

PHP Documenation推荐了WebPI (https://www.microsoft.com/web/downloads/platform.aspx)。但是微软这Wordpress安装脚本居然装的是MySQL5.1,对于我这种新版本狂魔是不能忍的,所以最后还是手动下载了8.0。(虽然后来我搞明白了为什么要用旧版)

之后是用Duplicator打包旧网站到这边,期间遇到权限、IIS设置等都不是大问题。遇到最新颖的问题在于MySQL密码验证方式不正确。后来查到了要将验证方式额外设置为“mysql_native_password”……

您可能是新版软件的受害者……

四、To-dos

  • RD验证服务将在119天后过期。这个大概知道怎么做,但是不清楚能不能做成……
  • 继续发掘Windoge的潜力

其实我正经用Windows Server搭建服务器环境应该还是第一次……

你问我标题啥意思?

啊,是这样,在Win7发布之前有一阵子我是用Windows Server 2003当桌面系统的……

搬家心得

今天把这个网站搬到了著名的SB Cloud上面(马云你和Softbank谈合作的时候没商量一下这个名字么……)

搬迁WP站点现在也有自动化工具了,我用的是Duplicator,能打包整个站点,备份数据库,之后到新地点也有自动化的安装工具。

然而,我遇到了点小麻烦。

以前经常卡住的是Certbot的验证,但是这次提前更新了DNS,关了Cloudflare,再加上Nginx也有全自动待遇了,总之没出什么意外。

麻烦是,访问解包程序的时候白屏……

查看了一下是php7.0-fpm.sock的路径打错了,这个太蠢,但是没有解决问题。

怀疑是nginx配置有误,访问了一下同目录下的zip文件一切正常。

所以就是php迷之白屏,log里面显示Status 200,phpinfo都白屏,所以可见是php的问题。

搜了一圈,问题出在fastcgi上面,虽然没看懂但是记下来备查吧:

server {
listen [::]:80;
server_name blog.dreamsphere.me;

access_log /var/log/nginx/blog.dreamsphere.me.access.log;
error_log /var/log/nginx/blog.dreamsphere.me.error.log;

root /var/www/wordpress;
index index.php;

location / {
try_files $uri $uri/ /index.php?$args;
}

location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/blog.dreamsphere.me/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/blog.dreamsphere.me/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot

}

加上这一行解决问题,虽然还没理解……

——顺便,图文无关,我只想看一下这个主题下特色图片怎么显示,绝不是要晒夏活全甲全船

海外置业指南

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

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

之前一直参考的是凤凰卷配置指南,这篇的平台还是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