美文网首页
折腾服务器

折腾服务器

作者: RuffianJay | 来源:发表于2017-07-23 23:32 被阅读587次

一. 心血来潮

FQ 对于我来说从来不是什么刚性需求,以前对那些所谓的“秘闻”痴迷不已,后来对这些失了兴趣。直到我开始使用Google Photos , 又开始频繁地上Google 。近来各种整顿,上Google的各种途径越来越不好走。索性自己搭个SS吧,说干就干。这时是晚上10点50。

二. 初次交手

由于以前也混迹过科学上网的圈子,便直奔逗比根据地看了几篇对比介绍vps的文章,买了最便宜的搬瓦工套餐。不仅便宜,而且支持支付宝付款,比较方便。因为搬瓦工集成了SS服务,所以直接进入后台开启便可。由于我办的是长城的宽带,出口速度非常不尽人意。Google Photos备份最高都只能偶尔到100K/S左右。联隔壁的联通还能上到1M/S。连上搬瓦工后台都卡顿,这东西真是让人恼火。一番折腾下来,已是凌晨,该睡觉去了。

三. 优化速度

次日一早便在公司试了下,还是Google Photos最高速度依然在1M/S多。于是趁着闲暇时间搜了一下如何优化SS。

比较推荐的有锐速,FinalSpeed,TCP-BBR等,由于锐速已破产,FinalSpeed已停止更新,所以选了BBR。BBR是谷歌社区开发的TCP拥塞控制技术,目前Linux Kernel 4.9 以上的版本都已加入了该算法,所以我们只要升级内核,即可享用。大概了解了一下,这技术大概就相当于交警和红绿灯。能保证线路的畅通,保证效率最大化吧。具体就不介绍了,反正我也不知道,能用就行了。

我的系统是 CentOS 6 x64,以此平台为例,说明如何更新的。值得注意的是目前仅支持kvm架构,不支持openvz。

go,首先通过下面命令查看当前内核版本是否>=4.9

uname -r

下载内核

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -ivh http://elrepo.org/people/ajb/devel/kernel-ml/el6/x86_64/RPMS/kernel-ml-4.12.0-0.rc8.el6.elrepo.x86_64.rpm 
sed -i 's:default=.*:default=0:g' /etc/grub.conf (设置为默认内核)

然后可以通过命令 sudo vi /boot/grub/grub.conf 查看是否设置成功,如果没有可手动将 default修改为版本号 >= 4.9的内核版本即可,序号从0开始 . 接着查看/etc/sysctl.conf 是否存在net.ipv4.tcp_congestion_controlnet.core.default_qdisc,存在就删除掉。

echo "net.ipv4.tcp_congestion_control = bbr" >> /etc/sysctl.conf
echo "net.core.default_qdisc = fq" >> /etc/sysctl.conf
sysctl -p

执行这一步时可能会有类似报错error: "No such file or directory" setting key "net.core.default_qdisc",不用管直接reboot即可。重启后执行

sysctl net.ipv4.tcp_available_congestion_control

如果结果中有bbr,则证明你的内核已开启BBR。
执行 lsmod|grep bbr,看到有tcp_bbr模块即说明BBR已启动。
执行以下两个命令如果有bbr,则也表示成功运行

sysctl net.ipv4.tcp_available_congestion_control
sysctl net.ipv4.tcp_congestion_control

至此,加速完成,最高速度可以达到2-3M/S,但也不是非常稳定,可能是因为服务器在美国吧,经常抽个风什么的也说不定。也可能是服务器机房的原因。

四. 搭建博客

博客以前是用HEXO,因为是静态博客,简单易用,但迁移,发布都比较麻烦。一直想整个动态博客,最开始是打算用wordpress,但比较臃肿,而且是用PHP写的,对此心有一些不爽,毕竟自己是学Java的。终于末日在v2ex遇到了tale这款博客。完全符合自己的期望,就是你了。
首先要安装jdk8,如果之前有安装jdk,先要卸载. 然后使用命令

yum -y list java*
yum -y install java-1.8.0-openjdk*

