1. 实验项目

$ django-admin startproject myweb
$ cd myweb/
$ python manage.py startapp poll 1. 配置使用MySQL
vim myweb/settings.py
DATEBASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'OPTIONS': {
'read_default_file': os.path.join(BASE_DIR, 'cfg/my.cnf'),
'init_command': 'SET SESSION transaction_isolation="READ-COMMITTED"',
},
}
} 2. 配置使用日志
vim myweb/settings.py
LOGGING = {
'version': 1,
'formatters': {
'standard': {
'format': '%(asctime)s [%(name)s:%(lineno)d] [%(module)s:%(funcName)s] [%(levelname)s]-%(message)s'
},
},
'handlers': {
'null': {
'level': 'DEBUG',
'class': 'logging.NullHandler'
},
'console': {
'level': 'INFO',
'class': 'logging.StreamHandler',
'formatter': 'standard',
},
'db_console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'standard',
},
'debug': {
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
'filename': os.path.join(BASE_DIR, 'logs', 'debug.log'),
'maxBytes': 1024 * 1024 * 5,
'backupCount': 5
'formatter': 'standard',
},
},
'loggers': {
'django': {
'handlers': ['console', 'debug'],
'level': 'INFO',
'propagate': True
},
'django.request': {
'handlers': ['debug'],
'level': 'INFO',
'propagate': True
},
'django.db.backends': {
'handlers': ['db_console'],
'level': 'DEBUG',
'propagate': True
},
'info': {
'handlers': ['console'],
'level': 'INFO',
'propagate': True
},
}
} 3. 导入poll app
vim myweb/settings.py
INSTALLED_APPS = [
....
'poll.apps.PollConfig',
] ALLOWED_HOSTS = ['*'] 4. 引入poll urls
vim myweb/urls.py from django.conf.urls import url, include
urlpatterns = [
....
url(r'^poll/', include('poll.urls')),
] 5. 配置 poll/urls.py vim poll/urls.py from django.conf.urls import url
from . import views urlpatterns = [
url(r'^$', views.index, name='index')
] 6. 设置 poll/models.py vim poll/models.py from django.db import models class Student(models.Model):
name = models.CharField(max_length=30)
sex = models.BooleanField(default=False) class Meta:
db_table = 'student' 7. 设置 poll/views.py
vim poll/views.py from django.http import HttpResponse
from .models import Student def index(request):
s = Student(name='tim', sex=True)
s.ave()
return HttpResponse('Hello World') 8. 设置 cfg/my.cnf
vim cfg/my.cnf
[client]
database=db_t1
host=localhost
user=tim
password=123456
default-character-set=utf8 9. 准备目录
mkdir logs/ 10. 迁移数据
python manage.py makemigrations
python manage.py migrate

2. 配置 firewall

firewall-cmd --permanent --zone=public --add-port=/tcp
firewall-cmd --permanent --zone=public --add-port=/tcp
firewall-cmd --reload

3. 部署 django

mkdir /web/
cp -rf myweb /web/. vim /etc/httpd/conf.d/myweb.conf
LoadModule wsgi_module modules/mod_wsgi.so <VirtualHost *:>
# user/group 指定 tim 用户运行wsgi
WSGIDaemonProcess 'myweb' python-path=/web/myweb user=tim group=tim processes= threads= display-name=${GROUP}
WSGIProcessGroup 'myweb'
WSGIScriptAlias / /web/myweb/myweb/wsgi.py
Alias /static/ /web/myweb/static/
<Directory /web/myweb/static/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory> <Directory /web/myweb/myweb/>
Require all granted
</Directory> ErrorLog /var/log/httpd/myweb.log
LogLevel info
</VirtualHost> chown -R tim:tim /web/myweb
# 没有以下配置,开启的 SELinux 将阻止访问 httpd
chcon -R -t httpd_sys_content_t /web/myweb/
chcon -R -t httpd_log_t /web/myweb/logs
setsebool -P httpd_can_network_connect_db on # 如果需要连接到远程数据库,需要开启该值
setsebool -P httpd_can_network_connect on # 如果需要连接到LDAP进行认证,需要开启该值
更多bool 值(httpd_can_network_connect_db 属于bool值),可通过semanage boolean -l | grep 'httpd_' 进行查看 (policycoreutils-python 包内)
更多type 值(httpd_sys_content_t 属于type值),可通过 seinfo -t | grep 'httpd_' 进行查看 (setools-console 包内)
systemctl enable httpd.service
systemctl start httpd.service
ps -ef | grep 'FOREGROUND'
tim ...... (wsgi:myweb) -DFOREGROUND # 两个进程,每个进程内3个线程,运行用户为 tim
tim ...... (wsgi:myweb) -DFOREGROUND
apache ... /usr/sbin/httpd -DFOREGROUND ...

