系统是Ubuntu16
Nginx
- 安装
nginx
sudo apt-get install nginx
nginx
的操作
sudo service nginx start
sudo service nginx stop
sudo service nginx restart
- 测试
nginx
是否能用
在浏览器输入服务器的ip
地址,出现nginx
欢迎界面,说明启动成功
- 配置
nginx
默认配置文件是/etc/nginx
里的nginx.conf
,不用管
在/etc/nginx/conf.d
下添加一个新的配置文件
cd /etc/nginx/conf.d
nano bbs_nginx.conf
编辑内容如下
# bbs 是项目名
upstream bbs {
# 指向项目目录下的 socket 文件
# 这个文件在运行的时候会自动生成
server unix:///home/bbs/bbs.sock;
}
server {
listen 80;
server_name 本机ip或域名;
charset utf-8;
# 最大的上传大小
client_max_body_size 75M;
location / {
# 指定访问哪个 upstream
uwsgi_pass bbs;
# 从 /etc/nginx 下复制一份 uwsgi_params 到项目目录下
# 可能要先安装 uwsgi 才会有这个文件
include /home/bbs/uwsgi_params;
}
}
- 写完配置文件后,测试是否正确
sudo service nginx configtest
uWSGI
- 安装
uwsgi
注意要用pip3
来装而不是pip
,不然会报no module named site
的错误
uwsgi
绝对是我在部署的时候碰到过的最恶心的坑
sudo apt-get install libpcre3 libpcre3-dev
sudo pip3 install uwsgi
- 配置
uwsgi
在项目目录下新建一个配置文件
cd /home/bbs
nano bbs_uwsgi.ini
编辑内容如下
[uwsgi]
# 目录的路径
chdir = /home/bbs
# 项目的虚拟环境路径
home = /home/venv/py3
# 模块,这个没搞懂,写启动文件的名字好了
module = wsgi
master = true
processes = 8
# socket 文件路径,和上面 nginx 指定的是一个东西
socket = /home/bbs/bbs.sock
# 指定需要启动的文件
wsgi-file = /home/bbs/wsgi.py
# 启动文件里 flask 实例的名称
callable = app
chmod-socket = 666
- 通过
uwsgi
拉起项目
因为配置是和nginx
相关的,所以要先启动nginx
sudo service nginx start
再通过配置文件启动uwsgi
uwsgi --ini bbs_uwsgi.ini
在浏览器里访问ip
地址,应该就有结果了
Supervisor
- 安装
supervisor
sudo pip install supervisor
- 配置
supervisor
在项目目录下新建一个配置文件
cd /home/bbs
nano bbs_supervisor.conf
编辑内容如下
# supervisor 的程序名称
[program:app]
# supervisor 执行的命令
command=uwsgi --ini bbs_uwsgi.ini
# 项目的目录
directory = /home/bbs
startsecs=0
stopwaitsecs=0
autostart=true
autorestart=true
# 输出的 log 文件位置,要新建 log 文件
stdout_logfile=/home/bbs/log/supervisord.log
# 输出的错误文件位置
stderr_logfile=/home/bbs/log/supervisord.err
[supervisord]
loglevel=debug
# 使用 supervisorctl 的配置
[supervisorctl]
serverurl = http://127.0.0.1:9001
username = admin
password = 123
[inet_http_server]
port = :9001
username = admin
password = 123
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
- 使用
supervisor
运行uwsgi
supervisord -c bbs_supervisor.conf
- 使用
supervisorctl
管理supervisord
supervisorctl -c bbs_supervisor.conf
常用命令
> status # 查看状态
> start program_name # 启动程序
> restart program_name # 重新启动程序
> stop program_name # 停止程序
> reload # 重新加载配置文件
> quit # 退出当前的客户端
status
能查看程序的状态