部署并测试动态WSGI站点

5.1问题

本例要求为站点webapp0.example.com配置提供动态Web内容,要求如下:

此虚拟主机侦听在端口8909

测试网页从以下地址下载,不要作任何更改

http://classroom/pub/materials/webinfo.wsgi

从浏览器访问http://webapp0.example.com:8909可接收到动态生成的Web页面

此站点必须能被example.com域内的所有系统访问

5.2方案

为httpd增加对Python网页程序的支持,可以安装mod_wsgi模块。关于此模块的配置说明,建议参考软件包提供的readme文档。

在SELinux处于Enforcing模式时,若要开放非80、81等常规Web端口,需要调整SELinux保护策略。

5.3步骤

实现此案例需要按照如下步骤进行。

步骤一:部署动态网页文档

1)创建网页目录

[root@server0~]#mkdir /var/www/webapp0

2)部署webinfo.wsgi网页程序

[root@server0~]#cd /var/www/webapp0

[root@server0webapp0]#wget http://classroom/pub/materials/webinfo.wsgi

....

2016-11-27 01:52:26(16.0 MB/s)-‘webinfo.wsgi’saved[397/397]

[root@server0 webapp0]#cat webinfo.wsgi//检查下载文件

#!/usr/bin/env python

import time

....

步骤二:配置新的虚拟主机http://webapp0.example.com:8909/

1)安装mod_wsgi模块软件包

[root@server0~]#yum-y install mod_wsgi

....

2)为新虚拟主机建立配置

[root@server0~]#vim /etc/httpd/conf.d/02-webapp0.conf

Listen 8909

<VirtualHost*:8909>

DocumentRoot/var/www/webapp0

ServerName webapp0.example.com

WSGIScriptAlias//var/www/webapp0/webinfo.wsgi

</VirtualHost>

3)调整SELinux策略,允许Web服务使用8909端口

列出当前许可的Web端口:

[root@server0~]#semanage port-l|grep^http_port

http_port_t tcp 80,81,443,488,8008,8009,8443,9000

添加新的Web端口:

[root@server0~]#semanage port-a-t http_port_t-p tcp 8909

[root@server0~]#

确认配置结果:

[root@server0~]#semanage port-l|grep^http_port

http_port_t tcp 8909,80,81,443,488,8008,8009,8443,9000

4)重启系统服务httpd

[root@server0~]#systemctl restart httpd

[root@server0~]#netstat-antpu|grep httpd//确认已监听8909端口

tcp6 0 0:::443:::*LISTEN 2477/httpd

tcp6 0 0:::8909:::*LISTEN 2477/httpd

tcp6 0 0:::80:::*LISTEN 2477/httpd

步骤三:测试动态网页效果

使用elinks或firefox访问此动态站点http://webapp0.example.com:8909/。

多刷新访问几次,每次看到的是动态网页内容,内容并不固定。

[root@desktop0~]#elinks -dump http://webapp0.example.com:8909/

UNIX EPOCH time is now:1480184916.52//第1次访问

[root@desktop0~]#elinks -dump http://webapp0.example.com:8909/

UNIX EPOCH time is now:1480184919.21//第2次访问

[root@desktop0~]#elinks -dump http://webapp0.example.com:8909/

UNIX EPOCH time is now:1480184951.99//第3次访问

