由于最近才接触python flask web开发,在根据基于python的flask web开发实战学习一段时间后,成功的将个人博客项目完成,
这里主要是将我的项目部署到服务器的过程。
一
1. 将本地文件上传到服务器上,利用scp上传本地文件到服务器下,我的项目在服务器上的地址为 /var/www/ 下
当然你也可以使用github作为项目托管,可以方便你更新项目,当然也有助于你学习github的使用,
二
这时你的服务器上已经有了项目文件,接下来
1. 进入的你的项目根目录下,为了解决库依赖问题,我们先创建一个虚拟环境,输入virtualenv venv 就会创建一个名为venv的文件夹,使用source venv/bin/activate 启动虚拟环境。
2.利用pip install -r requirement.txt 安装所需要的依赖(在本地使用pip freeze > requirements.txt生成项目所需要的库)
3.启动uwsgi 使用pip install uwsgi 安装 uwsgi是一个web服务器,
在项目根目录下创建一个config.ini文件
配置uwsgi文件
[uwsgi]
#uwsgi 启动时所使用的地址与端口`
socket = 127.0.0.1:5000
#指向网站目录
chdir = /var/www/myflask
# python 启动时程序文件
wsgi-file = /var/www/myflask/manage.py
#python 程序内用以启动的application 变量名
callable = app
#处理器数
processes = 4
#线程数
threads = 2
#状态检测地址
stats = 127.0.0.1:9191
启动 uwsgi config.ini
ctrl + c关闭
三. 安装nginx
yum install nginx
安装成功后 配置文件在/etc/nginx/目录下 ,nginx.conf 不用修改,进入到conf.d目录下,新建自己项目的配置文件*.conf
配置如下
server {
listen 80;
server_name ip;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:5000;#指向uwsgi所应用的内部地址,所有请求将
转发给uwsgi处理
uwsgi_param UWSGI_PYHOME /var/www/myflask/venv;#指向虚拟环境目录
uwsgi_param UWSGI_CHDIR /var/www/myflask;#指向网站根目录
uwsgi_param UWSGI_SCRIPT manage:app; #指定启动程序
}
}
启动 sevice nginx restart 或者 nginx -c /etc/nginx/nginx.conf
关闭 nginx -s stop
启动nginx 后 启动uwsgi
这样就可以在浏览器商访问了
四
但是这样好像uwsgi不能关掉
这需要使用进程管理工具supervisor 来启动nginx
安装supervisor yum install supervisor
配置文件在/etc/supervisord.conf
自己项目文件配置可以在/etc/supervisord.d下创建
[program:myflask]
#启动程序入口
command = uwsgi /var/www/myflask/config.ini
#命令程序所在目录
directory = /var/www/myflask
#运行命令的用户
user = root
autostart = true
autorestart = true
#日志地址
stdout_logfile = /var/www/myflask/logs/uwsgi_supervisor.log
启动 supervisord -c /etc/supervisord.conf
这时。会出现
Another program
is
already listening
on
a port that one of our HTTP servers
is
configured to use. Shut
this
program down first before starting supervisord
查找
find / -name supervisor.sock
进入到
/run/supervisor/supervisor.sock
输入
unlink supervisor.sock
启动就
ok
了
在部署到阿里云时
,配置完后出现
502
错误,就是因为
suoervisor
没启动,找好多资料一步步检查才找到问题根源所在