因为项目源码用了一些>python3.5的语法糖,但是Ubuntu的mod_wsgi包对应的是python3.5,所以采用从pip安装mod_wsgi的方法

参考:

Project/Python部分

准备WSGI文件

准备一个wsgi.py文件,内容如下:

  1. import sys
  2. sys.path.insert(0, "<path_to_the_application>")
  3. from yourapplication import app as application
  4. if __name__ == "__main__":
  5. application.run()

配置Python虚拟环境

为了不要修改系统python

安装工具:

  1. sudo pip install virtualenv

进入我们的project目录,新建环境:

  1. virtualenv myprojectenv

进入虚拟环境安装python包:

  1. source myprojectenv/bin/activate

然后命令行应该会长这样:

(myprojectenv)user@host:~/myproject$

安装自己project的依赖项:

  1. pip install -r requirements.txt

Apache部分

安装必要的包

  1. sudo apt-get update
  2. sudo apt-get install apache2 apache2-dev

apache2-dev是因为如果想用pip安装特定python版本的mod_wsgi的话,需要它。

pip安装特定python版本的mod_wsgi:

  1. pip install mod_wsgi

通过这个命令得到对应的配置:

  1. mod_wsgi-express module-config

会输出一个这样的东西

  1. LoadModule wsgi_module "/mnt/disk1/miniconda3/lib/python3.8/site-packages/mod_wsgi/server/mod_wsgi-py38.cpython-38-x86_64-linux-gnu.so"
  2. WSGIPythonHome "/mnt/disk1/miniconda3"

把这两行复制到/etc/apache2/mods-available/wsgi.load里,替换掉原来的内容

最后enable wsgi模块:

  1. sudo a2enmod wsgi

配置Apache

/etc/apache2/sites-available下新建一个配置文件yourapplication.conf,内容如下:

  1. <VirtualHost *>
  2. ServerName localhost
  3. # WSGIDaemonProcess用于指定应创建不同的守护进程,设置守护进程组的名称为 yourapplication
  4. # python-home 指定守护进程使用的 Python 虚拟环境的位置为/data/www/project/venv
  5. # python-path 可以理解为PYTHONPATH环境变量,可以有多个。最好一个是引用 Python 虚拟环境的 site-packages 目录, 另一个可以是项目的目录
  6. WSGIDaemonProcess yourapplication python-home=<path_to_virtual_env> python-path=<path_to_site_packages> python-path=<path_to_project>
  7. # WSGIScriptAlias 与 Alias 指令相同 如果不是/而/api,那就该app的访问路径就是localhost/api了
  8. WSGIScriptAlias / /var/www/yourapplication/wsgi.py
  9. <Directory /var/www/yourapplication>
  10. WSGIProcessGroup yourapplication
  11. WSGIApplicationGroup %{GLOBAL}
  12. # WSGIScriptReloading 设置对WSGI脚本文件的更改都触发重新加载机制
  13. WSGIScriptReloading On
  14. # apache 2.4 之后用这个来控制访问
  15. Require all granted
  16. </Directory>
  17. </VirtualHost>

重启apache

记得重启apache:sudo service apache2 reload