部署并测试动态WSGI站点的更多相关文章

  1. 工程师技术(三):独立Web站点的快速部署、虚拟Web主机的部署、配置网页内容访问、使用自定Web根目录、配置安全Web服务、部署并测试WSGI站点

    一.独立Web站点的快速部署 目标: 本例要求为 http://server0.example.com 配置Web站点,要求如下: 1> 从http://classroom/pub/materi ...

  2. LDAP-openldap服务部署和测试(YUM安装)

    1. 概述2. 服务端部署过程2.1 软件包说明2.2 部署过程2.3 配置过程3. 测试4. 生成LDIF格式文件4.1 安装migrationtools工具4.2 用migrationtools生 ...

  3. Nagios图像绘制插件PNP4Nagios部署和测试

    注:本篇博客Nagios版本Nagios-3.5.1 1. 概述2. 关于PNP4Nagios3. 部署PNP4Nagios3.1 下载PNP4Nagios3.2 编译安装3.3 目录文件说明4. 配 ...

  4. Munge服务部署和测试

    1. 概述2. 下载3. 安装3.1 源码简要说明3.2 编译安装3.3 配置3.4 创建munge.key3.5 启动方式 1. 概述 munge是认证服务,用于生成和验证证书.应用于大规模的HPC ...

  5. 集群部署及测试SolrCloud-5

    SolrCloud-5.2.1 集群部署及测试   一. 说明 Solr5内置了Jetty服务,所以不用安装部署到Tomcat了,网上部署Tomcat的资料太泛滥了. 部署前的准备工作: 1. 将各主 ...

  6. slurm-16.05.3任务调度系统部署与测试(1)

      1.概述2.同步节点时间3.下载并解压文件4.编译安装munge-0.5.125.配置munge6.编译安装slurm-16.05.37.配置slurm8.配置MySQL数据库环境9.启动slur ...

  7. 消息中间件kafka+zookeeper集群部署、测试与应用

    业务系统中,通常会遇到这些场景:A系统向B系统主动推送一个处理请求:A系统向B系统发送一个业务处理请求,因为某些原因(断电.宕机..),B业务系统挂机了,A系统发起的请求处理失败:前端应用并发量过大, ...

  8. Akka-CQRS(5)- CQRS Writer Actor 部署和测试

    上篇我们做了一个WriterActor的例子,主要目的是示范WriterActor如何作为集群分片用persistentActor特性及event-sourcing模式实现CQRS的写功能.既然是集群 ...

  9. redis3.0集群部署和测试

    redis3.0集群部署和测试 环境介绍 两台Centos7的虚拟机模拟6个节点,A台3个master节点,B台3个slave节点A地址:172.16.81.140B地址:172.16.81.141r ...

随机推荐

  1. 浅谈Java中静态代码块和非静态代码块

    静态代码块: static{} 执行优先级高于非静态的初始化块,它会在类初始化(类初始化这个问题改天再详细讨论)的时候执行一次,执行完成便销毁,它仅能初始化类变量,即static修饰的数据成员. 非静 ...

  2. Redis07——Redis到底能用在什么地方(下)

    在前一篇文章中,我们已经介绍过Redis的一些实际应用.如KV缓存.分布式锁.消息队列,由于篇幅原因,并未介绍完全.接下来将继续为各位带来Redis的更多应用. bitmat(位图) 实现 位图的基本 ...

  3. 五分钟学Java:如何才能学好Java Web里这么多的技术

    原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者. 系列文章介绍 本文是<五分钟学Java>系列文章的一篇 本系列文章主要围绕Java程序员必须掌握的核心技能,结合我个人三年 ...

  4. 使用 Github Action 进行前端自动化发布

    前言 说起自动化,无论是在公司还是我们个人的项目中,都会用到或者编写一些工具来帮助我们去处理琐碎重复的工作,以节约时间提升效率,尤其是我们做前端开发会涉及诸如构建.部署.单元测试等这些开发工作流中重复 ...

  5. npm 安装包总结

    1.前端可视化json:vue-json-viewer; 2.富文本编辑: vue-quill-editor;    https://www.cnblogs.com/ZaraNet/p/1020922 ...

  6. 【Weiss】【第03章】练习3.19:计算后缀表达式

    [练习3.19] 编写一个程序计算后缀表达式的值. Answer: 计算的方法书上说得很明白了,看代码行,没写错误检测[因为懒]. 测试代码: #include <iostream> #i ...

  7. oracle中pl/sql 练习题----输入部门编号,在控制台打印这个部门的名称,总人数,平均工资(基本工资+奖金)

    一. 思路:声明record类型的变量,根据 多表联合查询查出想要的数据,最后输出. 二.注意:record类型不一定只是一个表中的数据,也可以声明不同表中的数据类型. 三.语句如下: declare ...

  8. 【简说Python WEB】Flask应用的文件结构

    目录 [简说Python WEB]Flask应用的文件结构 1.文件结构的目录 2.配置程序--config.py 3.app应用包 4.剥离出来的email.py 5.蓝本(BLueprint)的应 ...

  9. HBU-数据库第五周作业

    第五周数据库作业 注意 MySQL的数据库名.表名.列名.别名大小写规则是这样的: 1.数据库名与表名是严格区分大小写的: 2.表的别名是严格区分大小写的: 3.列名与列的别名在所有的情况下均是忽略大 ...

  10. Python-生成器实现简单的"生产者消费者"模型

    一.使用生成器实现简单的生产者消费者模型, 1.效果截屏 代码如下: import time def consumer(name): print('%s 开始买手机' %name) while Tru ...