在Apache上用mod_wsgi部署Flask (python 3.8, Ubuntu)
因为项目源码用了一些>python3.5的语法糖,但是Ubuntu的mod_wsgi包对应的是python3.5,所以采用从pip安装mod_wsgi的方法
参考:
Project/Python部分
准备WSGI文件
准备一个wsgi.py文件,内容如下:
import sys
sys.path.insert(0, "<path_to_the_application>")
from yourapplication import app as application
if __name__ == "__main__":
application.run()
配置Python虚拟环境
为了不要修改系统python
安装工具:
sudo pip install virtualenv
进入我们的project目录,新建环境:
virtualenv myprojectenv
进入虚拟环境安装python包:
source myprojectenv/bin/activate
然后命令行应该会长这样:
(myprojectenv)user@host:~/myproject$
安装自己project的依赖项:
pip install -r requirements.txt
Apache部分
安装必要的包
sudo apt-get update
sudo apt-get install apache2 apache2-dev
apache2-dev是因为如果想用pip安装特定python版本的mod_wsgi的话,需要它。
用pip安装特定python版本的mod_wsgi:
pip install mod_wsgi
通过这个命令得到对应的配置:
mod_wsgi-express module-config
会输出一个这样的东西
LoadModule wsgi_module "/mnt/disk1/miniconda3/lib/python3.8/site-packages/mod_wsgi/server/mod_wsgi-py38.cpython-38-x86_64-linux-gnu.so"
WSGIPythonHome "/mnt/disk1/miniconda3"
把这两行复制到/etc/apache2/mods-available/wsgi.load里,替换掉原来的内容
最后enable wsgi模块:
sudo a2enmod wsgi
配置Apache
在/etc/apache2/sites-available下新建一个配置文件yourapplication.conf,内容如下:
<VirtualHost *>
ServerName localhost
# WSGIDaemonProcess用于指定应创建不同的守护进程,设置守护进程组的名称为 yourapplication
# python-home 指定守护进程使用的 Python 虚拟环境的位置为/data/www/project/venv
# python-path 可以理解为PYTHONPATH环境变量,可以有多个。最好一个是引用 Python 虚拟环境的 site-packages 目录, 另一个可以是项目的目录
WSGIDaemonProcess yourapplication python-home=<path_to_virtual_env> python-path=<path_to_site_packages> python-path=<path_to_project>
# WSGIScriptAlias 与 Alias 指令相同 如果不是/而/api,那就该app的访问路径就是localhost/api了
WSGIScriptAlias / /var/www/yourapplication/wsgi.py
<Directory /var/www/yourapplication>
WSGIProcessGroup yourapplication
WSGIApplicationGroup %{GLOBAL}
# WSGIScriptReloading 设置对WSGI脚本文件的更改都触发重新加载机制
WSGIScriptReloading On
# apache 2.4 之后用这个来控制访问
Require all granted
</Directory>
</VirtualHost>
重启apache
记得重启apache:sudo service apache2 reload
在Apache上用mod_wsgi部署Flask (python 3.8, Ubuntu)的更多相关文章
- flask在windows上用mod_wsgi部署
flask在windows上用mod_wsgi部署也是折腾了不少时间,下面就总结下. 首先下载Apache httpd,我认为Apache Hans比较好: 一般这种情况下,你的python环境已经安 ...
- 转:在 Ubuntu 上使用 Nginx 部署 Flask 应用
转:http://Python.jobbole.com/84286/ 原文出处: Vladik 译文出处:开源中国 我职业生涯的大部分都在使用微软的架构,最近我决定走出技术的舒适区,步入开源 ...
- Ubuntu上用mod_wsgi部署Django出现的一些问题
1 编码问题 直接运行Django没问题,但通过Apache+mod_wsgi上传中文字符的文件时出错: UnicodeEncodeError: 'ascii' codec can't encode ...
- 通过IIS部署Flask项目
本文主要介绍在Windows Server 2012R2上通过IIS部署Flask项目的过程,以及对TTFB延迟大问题的思考.关于如何申请云服务器,注册(子)域名,备案,开放云服务器端口,获取SS ...
- windows下apache + mod_wsgi + python部署flask接口服务
windows下apache + mod_wsgi + python部署flask接口服务 用python3安装虚拟环境 为啥要装虚拟环境? 原因1:安装虚拟环境是为了使项目的环境和全局环境隔离开,在 ...
- CentOS 5系统安装Django、Apache 、mod_wsgi部署Python环境教程
Django,是一款针对Python环境的WEB开发框架,能够帮助我们构架快捷.简单的WEB框架设置,Django框架非常适合开发内容应用环境,所以在本文中,麦子将整理基于Centos系统部署安装Dj ...
- Python-Django Win7上使用Apache24和mod_wsgi部署Django1.11应用程序
Win7上使用Apache24和mod_wsgi部署Django1.11应用程序 by:授客 QQ:1033553122 测试环境 win7 64 Django-1.11.4.tar.gz 下载地址: ...
- 在Mac上使用Nginx和FastCGI部署Flask应用
最近在学习Flask,本文介绍一下如何部署Flask开发的应用,同时也学习一下Nginx的使用,这只是在Mac上的一个实验. 应用 这里使用的应用就是官方的文档中给出的Flaskr. 安装Nginx ...
- 如何使用Nginx和uWSGI或Gunicorn在Ubuntu上部署Flask Web应用
你好!欢迎阅读我的博文,你可以跳转到我的个人博客网站,会有更好的排版效果和功能. 此外,本篇博文为本人Pushy原创,如需转载请注明出处:https://pushy.site/posts/151981 ...
随机推荐
- 【风控算法】一、变量分箱、WOE和IV值计算
一.变量分箱 变量分箱常见于逻辑回归评分卡的制作中,在入模前,需要对原始变量值通过分箱映射成woe值.举例来说,如"年龄"这一变量,我们需要找到合适的切分点,将连续的年龄打散到不同 ...
- Spark(十六)【SparkStreaming基本使用】
目录 一. SparkStreaming简介 1. 相关术语 2. SparkStreaming概念 3. SparkStreaming架构 4. 背压机制 二. Dstream入门 1. WordC ...
- 【leetcode】598. Range Addition II
You are given an m x n matrix M initialized with all 0's and an array of operations ops, where ops[i ...
- 容器之分类与各种测试(四)——unordered-multimap
unordered-multiset与unordered-multimap的区别和multiset与multimap的区别基本相同,所以在定义和插入时需要注意 key-value 的类型. 例程 #i ...
- webservice--常用注解
定义说明书的显示方法1.@WebService(serviceName="PojoService", portName="PojoPort", name=&qu ...
- RHEL 6.5安装系统
转自如下链接: http://www.jb51.net/os/128752.html
- SprignBoot整合Spring Data Elasticsearch
一.原生java整合elasticsearch的API地址 https://www.elastic.co/guide/en/elasticsearch/client/java-api/6.2/java ...
- 关于为了一时方便,使用@Scheduled注解定时踩的坑
摘要: 事情是这样的前两周在做项目的时候碰到一个需求---要求每天晚上执行一个任务,公司统一使用的是 xxl-job 写定时任务的,我当时为了方便自己,然后就简单的使用了Spring的那个@Sched ...
- drone 使用git tag触发构建
配置ref为tag .drone.yml中配置trigger为ref trigger: ref: - refs/tags/FileService 或者配置when为ref when: ref: - r ...
- Charles 手机抓包
Charles 手机抓包 请求抓包对于程序员调试代码必不可少,Charles是一个用与抓包的好工具(也可以使用Fiddler),Charles抓包是通过中间人代理实现,在客户端和服务端通信时,Char ...