完成后可java -version查看java版本。
然后下载tale,可以通过ftp上传,也可以sudo wget http://7xls9k.dl1.z0.glb.clouddn.com/tale.zip 直接下载。然后解压 unzip tale.zip 得到tale文件夹。然后cd tale/bin,进入bin文件夹,执行sh tale.sh start | stop | reload分别为启动,停止,重启。也可以进入tale文件夹java -jar tale-1.2.15.jar启动。
这里会有一个问题,当退出终端或者远程连接时tale进程会一起终止,这里需要执行命令

nohup java -jar tale-1.2.15.jar >log.txt 2>&1 &

nohup的作用是不挂断运行命令,当终端或用户退出时程序仍然运行,> log.txt是将该任务的所有输出重定向到log.txt,不在屏幕输出。可通过jobs命令查看后台运行任务。如果想将任务调回前台,只需要 fg+编号即可。
至此,tale也就部署成功了。在浏览器地址栏输入ip:9000/install进入安装。
以后输入ip:9000进行访问,ip:9000/admin进行后台管理。

五. nginx代理

1.首先需要安装几个依赖,GCC(Linux一般自带), PCRE(Perl Compatible Regular Expression),OpenSSL .Nginx的Rewrite和HTTP需要用到PCRE,HTTPS支持需要OpenSSL。我这里系统是CentOs6 x64.

yum -y install pcre*
yum -y install openssl*

2.安装nginx

wget http://nginx.org/download/nginx-1.7.8.tar.gz

tar -zxvf nginx-1.7.8.tar.gz

cd nginx-1.7.8.tar.gz

./configure --prefix=/usr/local/nginx-1.7.8 \
--with-http_ssl_module --with-http_spdy_module \
--with-http_stub_status_module --with-pcre

一切正常后可以编译了

make
make install

完成之后进入nginx目录(默认)

cd /usr/local/nginx

如果忘记路径可通过whereis命令搜索。
最后 启动 | 停止 | 重启 nginx

/usr/local/nginx/sbin/nginx
/usr/local/nginx/sbin/nginx -s stop  
/usr/local/nginx/sbin/nginx -s reload

接下来配置nginx。

vi /usr/local/nginx/conf/nginx.conf
server{
    listen 80;
    server_name www.jaytang.me;
    location /{
        proxy_pass http://127.0.0.1:9000;
    }
    ........
}

接下来直接访问ip,依然能访问成功。

六. 域名绑定

一大串ip实在是太难记了。我得买个一个好记的域名。出于经济和性价比的原因,我选择去namesilo购买,不仅便宜,而且提供免费的隐私保护,而且还支持支付宝付款。购买时可以去网上搜索验证码,可以便宜一美元。
DNS解析是采用的是比较流行的dnspod
进入域名管理后台,将域名的 nameserver改为dnspod的服务商

f1g1ns1.dnspod.net
f1g1ns2.dnspod.net

然后进入dnspod后台管理添加纪录即可,其中主机记录如果是www则表示域名要加www才能访问,如果是@表示不要加www即可访问。记录添加成功后最快几分钟内便会生效,最长72小时内会全球同步。
这里我出现过一个问题,搞了很久。那就是当页面跳转到非主页时,url显示的还是 ip:9000/***/***.这里需要进入tale的后台管理,将博客地址设置为域名即可。

七. 启用https

https其实也不是什么必须的东西。既然都弄好了,那也便试试吧。首先开启https需要有ssl证书,前面提到nginx有个openssl模块,这个便是可以生成自签名证书的。如果使用这个证书,浏览器便会提醒用户这是个不安全的网站,给你的URL上画个大大的红线。现在申请免费SSL证书十分快捷粗暴,为了去掉那讨厌的红线,只好去申请个正宗的SSL证书。这里我直接使用腾讯云的SSL证书,实名认证即可,非常快。当然,如果不想认证,去国外申请也是可以的。申请通过后,下载证书,提取ngixn模块下的 .crt.key两个文件上传到/usr/local/nginx/conf. 然后配置 nginx.conf

