阿里云部署Flask项目

2018-10-10  本文已影响0人  sunshaoping

一.购买阿里云服务器
1.登录阿里云官网,购买云服务器ECS,
此处有两种方法,一是购买云服务器ECS,费用较高,二是购买学生机(24岁以下默认学生)
2.自行选择服务器配置(此处以学生机为例),一般选择云服务器ECS,CentOS7.3,64位。


image.png

3.购买成功后,进入控制台,查看服务器IP及配置


image.png
4.重置root账号密码
在上述图片中点击更多,选择密码/密钥>>重置密码
5.修改好密码,重启云服务器,然后用xshell链接服务器试试
二.配置项目需要的环境
1.安装python

2.安装msyql数据库
3.安装redis数据库
三.Flask简单项目部署(nginx代理项目,同时需要注意服务器防火墙设置)
1.安装nginx
centos7系统库中默认是没有nginx的rpm包的,所以我们自己需要先更新下rpm依赖库

命令: rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
安装: yum install nginx
启动: systemctl start nginx
查看状态: systemctl status nginx
开机自启: systemctl enable nginx.service

2.编写Flask项目
新建app.py文件
3.配置Nignx--(cd //etc/nginx/nginx.conf)(可选择配置,默认80端口)

proxy_pass此处的启动端口一定要和项目的启动端口一致,这样才能保证项目能够被nginx代理,之前在此迷糊了好久。

    #只用nginx代理的配置
    server {
         listen          80;
         server_name     47.106.218.225;  # 阿里云公网ip
 
         location / {
            proxy_pass    http://127.0.0.1:5000;      # 本机:启动端口(此处端口与项目端口一致)      
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
     }

配置完nginx重启nginx服务

nginx -s reload
如果出现报错:nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory)
可能是nginx服务没有启动
systemctl start nginx  # 启动nginx 

4.启动项目,可以直接通过IP:http://47.106.218.225访问,nginx代理会将访问指向项目

python app.py

5.后台启动Flask项目(可先使用python启动项目测试,如果可以正常访问,就使用后台代理的方法启动)

nohup python app.py >> app.out &   将运行日志输出到app.out文件 

6.查看实时项目状态运行状态:

tail -f app.out/tailf app.out

四.Flask项目部署(使用uwsgi+nginx代理启动项目,同时需要注意服务器防火墙设置)
1.安装uwsgi,并创建uwsgi软连接,不然报错找不到uwsgi命令

pip install uwsgi
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

2.配置uwsgi
在部署项目的跟目录下新建一个配置文件uwsgiconfig.ini,添加配置内容

[uwsgi]
# uwsgi 启动时所使用的地址与端口
socket = 127.0.0.1:5000(可以与项目端口不一致)
# 指向网站目录
chdir=/usr/local/project/demo03/clxt4.0
# python 启动程序文件
wsgi-file = manage.py
# python 程序内用以启动的 application 变量名
callable = app
# 处理器数
processes = 4
# 线程数
threads = 2
# 缓冲区
buffer-size = 32768
#状态检测地址
stats = 127.0.0.1:9191

3.保存并退出

:wq

4.配置nginx(在此时配置nginx时,之前配置的单独nginx代理项目的配置代码需要隐藏,然后添加新的配置文件)

备注此处的listen,和server_name一定要写上,之前就是因为这个导致迷糊了好久

cd /etc/nginx/conf.d,添加代码  
server {
         listen          80;
         server_name     47.106.218.225;  # 阿里云公网ip
location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:5000;
        uwsgi_param UWSGI_PYHOME /path/mtenv;  #python位置,要么是虚拟机,要么是运行的环境变量位置
        uwsgi_param UWSGI_CHDIR /path/python-prj/flask-prj;  #项目根目录
        uwsgi_param UWSGI_SCRIPT manage:app;    #启动项目的主程序,如果manage.py位域flask-prj的src/flask/这样的目录下,那么就写成src/flask/manage:app这样
        #root   /usr/share/nginx/html;
        #index  index.html index.htm;
    }

5.配置重启nginx服务

nginx -s reload
service nginx restart  # 重启nginx服务
service nginx star # 启动服务
service nginx stop # 停止服务 

6.运行uwsgi服务(通过执行启动脚本运行项目)

uwsgi --ini /usr/local/project/demo03/clxt4.0/uwsgiconfig.ini  (启动脚本存放位置)
# 后台运行
uwsgi --ini /usr/local/project/demo03/clxt4.0/config.ini --daemonize /usr/local/project/demo03/clxt4.0/manage.out
# 停止uwsgi服务,可通过查询uwsgi进程号kill进程
kill 进程号(不完全停止服务,服务会重启)
kill -9 进程号(服务完全停止,需要重新启动)

7.遇到问题:使用uwsgi启动项目之后一直提示是使用python2启动的?(不知怎么配置导致uwsgi使用python2的版本启动)

# 1.查看uwsgi使用的python版本
uwsgi --python-version
# 2.查看uwsgi软连接指向
cd /usr/local/python3/bin  # 切换到指定目录
ll  # 查看所有软连接指向
# 3.删除uwsgi软连接
rm -rf /usr/bin/uwsgi
# 4.重新创建链接
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
# 5.再次查看uwsgi使用python版本
uwsgi --python-version
# 6.可以使用启动uwsgi的方法启动项目

注:本文总结可能会有些乱,具体步骤总结如下:
安装python3.6可以参考文章《linux安装python3.6》
安装mysql服务可以参考文章《linux安装mysql》
安装redis服务可以参考文章《阿里云Centos7安装redis》
使用nginx代理可以从《nginx代理项目》开始实施
安装uwsgi服务可以从《使用uwsgi+nginx代理启动flask项目》开始实施
ps:此方法不使用于生产环境下,生产环境下应该使用Python+Gunicorn(web服务器)+nginx(正反向代理)方式部署。

上一篇下一篇

猜你喜欢

热点阅读