一些参考资料:

https://hub.packtpub.com/selinux-highly-secured-web-hosting-python-based-web-applications/

[TimLinux] django SELinux+httpd+mod_wsgi部署的更多相关文章

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

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

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

  3. flask在windows上用mod_wsgi部署

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

  4. django项目上线环境部署

    django项目上线环境部署 第一步 安装python虚拟环境 1 安装虚拟环境virtualenv 2 安装virtualenvwrapper工具 3 确认virtualenvwrapper.sh脚 ...

  5. Apache + mod_wsgi部署webpy应用

    Apache + mod_wsgi部署webpy应用   引用:http://webpy.org/cookbook/mod_wsgi-apache.zh-cn 下面的步骤在Apache-2.2.3 ( ...

  6. django+nginx+uwsgi_cent0s7.4 部署

    django+nginx+uwsgi_cent0s7.4 部署 几条命令 # 查看是否有 uwsgi 相关的进程 ps -aux|grep "uwsgi" # 杀死有关 uwsgi ...

  7. [TimLinux] django CentOS7中django+httpd+mod_wsgi中文UnicodeEncodeError错误

    1. 错误 web端访问页面,页面内的view函数要写一个含有中文名字的文件,出现了这个错误.在PyCharm开发调皮环境中不存在这样的错误,把系统部署到http, mod_wsgi时出现. 2. 定 ...

  8. Apache mod_wsgi部署Django项目

    学习python web开发,Django部署备忘 1.下载mod_wsgi,下载路径如下:http://code.google.com/p/modwsgi/downloads/list挑选For 2 ...

  9. CentOS7.4 部署 Django + Python3 + Apache + Mod_wsgi

    安装环境 Remote: CentOS 7.4 x64 (django.example.com) Python: Python3.6.5 Apache: Apache 2.4.6 Mod_wsgi: ...

随机推荐

  1. css3 input placeholder颜色修改方法

    css3 input placeholder颜色修改方法<pre> input::-webkit-input-placeholder { /* placeholder颜色 */ color ...

  2. abp(net core)+easyui+efcore实现仓储管理系统——ABP WebAPI与EasyUI结合增删改查之一(二十七)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  3. Verilog模块概念和实例化#转载自Jason from Lofter

    Verilog模块概念和实例化 模块的概念 模块(module)是verilog最基本的概念,是v设计中的基本单元,每个v设计的系统中都由若干module组成. 1.模块在语言形式上是以关键词modu ...

  4. 领扣(LeetCode)移动零 个人题解

    给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序. 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数组上操作, ...

  5. Java描述设计模式(21):状态模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.生活场景 1.场景描述 变色龙是爬行动物,是非常奇特的动物,它有适于树栖生活的种种特征和行为,身体也会随着环境的变化而变化出适应环境的颜色 ...

  6. Mint UI Example的运行

    Mint -UI是新推出的移动端UI框架 官网 不过官网上的文档例子不是很全面. 建议下载他们提供的example来学习. 1.examplle源码下载地址 2.打开项目,我这里使用webstorm, ...

  7. [apue] 神奇的 Solaris pipe

    说到 pipe 大家可能都不陌生,经典的pipe调用配合fork进行父子进程通讯,简直就是Unix程序的标配. 然而Solaris上的pipe却和Solaris一样是个奇葩(虽然Solaris前途黯淡 ...

  8. 看完这篇还不会用Git,那我就哭了!

    你使用过 Git 吗?也许你已经使用了一段时间,但它的许多奥秘仍然令人困惑. Git 是一个版本控制系统,是任何软件开发项目中的主要内容.通常有两个主要用途:代码备份和代码版本控制.你可以逐步处理代码 ...

  9. 2019-10-12,html+php+mysql简单留言板,作业

    php+mysql简易留言板,实现注册,登录,注销,查看留言,删除留言 1,index.html登录页面 代码: <!doctype html> <html> <head ...

  10. Python 中国大学排名定向爬虫

    代码来自于中国大学Mooc北京理工大学Pythont教学团队:https://www.icourse163.org/learn/BIT-1001870001#/learn/content?type=d ...