centos7下django部署(apache)

26 篇文章 1 订阅
12 篇文章 0 订阅

写在前面:

/var/log/httpd/error.log 看错误
/etc/httpd/conf/httpd.conf 自带的
/etc/httpd/conf.d/django.conf 自己创建的
/var/www/html/ 下面放django项目

进入正题:

1.安装apache package(在真实环境中安装)
yum install httpd
yum install httpd-devel
2.启动apache网站

systemctl start httpd.service

查看是否启动成功

[root@localhost learning_log]# lsof -i :80

COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
httpd   6654   root    4u  IPv6  56974      0t0  TCP *:http (LISTEN)
httpd   6655 apache    4u  IPv6  56974      0t0  TCP *:http (LISTEN)
httpd   6656 apache    4u  IPv6  56974      0t0  TCP *:http (LISTEN)
httpd   6657 apache    4u  IPv6  56974      0t0  TCP *:http (LISTEN)
httpd   6658 apache    4u  IPv6  56974      0t0  TCP *:http (LISTEN)
httpd   6659 apache    4u  IPv6  56974      0t0  TCP *:http (LISTEN)

[root@localhost learning_log]#firefox 192.168.啥.啥或firefox 127.0.0.1

注:192.168.啥.啥为自己的ip地址
此时会显示Apache的测试界面

3.剪切原learning_log文件夹(django项目)到/var/www/html/下
注:原本放在/root下,结果部署的时候有权限问题改不过来(主要是我不会),所以剪切过来了
4.安装 mod_wsgi for python3(在虚拟/真实环境中安装,经试验都可以)
①首先安装ius源:
curl https://setup.ius.io/ | bash
②安装mod_wsgi
yum install -y python36u-mod_wsgi
补:卸载之前安装的mod_wsgi:yum erase mod_wsgi
注:试过其他方法,无法成功下载安装mod_wsgi
5.配置Apache配置文件
①在/etc/httpd/conf/httpd.conf文件末尾中添加以下内容

LoadModule  wsgi_module modules/mod_wsgi.so

该配置用来连接django.wsgi,使工程被Apache加载
注:httpd.conf文件里末尾处有一句

IncludeOptional conf.d/*.conf

这使得下一步新建的django.conf被关联
②新建/etc/httpd/conf.d/django.conf
内容为

<VirtualHost *:80>
    ServerName localhost
    ServerAlias otherdomain.com
    ServerAdmin yyy
    Alias /static/ /var/www/html/learning_log/static/
    <Directory /var/www/html/learning_log/static>
        Order deny,allow
	  Allow from all
    </Directory>
    WSGIScriptAlias / /var/www/html/learning_log/learning_log/wsgi.py
    <Directory /var/www/html/learning_log/learning_log>
    <Files wsgi.py>
        Order deny,allow
	  Allow from all
    </Files>
    </Directory>
</VirtualHost>

注:如果要修改这里的端口号80为其他的端口号,需要同时修改/etc/httpd/conf/httpd.conf里面的端口号80
6.打开/var/www/html/learning_log/learning_log/wsgi.py,修改为

import os
from os.path import join,dirname,abspath
PROJECT_DIR = dirname(dirname(abspath(__file__)))
import sys 
sys.path.insert(0,PROJECT_DIR) 
sys.path.append("/var/www/html/learning_log/ll_env/lib/python3.6/site-packages") 
os.environ["DJANGO_SETTINGS_MODULE"] = "learning_log.settings" 
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

6.重启apache并设置开机自启动
systemctl restart httpd
systemctl enable httpd
8.关闭SELINUX:
setenforce 0
注:只是临时关闭,重启电脑后要重新setenforce 0
9.登录出现问题,提示attempt to write a readonly database
原因:使用的是sqlite3数据库

(ll_env) [root@localhost html]# chgrp apache learning_log
(ll_env) [root@localhost html]# chmod g+w learning_log
(ll_env) [root@localhost html]# chgrp apache learning_log/db.sqlite3
(ll_env) [root@localhost html]# chmod g+w learning_log/db.sqlite3
注:上面的不要加 -R ,-R是更改包括所有的子文件夹和文件,这样不安全。
10.重启apache(可以不重启):
(ll_env) [root@localhost html]# systemctl restart httpd
11.localhost:80
注:端口号用自己修改的

写在最后:

万万没想到,nginx上部署成功后,原来怎么也部署不了的apache上竟然也成功了,阿弥陀佛。
我是跟着自强学堂上的django部署教程来的,但他是用的Ubuntu,我用的是Centos,结果就是一大堆问题,自己又是新手,完全抓瞎,最近可能前段时间霉运太多了,所以这几天竟然成功了,哈哈哈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值