阿里云云服务器配置 nginx + uwsgi + flask + supervisor
基本配置
阿里云主机操作系统:debian_9_02_64_20G
配置操作
更新系统
1 | sudo apt-get upgrade |
添加用户
添加 web_admin1
sudo adduser web_admin
修改/etc/sudoers,在其中添加用户 web_admin 的配置(关于 sudo 的配置这里不细说了)
安装软件
必备软件1
2
3
4sudo apt-get install python-setuptools
sudo easy_install pip
sudo pip install --upgrade pip
sudo pip install virtualenv
可选软件(系统默认带了 vim,这里安装一个自己用着顺手的就行,后面有不少需要编辑文本的事情)1
sudo apt-get install emacs
修改默认的 python 版本
系统默认的 python 版本是 2.7,改为 python 3.51
2
3# 查看默认的 python 版本
python --version
ls /usr/bin/python* -la
基于用户修改
修改 ~/.bashrc
添加:
alias python=’/usr/bin/python3.5’
重新加载 .bashrc:1
. ~/.bashrc
安装和配置 nginx
1 | sudo apt-get install nginx |
在阿里云主机上,上述安装会失败,需要修改 /etc/nginx/sites-available/default,将
listen [::]:80 default_server;
注释掉后,再次安装即可。
此时,用浏览器打开,可以看到 nginx 的默认主页。
Nginx是一个提供静态文件访问的web服务,然而,它不能直接执行托管Python应用程序,而uWSGI解决了这个问题。让我们先安装uWSGI,稍候再配置Nginx和uWSGI之间的交互。1
2sudo apt-get install python-dev
sudo apt-get install python3-dev
删除掉Nginx的默认配置文件:1
sudo rm /etc/nginx/sites-enabled/default
注意:如果你安装了其他版本的Nginx,默认配置文件可能在/etc/nginx/conf.d文件夹下。
创建一个我们应用使用的新配置文件 /home/web_admin/server/nginx.conf :1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20server {
listen 80;
server_name 47.94.139.151;
charset utf-8;
client_max_body_size 75M;
location / {
root /home/web_admin/server/wwwroot;
index index.html index.htm;
}
location /wx {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8006; # 指向uwsgi 所应用的内部地址,所有请求将转发给uwsgi 处理
uwsgi_param UWSGI_PYHOME /home/web_admin/server/python; # 指向虚拟环境目录
uwsgi_param UWSGI_CHDIR /home/web_admin/server; # 指向网站根目录
uwsgi_param PYTHONPATH /home/web_admin/server;
uwsgi_param UWSGI_SCRIPT server:app; # 指定启动程序
}
}
创建一个链接,并重启 nginx:1
2sudo ln -s /home/web_admin/server/nginx.conf /etc/nginx/conf.d/
sudo /etc/init.d/nginx restart
此时,访问服务器的公网IP,会得到一个错误页面:502 Bad Gateway
这个错误是正常的,它代表Nginx已经使用了我们新创建的配置文件,但在链接到我们的Python应用网关uWSGI时遇到了问题
安装和配置 Flask 工程
1 | cd /home/web_admin/server |
编写 uwsgi_config.ini 文件:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23[uwsgi]
# uwsgi 启动时所使用的地址与端口
socket = 127.0.0.1:8006
pythonpath = /home/web_admin/server/python
# 指向网站目录
chdir = /home/web_admin/server
# python 启动程序文件
wsgi-file = server.py
# python 程序内用以启动的 application 变量名
callable = app
# 处理器数
processes = 2
# 线程数
threads = 2
#状态检测地址
stats = 127.0.0.1:9191
运行 uwsgi :1
2
3. python/bin/activate
./python/bin/uwsgi uwsgi_config.ini
安装和配置 supervisor
Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。1
sudo apt-get install supervisor
在 /etc/supervisor/conf.d/ 目录下新建一个配置文件 server.conf1
2
3
4
5
6
7
8
9
10
11
12
13[program:my_flask]
# 启动命令入口
command=/home/web_admin/server/python/bin/uwsgi /home/web_admin/server/uwsgi_config.ini
# 命令程序所在目录
directory=/home/web_admin/server
#运行命令的用户名
user=root
autostart=true
autorestart=true
#日志地址
stdout_logfile=/home/web_admin/server/logs/uwsgi_supervisor.log
启动服务
sudo service supervisor start
终止服务
sudo service supervisor stop
至此,基本的环境就准备好了,在目录 /home/web_admin/server 中上传 Flask 项目,就可以了。