server {
        listen    80 ;
        listen   443  ssl ;  #同时监听80和443端口,即同时开启http和https
         server_name  www.jaytang.me;  #域名
         ssl_certificate /usr/local/nginx/conf/1_www.jaytang.me_bundle.crt; # 腾讯云证书
        ssl_certificate_key /usr/local/nginx/conf/2_www.jaytang.me.key; #key
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
        ...........
}

这里也出现过一个问题,困扰了很久,那就是当访问https时,CSS 和 JS,图片文件无法加载,会被浏览器认为不安全脚本。需要手动确认后才能加载。查了很多资料才知道原因,是因为https中包含引用了http的资源,这种混合请求会被认为是不安全的。但http包含https是没有问题的。针对这个问题,我认为应该通过nginx配置来解决问题,通过正则匹配不同的文件类型来做出不同的操作,结果并没有什么用。对nginx的认知实在太少,完完全全在照搬网上给出的配置来一个个试。整整一天,还是没有解决。第二天我想起了源码,去把对应的文件找出来,改为https就可以了。我觉着应该是这么个搞法,一看源码发现这些被拦截的文件都是引用了一个地址,也就是说这个地址是从后台获取的,应该是存在于数据库中的一个字段。应该是可以由用户定义的字段,那么........显而易见,所有和url地址相关的设置只有一个地方,和上面一样,没错,就是把上面配置的域名改为https即可。
问题迎刃而解,我心中还有一个想法,那就是是否要强制使用https呢?那也十分简单,修改nginx配置文件。监听本地80端口,将http请求转发到 https。

   server {
    listen 80;
    server_name www.jaytang.me;
    rewrite ^(.*)$ https://$host$1 permanent;
    }

八. 最后说几句

哎,折腾这玩意最大的障碍不是各种报错,不是这种稀奇古怪的问题。而是网络,那狗屎长城宽带,访问什么都慢,折腾什么都扎心。去你的渣渣!!!

相关文章

  • 折腾服务器

    一. 心血来潮 FQ 对于我来说从来不是什么刚性需求,以前对那些所谓的“秘闻”痴迷不已,后来对这些失了兴趣。直到我...

  • 折腾服务器……

    写在前面 首先感谢建明老师给大家提供使用服务器的机会。经过了几天的折腾大概说一下心得,也算是记录自己的所有操作,温...

  • 自己拥有一台服务器可以做哪些很酷的事情?

    买了磐石云云服务器后,打算来折腾一下服务器。服务器都有哪些用途? 现在互联网提供的任何服务,都是基于服务器的,例如...

  • 一个前端的nginx之旅

    前段时间买了个服务器和域名,开始折腾服务器。安装了node和nginx作为服务器容器,对于nginx的使用有了基本...

  • unbutu18.04安装及使用常用工具201907

    这段时间折腾devops,公司内服务器无法连接外网,安装docker及下载images等很不方便,且服务器随...

  • # 自己拥有一台服务器可以做哪些很酷的事情

    买了云服务器后,打算来折腾一下服务器。服务器都有哪些用途? 建网站、博客。 图床 内网穿透、反向代理 私人网盘下面...

  • 半小时建立起属于自己的网站

    简介 买了阿里云云服务器后,打算来折腾一下服务器。服务器都有哪些用途? 大概列一下常用的方法: 建网站、博客。就是...

  • 找到了一个搞定Linux配置的好工具

    这段时间折腾Ubuntu和samba把我折腾的够呛,还莫名其妙的给服务器装了一个Kubuntu的“操作系统”。然后...

  • 基于Ubuntu的服务器搭建教程(Tomcat + Servle

    最近有需求要搭建一个服务器,该服务器可以接收Json并返回Json。再此之前从未接触过服务器搭建的我,开始了瞎折腾...

  • 远程连接阿里云 常用操作

    总结下连接服务器后常使用到到操作,不常折腾服务器,一用起来就得查来查去,写下来,方便以后查阅; ssh登录服务器 ...

网友评论

      本文标题:折腾服务器

      本文链接:https://www.haomeiwen.com/subject/czfvkxtx.html