写代码期间,都是用pycharm直接运行调试的。本机测试环境跟服务器环境有着很大的不同,于是如果想部署到服务器还是要重新配置环境的。
这里使用的是nginx + uwsgi 的方式。服务器是debian,其它操作系统类似
1. 安装nginx
(略)
2. 安装uwsgi
apt-get install uwsgi3. 上传代码到服务器目录
上传后确定项目目录,比如/usr/share/nginx/html/hello
下面均以这个目录为例
4. 初始化项目python环境
# 进入项目目录
cd /usr/share/nginx/html/hello
# 初始化环境
virtualenv venv
# 如果还没安装virtualenv,请先安装:pip install virtualenv
# 如果还没安装pip,请先安装:apt-get install python-pip
# 激活当前项目环境
source venv/bin/activate
# 生成依赖requirements.txt
pip freeze > requirements.txt
# 安装依赖包
pip install -r requirements.txt
# 安装项目的uwsgi
pip install uwsgi5. 配置uwsgi
项目目录下新建uwsgi.ini文件
第一个socket是开启的本地访问端口,后面的nginx代理会用到
第二个socket是uwsgi输出的文件
[uwsgi]
uid = www-data
gid = www-data
master = true
socket = 127.0.0.1:8101
chdir = /usr/share/nginx/html/hello
socket = %(chdir)/uwsgi/uwsgi.socket
virtualenv = %(chdir)/venv
wsgi-file = app.py
callable = app
processes = 4
threads = 2
stats = %(chdir)/uwsgi/uwsgi.status
pidfile = %(chdir)/uwsgi/uwsgi.pid
同时新建uwsgi文件夹,并新建空文件:
touch uwsgi/uwsgi.pid
touch uwsgi/uwsgi.status
touch uwsgi/uwsgi.socket6. 配置nginx
新增配置文件, uwsgi_pass 的端口号对应上面uwsgi里的socket端口
server {
listen 80;
server_name 你的域名;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8101;
uwsgi_param UWSGI_PYTHON /usr/share/nginx/html/hello/venv;
uwsgi_param UWSGI_SCRIPT app:app;
uwsgi_param UWSGI_CHDIR /usr/share/nginx/html/hello;
index index.html index.htm;
client_max_body_size 35m;
}
access_log /var/log/nginx/access_hello.log combined;
error_log /var/log/nginx/error_hello.log error;
}新增修改后记得重启生效nginx -s reload
7. 启动项目
以下命令在项目环境下运行,并且是激活当前项目的venv环境下的终端运行
# 记得先安装项目的uwsgi依赖包
# pip install uwsgi
# 启动
uwsgi --ini uwsgi.ini
# 如果要后台运行则加-d: uwsgi -d --ini uwsgi.ini8. 完成
(愉快地访问吧)
评论