在Apache上用mod_wsgi部署Flask (python 3.8, Ubuntu)的更多相关文章

  1. flask在windows上用mod_wsgi部署

    flask在windows上用mod_wsgi部署也是折腾了不少时间,下面就总结下. 首先下载Apache httpd,我认为Apache Hans比较好: 一般这种情况下,你的python环境已经安 ...

  2. 转:在 Ubuntu 上使用 Nginx 部署 Flask 应用

    转:http://Python.jobbole.com/84286/ 原文出处: Vladik   译文出处:开源中国    我职业生涯的大部分都在使用微软的架构,最近我决定走出技术的舒适区,步入开源 ...

  3. Ubuntu上用mod_wsgi部署Django出现的一些问题

    1 编码问题 直接运行Django没问题,但通过Apache+mod_wsgi上传中文字符的文件时出错: UnicodeEncodeError: 'ascii' codec can't encode ...

  4. 通过IIS部署Flask项目

      本文主要介绍在Windows Server 2012R2上通过IIS部署Flask项目的过程,以及对TTFB延迟大问题的思考.关于如何申请云服务器,注册(子)域名,备案,开放云服务器端口,获取SS ...

  5. windows下apache + mod_wsgi + python部署flask接口服务

    windows下apache + mod_wsgi + python部署flask接口服务 用python3安装虚拟环境 为啥要装虚拟环境? 原因1:安装虚拟环境是为了使项目的环境和全局环境隔离开,在 ...

  6. CentOS 5系统安装Django、Apache 、mod_wsgi部署Python环境教程

    Django,是一款针对Python环境的WEB开发框架,能够帮助我们构架快捷.简单的WEB框架设置,Django框架非常适合开发内容应用环境,所以在本文中,麦子将整理基于Centos系统部署安装Dj ...

  7. 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 下载地址: ...

  8. 在Mac上使用Nginx和FastCGI部署Flask应用

    最近在学习Flask,本文介绍一下如何部署Flask开发的应用,同时也学习一下Nginx的使用,这只是在Mac上的一个实验. 应用 这里使用的应用就是官方的文档中给出的Flaskr. 安装Nginx ...

  9. 如何使用Nginx和uWSGI或Gunicorn在Ubuntu上部署Flask Web应用

    你好!欢迎阅读我的博文,你可以跳转到我的个人博客网站,会有更好的排版效果和功能. 此外,本篇博文为本人Pushy原创,如需转载请注明出处:https://pushy.site/posts/151981 ...

随机推荐

  1. python生成器浅析

    A 'generator' is a function which returns a generator iterator. It looks like a normal function exce ...

  2. Spark(八)【广播变量和累加器】

    目录 一. 广播变量 使用 二. 累加器 使用 使用场景 自定义累加器 在spark程序中,当一个传递给Spark操作(例如map和reduce)的函数在远程节点上面运行时,Spark操作实际上操作的 ...

  3. Hbase与Phoenix整合

    目录 一.简介 二.安装 三.Phoenix Shell操作 SCHEMA操作 1.创建schema 2.使用schema 3.删除schema 表操作 1.显示所有表 2.创建表 3.表数据的增删改 ...

  4. 容器之分类与各种测试(四)——unordered-multimap

    unordered-multiset与unordered-multimap的区别和multiset与multimap的区别基本相同,所以在定义和插入时需要注意 key-value 的类型. 例程 #i ...

  5. Shell学习(一)——Shell简介

    参考博客: [1]Shell简介

  6. Cocoapods 版本更新与更新到指定版本

    1.本地现有的Cocoapods的版本号是1.1.0.rc.2,想升级到最新版本 1.先切换gem源 gem sources --remove https://rubygems.org/ gem so ...

  7. keepalived 高可用lvs的dr模型(vip与dip不在同一网段)

    现在rs1和rs2上面安装httpd并准备测试页 [root@rs1 ~]# yum install httpd -y [root@rs1 ~]# echo "this is r1" ...

  8. 01 - Vue3 UI Framework - 开始

    写在前面 一年多没写过博客了,工作.生活逐渐磨平了棱角. 写代码容易,写博客难,坚持写高水平的技术博客更难. 技术控决定慢慢拾起这份坚持,用作技术学习的阶段性总结. 返回阅读列表点击 这里 开始 大前 ...

  9. Visual SVN安装使用教程

    visual svn使用教程  SVN简介: 为什么要使用SVN? 程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需要程序员有效的管理代码,在需要的时候可以迅速,准确取出相应的版本. ...

  10. Java中List排序的3种方法

    在某些特殊的场景下,我们需要在 Java 程序中对 List 集合进行排序操作.比如从第三方接口中获取所有用户的列表,但列表默认是以用户编号从小到大进行排序的,而我们的系统需要按照用户的年龄从大到小进 ...