ubuntu config

自带的vi太难用,先装vim,terminal中输入vi,然后tab键,可以看到系统只安装了vi和vim.tiny

1
$ vi tab

输入命令

1
$ sudo apt-get install vim-gtk

安装好之后再输入vi + tab可以看到已经安装了vim,
再输入

1
$ sudo vim /etc/vim/vimrc

会打开vim配置文件,默认syntax on,说明语法高亮。就可以了

supervisor这个坑终于能填上了

不知道写这个包的人怎么想的,不同版本之间bug这么多,踩过的坑一定要记下来
1 不要用apt-get安装supervisor,apt-get版本是3.0b2版本,可能有bug,官方安装(easy_install和pip),按照官方说明配置
解决方法: 删除老版本,用easy_install安装,现在是3.3.1版本

1
2
$ sudo apt-get remove --auto-remove supervisord
$ sudo easy_install supervisor

2 安装好之后run echo_supervisord_conf,可以打印一份配置文件sample。
修改配置文件,不同安装方法配置文件也在不同的地方!!,官方文档说下面几个路径都会去搜索

1
2
3
4
5
6
1: $CWD/supervisord.conf
2: $CWD/etc/supervisord.conf
3: /etc/supervisord.conf
4: /etc/supervisor/supervisord.conf (since Supervisor 3.3.0)
5: ../etc/supervisord.conf (Relative to the executable)
6: ../supervisord.conf (Relative to the executable)

我们采用3的路径方法,先把sample配置文件导入/etc/supervisord.conf(需要super user权限)

1
2
# 把官方配置文件例子导入到/etc/supervisord.conf的文件中
$ sudo echo_supervisord_conf > /etc/supervisord.conf

如果出现permission denied,说明需要super user

1
$ su -c "echo_supervisord_conf > /etc/supervisord.conf"

然后用vim编辑配置文件,在最后一行添加webapp的设置保存退出

1
2
3
4
5
6
7
8
9
10
11
12
13
$ sudo vim supervisord.conf
[program:awesome]
command = python3 /home/wei/srv/awesome/www/app.py
directory = /home/wei/srv/awesome/www
user = www-data
startsecs = 3
redirect_stderr = true
stdout_logfile_maxbytes = 50MB
stdout_logfile_backups = 10
stdout_logfile = /home/wei/srv/awesome/log/app.log

这里有几个坑需要注意

<1> stdout_logfile 路径需要指定绝对路径,command也是一样,否则会出现log file does not exist的报错。

<2> 因为supervisor只支持python2.7而不是python3(坑爹啊!!!),所以在app前面指定python3,如果还不行就指定python3的绝对路径。应该是用python2启动supervisor,然后再守护python3的进程? 这个还不确定,有待后续研究

<3> 在conf文件没法加载的情况下是没办法reload,或者restart的,所以可以用

1
sudo supervisorctl -c /etc/supervisord.conf reload

来reload,这时候会输出

1
Restarted supervisord

然后查看supervisor运行状态

1
2
3
sudo supervisorctl -c /etc/supervisord.conf status
output:
awesome RUNNING pid 20010, update 0:00:04

就说明运行了。oh yeah!~,这时候打开浏览器输入”http://127.0.0.1:9000",可以看到看到我们的网站啦。

再补充几个有用的:
Supervisor 有两个主要的组成部分:

  1. supervisord,运行 Supervisor 时会启动一个进程 supervisord,它负责启动所管理的进程,并将所管理的进程作为自己的子进程来启动,而且可以在所管理的进程出现崩溃时自动重启。
  2. supervisorctl,是命令行管理工具,可以用来执行 stop、start、restart 等命令,来对这些子进程进行管理。
    有的时候提示: 启动supervisord失败,提示error: , [Errno 2] No such file or directory: file: /usr/lib/python2.7/socket.py line: 228 找不到socket文件
    解决方法:重启supervisord的进程,再reload supervisorctl
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ sudo ps ax | grep supervisor # 查询supervisord进程,
    2516 ? Ss 1:35 /usr/bin/python /usr/local/bin/supervisord #记住第一个进程pid
    19342 pts/1 S+ 0:00 grep --color=auto supervisord #这是grep命令的进程,不用管
    # 如果没有supervisord这个进程,说明并没有启动,继续检查配置文件
    $ sudo kill 2516 # 杀死这supervisord该死的进程
    $ sudo supervisord # 启动supervisord
    $ sudo supervisorctl reload # reload supervisordctl
    $ sudo supervisorctl start awesome # 启动程序
    $ sudo supervisorctl status # 查看状态