使用 apache2 + `mod_proxy_uwsgi` + uwsgi + upstart 部署
使用 apache2 + mod_proxy_uwsgi + uwsgi + upstart 部署
网上运行 python wsgi 的应用时,大部分的资料都是使用 nginx 、uwsgi ,很少资料提及到 apache2 下如何进行处理。但是平时的部署环境其实很难跳过 apache2 ,很多环境已经带 apache2 ,不好另外安装一个 nginx ,因此,经过一番测试后,建议使用 apache2 + mode_proxy_uwsgi + uwsgi + upstart/systemd 的配置。整个配置并不复杂,请按照具体的步骤逐个处理。
以下的安装步骤是在 ubuntu 14.04 和 python3 中完成的。
安装依赖
安装 flask 和 uwsgi ::
pip3 install flask
pip3 install uwsgi
应用编写
首先,编写一个简单应用用于测试,可以使用 flask 或 django ,如果对 wsgi 熟悉,也可以直接使用 wsgi。这里是一个 flask 的示例 /var/www/test_app.py::
import flask
application = flask.Flask(__name__)
@application.route('/')
def index():
return 'Hello, world!'
if __name__ == '__main__':
application.run()
然后,做个简单的测试,启动服务器 ::
python3 /var/www/test_app.py
打开一个新的终端,用 curl 请求 ::
curl -v http://127.0.0.1:5000
可看到输出为 Hello, world!
uwsgi 配置
uwsgi 的运行方式有多种,这里只用命令行参数的方式运行,并写入到 upstart 中自动启动 /etc/init/uwsgi-test.conf ::
description "uwsgi test"
start on runlevel [2345]
stop on runlevel [!2345]
env LC_ALL=zh_CN.UTF-8
env LANG=zh_CN.UTF-8
env PYTHONIOENCODING=utf-8
exec uwsgi --socket 127.0.0.1:5000 --master --workers 2 --wsgi-file /var/www/test_app.py
为了能正确地处理 utf-8 编码的内容和日志输出,env 部分不能少。在 uwsgi 的配置可放到 ini 格式的配置文件中,并可指定一个 virtualenv 环境,防止破坏了主机的 python 环境,更多的配置选项见 http://uwsgi-docs.readthedocs.io/en/latest/
然后启动 uwsgi ::
start uwsgi-test
安装和配置 apache2
在 ubuntu 中,安装 apache2 和相关的工具 ::
apt-get install apache2 apache2-utils libapache2-mod-proxy-uwsgi
启用 mod_proxy_uwsgi ::
a2enmod proxy
a2enmod proxy_uwsgi
注意,必须同时启用 proxy 模块,否则 apache2 会报错,错误信息为 ::
Cannot load /usr/lib/apache2/modules/mod_proxy_uwsgi.so into
server: /usr/lib/apache2/modules/mod_proxy_uwsgi.so:
undefined symbol: ap_proxy_backend_broke。
编写一个配置文件 test.conf 放在 /etc/apache2/conf-available ::
ProxyPass /test uwsgi://127.0.0.1:5000
启用配置文件
a2enconf test
并重启 apache2 ::
service apache2 restart
现在用 curl 测试一下 ::
curl -v http://127.0.0.1/test
可看到输出为 Hello, world! 。
至此,全部工作已完成。
使用 apache2 + `mod_proxy_uwsgi` + uwsgi + upstart 部署的更多相关文章
- Nginx+uWSGI+Django部署web服务器
目录 Nginx+uWSGI+Django部署web服务器 环境说明 前言 搭建项目 Django部署 编辑luffy/luffy/settings.py 编辑luffy/app01/views.py ...
- 使用uWSGI+nginx部署Django项目
最近使用django写了一些项目,不过部署到服务器上碰到一些问题,还有静态文件什么的一堆问题,这里总结一下碰到的问题和解决方案,总体思路是按照官方文档走的. 原文地址:http://uwsgi-doc ...
- vue+uwsgi+nginx部署路飞学城
vue+uwsgi+nginx部署路飞学城 有一天,老男孩的苑日天给我发来了两个神秘代码,听说是和mjj的结晶 超哥将这两个代码,放到了一个网站上,大家可以自行下载 路飞学城django代码 ht ...
- linux vue uwsgi nginx 部署路飞学城 安装 vue
vue+uwsgi+nginx部署路飞学城 有一天,老男孩的苑日天给我发来了两个神秘代码,听说是和mjj的结晶 超哥将这两个代码,放到了一个网站上,大家可以自行下载 路飞学城django代码#这个代码 ...
- 使用Flask+uwsgi+Nginx部署Flask正式环境
环境准备 在开始正式讲解之前,我们将首先进行环境准备. Step1:安装Python,pip以及nginx: sudo apt-get update sudo apt-get install pyth ...
- nginx+uwsgi+django部署流程
当我们在用django开发的web项目时,开发测试过程中用到的是django自带的测试服务器,由于其安全及稳定等性能方面的局限性,django官方并不建议将测试服务器用在实际生产. nginx+uws ...
- ngnix+uwsgi+django 部署mezzanine
以下是我用ngnix+uwsgi+django 部署mezzanine全过程,其中ngnix+uwsgi这块是看了虫师大神的博客(http://www.cnblogs.com/fnng/p/52686 ...
- virtualvenv+django+uWSGI+nginx 部署
原创博文 转载请注明出处! 1. virtualvenv 2. django 3. uWSGI 4. nginx 5. 踩坑记录 1. virtualvenv virtualvenv install ...
- django+uwsgi+nginx部署(非常详细)
django+uwsgi+nginx部署 1.介绍: 在网上看了很多教程,但自己部署了很久都没有成功,这篇博文记录自己所踩过得坑. 2.环境: Ubuntu 16.04.1 LTS (GNU/Linu ...
随机推荐
- POJ2104 K-th Number(归并树)
平方分割一直TLE,最后用归并树处理过了,使用STL会比较慢. #include<cstdio> #include<iostream> #include<cstdlib& ...
- python 线程之threading(五)
在学习了Event和Condition两个线程同步工具之后还有一个我认为比较鸡肋的工具 semaphores 1. 使用semaphores的使用效果和Condition的notify方法的效果基本相 ...
- JavaScript(一)
JavaScript 是脚本语言 JavaScript 是一种可插入 HTML 页面的轻量级的编程语言,它跟Java没有什么蛋关系. JavaScript使用: <script language ...
- iOS searchbar textfield placeholder color
// Get the instance of the UITextField of the search bar UITextField *searchField = [searchBar value ...
- BZOJ3752 : Hack
折半爆搜,首先爆搜出所有长度不超过$4$的串. 对于每个询问,首先暴力枚举所有长度不超过$4$的串,以及前$4$位相同时后面的串. 然后枚举前$4$位,以及后面的串长,那么后面的hash值唯一,可以双 ...
- RecyclerView item 状态错乱
adapter中: private List<Integer> checkboxUserIdList = new ArrayList<>(); 在如下这个方法中: public ...
- python集合
集合的创建:set()和frozenset() 区别:frozenset()创建不可变的集合,一旦创建其元素不可改变:而set()创建的集合中的元素可以通过一定的方法进行改变. >>> ...
- 浅析mongodb中group分组
这篇文章主要介绍了浅析mongodb中group分组的实现方法及示例,非常的简单实用,有需要的小伙伴可以参考下. group做的聚合有些复杂.先选定分组所依据的键,此后MongoDB就会将集合依据选定 ...
- About_类与对象
所谓类,就是把具有相同行为,特征的归为一类: 1)什么是面向对象: 起初,“面向对象”是专指在程序设计中采用封装.继承.抽象等设计方法.可是,这个定义显然不能再适合现在情况.面向对象的思想已经涉及到软 ...
- HTML当中特殊字符的表示
(回车换行) <br> (空格符) &(AND符号) & <(左尖括号.小于号) < >(右尖括号.大于号) > °(度) ° •(间隔符) ...