夏侯 发布的文章

/etc/systemd/system/ 增加gogs.service 文件,内容如下

[Unit]
Description=Gogs Service
After=network.target
Wants=network.target

[Service]
# You may consider to run it as another use for security concerns.
User=git
Group=git
Type=simple
PIDFile=/var/run/gogs.pid
ExecStart=/home/git/gogs/gogs web
Restart=on-failure

[Install]
WantedBy=multi-user.target

之后就可以执行 systemctl start|stop|restart|enable gogs

原理先不说了,关于Linux TCP连接的问题,网上很多,这里只写一下一种解决方案。
Nginx 1.1以上版本的upstream已经支持keep-alive的,所以我们可以开启Nginx proxy的keep-alive来减少tcp连接。
upstream中的keepalive设置单个worker最大请求数,参数proxy_http_version 1.1强制转换为http1.1协议(默认支持长连接),proxy_set_header Connection将请求头部connection为空(http1.0请求默认connection头部为close)。

upstream http_backend {
    server 127.0.0.1:3003;
    keepalive 16;
}

server {
    ...
    location /http/ {
        proxy_pass http://http_backend;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        ...
    }
}

开机后 uname -r 看看是不是内核 >= 4.9

执行 lsmod | grep bbr,如果结果中没有 tcp_bbr 的话就先执行

modprobe tcp_bbr
echo "tcp_bbr" >> /etc/modules-load.d/modules.conf
执行

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

执行

sysctl net.ipv4.tcp_available_congestion_control
sysctl net.ipv4.tcp_congestion_control
如果结果都有 bbr, 则证明你的内核已开启 bbr

执行 lsmod | grep bbr, 看到有tcp_bbr 模块即说明 bbr 已启动

先直接上代码,先是JavaScript部分,定义一个component,router,vue对象

var dashboard_vue = function (resolve, reject) {
    $.get('/dashboard/').done(function (template) {
        resolve({
            template: template,
            data: function () {
                return {}
            },
            created: function () {},
            methods: {}
        });
    });
};

var router = new VueRouter({
    routes: [
        {path: "/dashboard", component: dashboard_vue},
    ]
});

var app = new Vue({
    router: router,
    data: function () {
        return {}
    },
    created: function () {},
    methods: {}

}).$mount("#app");

下面是html模版

<div class="ui main grid container content">
    <h1 class="ui header">Dashboard</h1>
</div>

这样就可以在dashboard_vue component 实例化的时候动态的去sever端请求模版,好处是不用一次性加载全部的模版,同时可以在服务端对模版做一次渲染,前后端都能够渲染的情况下,很多功能实现起来会更加灵活

在Dropbox,我们的网络团队最近升级了前端Nginx的服务器,并让我们的Web服务支持启HTTP/2。 在这篇文章中,希望分享我们在HTTP / 2转换过程中的经验和研究成果。 对我们来说虽然这次升级整体是平滑升级,但是也有需要注意几个问题,可能有些人也会遇到。

- 阅读剩余部分 -