[TimLinux] django SELinux+httpd+mod_wsgi部署
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部署的更多相关文章
- CentOS 5系统安装Django、Apache 、mod_wsgi部署Python环境教程
Django,是一款针对Python环境的WEB开发框架,能够帮助我们构架快捷.简单的WEB框架设置,Django框架非常适合开发内容应用环境,所以在本文中,麦子将整理基于Centos系统部署安装Dj ...
- 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 下载地址: ...
- flask在windows上用mod_wsgi部署
flask在windows上用mod_wsgi部署也是折腾了不少时间,下面就总结下. 首先下载Apache httpd,我认为Apache Hans比较好: 一般这种情况下,你的python环境已经安 ...
- django项目上线环境部署
django项目上线环境部署 第一步 安装python虚拟环境 1 安装虚拟环境virtualenv 2 安装virtualenvwrapper工具 3 确认virtualenvwrapper.sh脚 ...
- Apache + mod_wsgi部署webpy应用
Apache + mod_wsgi部署webpy应用 引用:http://webpy.org/cookbook/mod_wsgi-apache.zh-cn 下面的步骤在Apache-2.2.3 ( ...
- django+nginx+uwsgi_cent0s7.4 部署
django+nginx+uwsgi_cent0s7.4 部署 几条命令 # 查看是否有 uwsgi 相关的进程 ps -aux|grep "uwsgi" # 杀死有关 uwsgi ...
- [TimLinux] django CentOS7中django+httpd+mod_wsgi中文UnicodeEncodeError错误
1. 错误 web端访问页面,页面内的view函数要写一个含有中文名字的文件,出现了这个错误.在PyCharm开发调皮环境中不存在这样的错误,把系统部署到http, mod_wsgi时出现. 2. 定 ...
- Apache mod_wsgi部署Django项目
学习python web开发,Django部署备忘 1.下载mod_wsgi,下载路径如下:http://code.google.com/p/modwsgi/downloads/list挑选For 2 ...
- 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: ...
随机推荐
- python手册学习笔记2
笔记2 > http://www.pythondoc.com/pythontutorial3/datastructures.html 列表操作 list.append(x) 把一个元素添加到列表 ...
- 【R语言学习笔记】 Day1 CART 逻辑回归、分类树以及随机森林的应用及对比
1. 目的:根据人口普查数据来预测收入(预测每个个体年收入是否超过$50,000) 2. 数据来源:1994年美国人口普查数据,数据中共含31978个观测值,每个观测值代表一个个体 3. 变量介绍: ...
- docker swarm 过滤器affinity 限制副本不会出现在同一个节点上
affinity:container!=容器服务名称(可以是正则) 举个例子:stack_ds.yaml # cat stack_dsc.yaml version: '3.0' services: t ...
- spark-宽依赖和窄依赖
一.窄依赖(Narrow Dependency,) 即一个RDD,对它的父RDD,只有简单的一对一的依赖关系.也就是说, RDD的每个partition ,仅仅依赖于父RDD中的一个partition ...
- 破解加密Excel
打开要解除保护的EXCEL ALT+F11----插入模块----复制粘贴代码----F5============================代码========================= ...
- mui 底部导航栏的实现
mui 底部导航栏的实现 <nav class="mui-bar mui-bar-tab"> <a id="display" class=&q ...
- nyoj 57-6174问题(相邻元素判断问题)
57-6174问题 内存限制:64MB 时间限制:1000ms Special Judge: No accepted:16 submit:31 题目描述: 假设你有一个各位数字互不相同的四位数,把所有 ...
- nyoj 524-A-B Problem (java stripTrailingZeros, toPlainString)
524-A-B Problem 内存限制:64MB 时间限制:1000ms 特判: No 通过数:2 提交数:4 难度:3 题目描述: A+B问题早已经被大家所熟知了,是不是很无聊呢?现在大家来做一下 ...
- mongodb存储二进制数据
mongodb 3.x存储二进制数据并不是以base64的方式,虽然在mongo客户端的查询结果以base64方式显示,请放心使用.下面来分析存储文件的存储内容.base64编码数据会增长1/3成为顾 ...
- opencv各种小例子
图像腐蚀 #include <opencv2/highgui/highgui.hpp>//OpenCV highgui 模块头文件 ~ #include <opencv2/imgpr ...