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. vue登录功能和将商品添加至购物车实现

     2.1: 学子商城--用户登录 用户登录商城用户操作行为,操作用户输入用户名和密码 点击登录按钮,一种情况登录成功 一种情况登录失败 "用户名或密码有误请检查" 2.2:如何实现 ...

  2. Python面向对象 | 类的成员

    一. 细分类的组成成员 之前咱们讲过类大致分两块区域,静态字段部分和方法部分. 每个区域详细划分又可以分为: class A: company = '阿里巴巴' # 静态变量(静态字段) __tel ...

  3. PHP---无限极分类数组处理

    $array = array(    0=>array('id'=>1,'uid'=>0,'menuname'=>'菜单1','url'=>0,'addtime'=> ...

  4. PHP代码安全有必要了解下

    攻击者通过构造恶意SQL命令发送到数据库,如果程序未对用户输入的 SQL命令执行判断过滤,那么生成的SQL语句可能会绕过安全性检查,插入其他用于修改后端数据库的语句,并可能执行系统命令,从而对系统造成 ...

  5. nyoj 305 表达式求值 (递归)

    表达式求值 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 Dr.Kong设计的机器人卡多掌握了加减法运算以后,最近又学会了一些简单的函数求值,比如,它知道函数min ...

  6. 【SpringBoot | Druid】SpringBoot整合Druid

    SpringBoot整合Druid Druid是个十分强大的后端管理工具,具体的功能和用途请问阿里爸爸 1. 在pom.xml中导入包 <!-- alibaba 的druid数据库连接池 --& ...

  7. django_4:数据库0——配置数据库

    使用Mysql数据库 (python需要能连接上mysql,见别的文档:python3+django 支持 mysql) 启动mysql服务 修改setting.py同目录 下的__init__.py ...

  8. Vue注册组件命名时不能用大写的原因浅析

    命名使用注意事项: https://www.jb51.net/article/160227.htm

  9. centos 更换用户密码

    腾讯云报告了我的服务器被暴力破解了.... 因此需要更换更复杂的password, 命令为:passwd  用户名,例如下我要更换root的password [root@VM_0_4_centos ~ ...

  10. C/C++ 条件编译静态库

    ==>windows 下方法: 1.方法一:VS工程中中直接添加 1.1在VS的属性->常规->附加库目录,添上文件夹的路径:例如:lib/x64: 1.2输入的附加依赖项,添加上库 ...