flask项目部署到阿里云服务器

写在前面


如果想看真教程的话请移驾教程传送门,详细到令人发指。
写好了一个半吊子flask项目,又恰逢双十一忍不住买了服务器,所以就有了这篇文章。第一次部署,查了一堆资料耗时二天终于部署成功。当部署成功以后回过头来看看部署时遇到的坎坷,觉得自己像个智障。另外,因为是自己记录过程,所以我已经熟记于心的一些东西就全部省掉了。如果没能帮到您,深表歉意。

部署实施第一步


万事开头难这个是真的,因为只是配置uwsgi就用去了大半时间。起初为了速度,就随便找了篇站内的教程复制、粘贴、修改,结果就是知其然不知其所以然,路路不通。百感交集之际无奈去啃了一丢丢官方文档,然后豁然开朗,虽然了解不深但是足以解我燃眉之急。那么uwsgi到底要怎么配置呢?(配置uwsgi时项目代码已经在服务器,并且位于虚拟开发环境下)

  1. 安装
    • source activate # 开启虚拟开发环境模式
    • pip install uwsgi # 安装uwsgi
  2. 配置
    uwsgi配置文件支持很多格式,我采用.ini格式,命名为uconfig.ini具体内容如下:

  3. 启动uwsgi
    命令输入uwsgi uconfig.ini

  4. 外部访问测试
    此时在外部访问 公网IP:5000就可以访问了

[uwsgi]

# 外部访问地址,可以指定多种协议,现在用http便于调试,之后用socket
http = 0.0.0.0:5000

# 指向项目目录
chdir =  /home/pythonproject/my_flask/py3env/myblog/

# flask启动程序文件
wsgi-file = manage.py

# flask在manage.py文件中的app名
callable = app

# 处理器数
processes = 4

# 线程数
threads = 2

#状态检测地址
stats = 127.0.0.1:9191

部署实施第二步


安装 Supervisor:sudo apt-get install supervisor

Supervisor可以同时启动多个应用,最重要的是,当某个应用Crash的时候,他可以自动重启该应用,保证可用性。

Supervisor 的全局的配置文件位置在:/etc/supervisor/supervisor.conf
正常情况下我们并不需要去对其作出任何的改动,只需要添加一个新的 *.conf 文件放在/etc/supervisor/conf.d/

[program:myblog]
# 启动命令入口
command=/home/pythonproject/my_flask/py3env/bin/uwsgi /home/pythonproject/my_flask/py3env/myblog/uconfig.ini

# 命令程序所在目录
directory=/home/pythonproject/my_flask/py3env/myblog
#运行命令的用户名
user=root

autostart=true
autorestart=true
#日志地址
stdout_logfile=/home/pythonproject/my_flask/py3env/myblog/uwsgi_supervisor.log

启动服务:sudo service supervisor start

终止服务:sudo service supervisor stop

重启服务:sudo service supervisor restart

这个工具还不慎了解,因为部署时一次配置通过了,就懒得去看官方文档了,之后再说。

部署实施最后一步


安装 Nginx:sudo apt-get install nginx

Nginx是轻量级、性能强、占用资源少,能很好的处理高并发的反向代理软件。Ubuntu 上配置 Nginx 也是很简单,不要去改动默认的 nginx.conf 只需要将/ext/nginx/sites-available/default文件替换掉就可以了。
新建一个 default 文件:

server {
        listen  5000;
        server_name 公网IP;
        location / {
                uwsgi_pass      127.0.0.1:8001;
                include uwsgi_params;
                uwsgi_param UWSGI_PYHOME /home/pythonproject/my_flask/py3env/Scr                                                                                                                                                    ipts; # 指向虚拟环境目
                uwsgi_param UWSGI_CHDIR  /home/pythonproject/my_flask/py3env/myb                                                                                                                                                             log; # 指向网站根目录
                uwsgi_param UWSGI_SCRIPT manage:app; # 指定启动程序
        }

启动服务:

  1. sudo service supervisor start
  2. sudo service nginx start

你可能感兴趣的:(flask项目部署到阿里云服务器)