[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: ...
随机推荐
- lqb 基础练习 特殊的数字
基础练习 特殊的数字 时间限制:1.0s 内存限制:512.0MB 问题描述 153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3*3.编程求所有 ...
- nyoj 69-数的长度 (log10(),计算数的位数)
69-数的长度 内存限制:64MB 时间限制:3000ms 特判: No 通过数:10 提交数:13 难度:1 题目描述: N!阶乘是一个非常大的数,大家都知道计算公式是N!=N*(N-1)····· ...
- 领扣(LeetCode)两个数组的交集II 个人题解
给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2,2] 示例 2: 输入: nums1 = [4,9,5 ...
- MySQL基础知识面试与答案
1.Mysql 的存储引擎,myisam和innodb的区别. 答: 1.MyISAM 是非事务的存储引擎,适合用于频繁查询的应用.表锁,不会出现死锁,适合小数据,小并发. 2.innodb是支持事务 ...
- Android的系统框架的深入认识
Android采用层次化系统架构,官方公布的标准架构如下图所示.Android由底层往上分为4个主要功能层,分别是linux内核层(Linux Kernel),系统运行时库层(Libraries和An ...
- 新闻实时分析系统 基于IDEA环境下的Spark2.X程序开发
1.Windows开发环境配置与安装 下载IDEA并安装,可以百度一下免费文档. 2.IDEA Maven工程创建与配置 1)配置maven 2)新建Project项目 3)选择maven骨架 4)创 ...
- BIOS和CMOS概念整理
一:什么是BIOS BIOS(Basic Input Output System),基本输入输出系统.是被写死在主板ROM只读芯片中的一组程序,在开机的时候首先要去读取的一个小程序. 它是我们可以将 ...
- Electron存储简单数据和用户首选项推荐用electron-store
electron-store1可以用来保存Electron应用程序或模块的简单数据持久性-保存和加载用户首选项,应用程序状态,缓存等. 1https://github.com/sindresorhus ...
- 程序员的进阶课-架构师之路(14)-B+树、B*树
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/m0_37609579/article/de ...
- [ch04-03] 用神经网络解决线性回归问题
系列博客,原文在笔者所维护的github上:https://aka.ms/beginnerAI, 点击star加星不要吝啬,星越多笔者越努力. 4.3 神经网络法 在梯度下降法中,我们简单讲述了一下神 ...