写在前面:
/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,结果就是一大堆问题,自己又是新手,完全抓瞎,最近可能前段时间霉运太多了,所以这几天竟然成功了,哈哈哈。