爬坑小集锦第一期

开场白

欢迎收看本期爬坑小集锦,既然这是第一期,那就废话不说,直接进入正题。

Q1:nginx如何绑定多域名

绑定多域名也就是改改配置文件,不过最近记性有点差,这里抄送一份配置文件。

server {
    listen 80; # 监听来自公网的请求
    server_name www.example.com; # 所要绑定的域名
    # Flask + uwsgi 的配置
    location / {
        include uwsgi_params;
        uwsgi_pass 0.0.0.0:9090;
    }
}

配置文件所在文件夹:/etc/nginx/site-available/


Q2 : Ubuntu如何设置开机自动启动?

同样是修改配置文件,在/etc/rc.local文件中的"exit 0"行前加入所要执行的指令即可

这个问题衍生出了下面这个问题。


Q3 : 为什么设置了之后有些指令还是不启动呢?

这个问题花了我很多时间找答案,可惜找到的方法不是不能用,就是另辟蹊径,绕过了这个问题。

我的情况是,我让系统开机的时候执行uwsgi命令去启动指定的flask应用,命令如下:

/usr/local/bin/uwsgi -x /code/web/project1/uwsgi_config.xml
/usr/local/bin/uwsgi -x /code/web/project2/uwsgi_config.xml

然而重启之后系统只执行了第一句。

造成这种情况的原因很简单,如果我们在命令行里执行第一句uwsgi指令,会发现程序确实正常启动了。是这样没错,但是程序却没有退到后台去运行,而是一直占据着终端的控制权,所以开机的时候系统执行到第一句就卡在那里了。除非第一句开启的程序挂掉,否则第二句的指令是不会执行的。

知道了这点,解决起来就很简单了,只要让它进入后台运行就搞定了。稍微修改下配置文件,简单添加两个字符就搞定。修改后的命令如下:

/usr/local/bin/uwsgi -x /code/web/project1/uwsgi_config.xml &
/usr/local/bin/uwsgi -x /code/web/project2/uwsgi_config.xml &

问题就解决了。破涕为笑

既然说好是合集了,当然不会只有3个小问题,以下是第四弹,小技巧放送篇。


Q4 : ssh远程终端后,长时间未操作,超时导致终端卡死怎么办?

法一

遇到这种情况,以前的我只能默默的关掉GUI终端,再重新开启一个。但自从用了byobu这个终端多开利器后,这招就不好使了。这时就学会了法二。

法二

法二跟法一样简单粗暴,共同点都是杀,法一杀的是GUI终端,法二杀的是ssh程序。

在byobu下按F2开启新的终端窗口,输入:

ps aux | grep ssh # 从输出里查看ssh进程的进程号
sudo kill [进程号] # 杀掉指定进程

但这样打打杀杀终究不是个头,有没有比较温和的方式呢?毕竟我来自崇尚和平的民族嘛。

法三

这么一个人人都会遇到的问题,ssh的作者不会没有考虑到这个问题。本着对自由软件精神的信任,查看了ssh的帮助文档(命令是"man ssh"),果然有了解决方法。

使用快捷键~.即可断开链接。按键顺序是,按住SHIFT,再按~键,放开前面两个键,再按.。整个操作要连贯一气呵成,不然会变成按~>,不行就多按几次呗。除了这个快捷键,还有其他几个快捷键,这里就不说了,作为课后练习,自行查阅文档吧。

That's all, But NOT ALL.

好了,今天的爬坑小集锦就放送到这,感谢你的阅读,我们回去接着爬…我们的目标是:生命有限,爬坑无极限。我们下期再会。