Flask项目部署到Ubuntu上

前期准备

将在本地开发好的Flask项目打包,发送到云主机上,可以使用xftp等传输工具放到远程主机上。

安装python虚拟环境

  1. 为python3安装pip
sudo apt install python3-pip
#为python安装pip 使用时要输入pip3

2.安装virtualenv

sudo pip install virtualenv
sudo pip install virtualenvwrapper

3.配置环境变量

#在~/.bashrc末尾添加下面两句
export WORKON_HOME=$HOME/.virtualenvs #路径可以自行修改
source /usr/local/bin/virtualenvwrapper.sh

4.刷新配置文件

source ~/.bashrc

5.虚拟环境操作

mkvirtualenv 名称	#创建虚拟环境,默认创建python2虚拟环境
mkvirtualenv -p python3 名称 #创建python3虚拟环境
workon			 #查看所有的虚拟环境
workon 名称	   #切换到xx虚拟环境
deactivate		 #退出虚拟环境

5.删除虚拟环境

rmvirtualenv 虚拟环境名称
例 :删除虚拟环境py3_flask
先退出:deactivate
再删除:rmvirtualenv py3_flask

6.问题

1./usr/bin/python: No module named virtualenvwrapper

错误原因:

Ubuntu安装了2.7和3.x两个版本的python,在安装时使用的是sudo pip3 install virtualenvwrapper在运行的时候默认使用的是python2.x,但在python2.x中不存在对应的模块

解决办法:

#在bashrc中加入如下命令,指定使用python3解释执行
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3

安装Nginx

sudo apt-get install nginx

安装好Nginx后,系统会默认创建一个目录“/var/www/html”,若通过公网ip地址能够看到一个大写的Nginx界面就说明成功了。
Nginx配置文件路径:/etc/nginx/sites-available/default,后面会用到

安装环境

1.执行pip3 freeze > requirements.txt在本机中将项目所需的依赖输出到文本文件中。

2.在服务器中进入虚拟环境,在执行pip3 install -r requirements.txt安装所需依赖包
3.执行pip3 install uwsgi安装uwsgi

配置Nginx

vim /etc/nginx/sites-available/default

修改文件如下所示

server {
	#listen 80 default_server;
	#listen [::]:80 default_server;
	listen 8002; #监听端口
	# SSL configuration
	#
	# listen 443 ssl default_server;
	# listen [::]:443 ssl default_server;
	#
	# Note: You should disable gzip for SSL traffic.
	# See: https://bugs.debian.org/773332
	#
	# Read up on ssl_ciphers to ensure a secure configuration.
	# See: https://bugs.debian.org/765782
	#
	# Self signed certs generated by the ssl-cert package
	# Don't use them in a production server!
	#
	# include snippets/snakeoil.conf;

	root /var/www/Flask;

	# Add index.php to the list if you are using PHP
	index index.html index.htm index.nginx-debian.html;

	server_name 公网ip(或域名);

	location / {
		# First attempt to serve request as file, then
		# as directory, then fall back to displaying a 404.
		try_files $uri $uri/ =404;
		include         uwsgi_params;
                uwsgi_pass      127.0.0.1:8000;   #此地址要和uwsgi.ini的套接字相同
                uwsgi_param UWSGI_PYHOME /var/www/Flask/venv;  #指向虚拟环境
                uwsgi_param UWSGI_CHDIR /var/www/Flask;  #指定网站根目录
                uwsgi_param UWSGI_SCRIPT app:app;   

	}

}

修改完成后重启Nignx服务

sudo service nginx restart

配置uwsgi

//进入Falsk项目目录
vim config.ini

填入以下内容

# uwsgi 启动时所使用的地址与端口
#内网ip可即ifconfig命令可查看到的ip
#socket = 127.0.0.1:8002
http = 内网ip:8002

# 指向网站目录
chdir = /var/www/Flask
# python 启动程序文件
wsgi-file = app.py 

# python 程序内用以启动的 application 变量名
callable = app 
# 处理器数
processes = 4
# 线程数
threads = 2
#状态检测地址

stats = 127.0.0.1:5000 #与nginx配置文件中的端口要一致
#输出内容放到uwsgi.log文件中,加上可后台执行
daemonize = /var/www/Flask/logs/uwsgi.log

最后执行uwsgi config.ini不出意外,flask项目就在后台执行起来了
在浏览器中输出域名(IP):端口即可访问

uwsgi开机自启动

1.首先需要将上面配置文件的daemonize改为logto,daemonize不仅告知了程序的日子文件输出位置还让程序后台运行,因此在系统启动的过程中会重复启动导致失败。

#daemonize = /var/www/Flask/logs/uwsgi.log
#改为
logto = /var/www/Flask/logs/uwsgi.log

2.创建开机启动项
/ect/init.d中新建脚本startuwsgi.sh,并赋予755权限,写入一下内容

#!/bin/sh
### BEGIN INIT INFO
# Provides:          espflask
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:
# Description:       espflask
### END INIT INFO
#头部信息可以从别的脚本中复制,然后修改Provids和Description

/usr/local/bin/uwsgi --ini /xxx/config.ini
#注意使用绝对路径

3.使用update-rc.d使脚本开机运行,然后重启即可完成

update-rc.d startuwsgi.sh defaults 99
#99代表启动顺序

参考:https://blog.youkuaiyun.com/weixin_39212776/article/details/81321055

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值