由于最近才接触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没启动,找好多资料一步步检查才找到问题根源所在