在阿里云服务器上部署flask项目

1. 安装mysql并配置外网访问

(1)安装mysql

sudo apt-get install mysql-server mysql-client

mysql -V   查看mysql是否安装成功

(2)授权用户远程登录

①登录mysql

mysql -u root -p

②授权远程登录

授权所有用户访问,设置访问密码

grant all privileges on *.* to 'root'@'%' identified by 'password' with grant option;

flush privileges;

授权给特定的IP地址,并设置访问密码

grant all privileges on *.* to 'root'@'ip' identified by 'password' with grant option;

flush privileges;

③更改mysql配置文件

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
注释掉bind-address = 127.0.0.1

 

【注意mysql中文乱码问题的解决】在配置文件里添加以下内容

[mysqld]

character_set_server = utf8

[client]

default-character-set = utf8

[mysql]

default-character-set = utf8

创建数据库时设置默认字符集

create database DATABASE_NAME default character set utf8;

 

④重启mysql

service mysql restart     【start/stop】

 

(3)通过本地的navicat或mysql workbench远程连接至mysql,即可在本地图形化界面下进行数据导入和编辑操作

 

2. git clone迁移自己的flask项目至服务器

通过flask内置服务器实现外网对flask项目的访问,确认项目本身和数据库配置成功。

 

3.nginx+uwsgi_flask代理服务器搭建及配置

(1)安装配置nginx

①nginx安装

sudo apt-get install nginx

如果卸载后重装nginx报错,原因是nginx卸载不彻底,解决方案参考https://segmentfault.com/a/1190000014027697

②修改nginx配置文件

sudo vim /etc/nginx/sites-available/default

server_name后面的下划线改为服务器的公网IP地址

③测试nginx

在浏览器输入服务器公网ip,能够看到以下默认界面,说明nginx没问题。这里需要注意,检查一下服务器的80端口有没有开启。

Welcome to nginx!

 

(2)安装配置uwsgi

如果python环境混乱,可能会导致no app loaded. going in full dynamic mode的错误,受以下文章启发,运行uwsgi.ini配置文件时首先进入flask项目下的python虚拟环境

https://blog.csdn.net/weixin_43705559/article/details/89522987

以下操作均在虚拟环境下进行

①uwsgi安装

python3 pip install uwsgi

②创建配置文件uwsgi.ini,保存配置环境,可以放在flask项目目录下

uwsgi.ini文件内容,参考:https://blog.csdn.net/bull521/article/details/90034799

[uwsgi]
#uwsgi启动时所使用的地址与端口,端口可以使用其他端口
socket=127.0.0.1:1111
# 指向网站的项目根目录
chdir=/home/ren/ScholarDiscovery/SchoolSearch/MicroFlask
#python启动程序文件
wsgi-file=app.py
#python程序内用以启动application变量名,app = Flask(__name__)
callable=app
master=true
#处理器数目
processes=4
#线程数
threads=2

③运行uwsgi配置文件,不报错说明配置成功

uwsgi uwsgi.ini

(3)配置nginx与uwsgi之间的通信

①修改nginx配置文件

sudo vim /etc/nginx/sites-available/default
修改server{}内的以下几处内容

root flask项目路径;

location / {

         include uwsgi_params;

         uwsgi_pass 127.0.0.1:1111;【与uwsgi.ini中的配置相同,1111为nginx与uwsgi通讯的接口,不需要设置对外开放】

         uwsgi_param UWSGI_CHDIR flask项目路径;

         uwsgi_param UWSGI_PYHOME python虚拟环境路径;【若没有用到虚拟环境,可以注释掉这一句】

         uwsgi_param UWSGI_SCRIPT app:app;

         # try files $uri $uri/ =404;

}

 

②重启nginx

service nginx restart

③在后台运行uwsgi

uwsgi -d --ini uwsgi.ini

注意:如果flask项目代码有改动,需要重新运行uwsgi,否则无法更新

ps -aux | grep uwsgi    列出和uwsgi相关的进程
kill -9 父进程号

 

4. 在浏览器访问服务器ip,flask网页内容运行正常,说明部署成功

 

 

补充:

1. nginx运行日志

nginx -t 可以获取nginx配置文件的路径

nginx日志文件默认位置 /var/log/nginx

2. uwsgi运行日志

参考https://segmentfault.com/q/1010000019748383

uwsgi的ini配置文件中有一项daemonize或logto,它指定了日志文件的路径。
例:daemonize=/var/log/uwsgi/my_flask_app.log
那么uwsgi运行后日志就会写入到/var/log/uwsgi/my_flask_app.log文件中。
daemonize和logto的区别是,前者会使uwsgi作为守护进程运行。
如果你的uwsgi进程由systemd或supervisor等管理工具管理,那么使用logto,否则使用daemonize。

3.重启nginx报错

如果刚修改了nginx的conf配置文件,运行service nginx restart,报错Job for nginx.service failed because the control process exited with error code。原因可能是修改文件的过程中导致了语法错误,比如检查句末是否少了一个分号‘;’

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值