django在本地环境非常好配置使用自带的web服务就可以了但是部署到服务器上再使用自带的web就不方便了 一般是配合nginx或apache来使用。
这篇文章主要是教如何搭配apache的
1.升级sqlite3(高版本django高版本不支持低版本sqlite3)
#一定要在安装python3前升级,然后再编译安装python3时制定sqlite3路径,不然python3用的还是旧版本
cd /home
#下载包的时候加上--no-check-certificate要不然会报错如下
wget https://www.sqlite.org/snapshot/sqlite-snapshot-202203052020.tar.gz --no-check-certificate
tar zxvf sqlite-snapshot-202203052020.tar.gz
cd sqlite-snapshot-202203052020
./configure --prefix=/usr/local/sqlite3 #建议安装至/usr/local/ 此目录安装Python需用到
make && make install
cp sqlite3 /usr/bin/sqlite3
sqlite3 -version #查看
2.安装python依赖
yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
yum install libffi-devel -y
3.安装python3.6.8
#注意centos 自带Python2 环境变量名python
#安装Python3应以python3命名
#安装路径:建议usr/local/python3cd
wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
tar -zxvf Python-3.6.8.tgz#安装环境配置
LD_RUN_PATH=/usr/local/lib ./configure LDFLAGS="-L/usr/local/lib" CPPFLAGS="-I/usr/local/include" --prefix=/usr/local/python3 --enable-shared CFLAGS=-fPIC
LD_RUN_PATH=/usr/local/lib make
make && make install#建立软链接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
#我这里建立软连接后运行python3报错#python3: error while loading shared libraries: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory
#环境配置的时候的问题 解决方案如下
cp /usr/local/python3/lib/libpython3.6m.so.1.0 /usr/lib64/
#到此python3 安装完成
#升级pip3
pip3 install --upgrade pip
#安装django
pip3 install django==3.2.19
#这里建议pip3换源(我这里换成了阿里云国内镜像)
pip3 config set global.index-url https://mirrors.aliyun.com/pypi/simple/
#运行Django项目可能需要的python依赖
yum install -y python3-devel.x86_64
4.安装mod-wsgi
mod-wsgi安装是问题最多的,先系统里运行如下命令,安装好这些模块,才能正常安装:
yum install python36-devel
yum install gcc libffi-devel openssl-devel -y
sudo dnf install gcc-c++ gcc-gfortran redhat-rpm-config
pip3 install mod-wsgi
这样基本上才能安装正常。
安装好mod-wsgi,运行下面的命令:
mod_wsgi-express install-module
会得到如下信息,请把这个复制到Apache的htttpd.conf配置文件。配置文件的:LoadModule wsgi_module "/usr/lib64/httpd/modules/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so"就是这里获取到的。
#dnf 如果没有安装的话使用yum安装
yum install epel-release //先安装依赖
yum install dnf
5.站点配置
#Apache的配置
#找到httpd.conf 一般在 /etc/httpd/conf
#在文件最后面加上下面内容
#加载mod-wsgi模块
LoadModule wsgi_module modules/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so
<VirtualHost *:80>
DocumentRoot "/var/www/html/mysite" //项目地址
WSGIScriptAlias / "/var/www/html/mysite/mysite/wsgi.py"
Alias /static/ /var/www/html/mysite/static/ //静态文件
<Directory /var/www/html/mysite/static>
Require all granted
</Directory>
<Directory "/var/www/html/mysite">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
#django中settings.py配置 网上都能收到我这里就写了两个
DEBUG = False #调试关闭
ALLOWED_HOSTS = ["*"] #允许所有地址访问
TIME_ZONE = 'Asia/Shanghai'//时区
STATIC_URL = '/static/' //静态文件地址
STATIC_ROOT = os.path.join(BASE_DIR,'static')
#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)
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE","mysite.settings")
application = get_wsgi_application()
到这里基本完成 重启apache服务器 然后浏览器输入域名就可以了 应该是这个页面
这里我没有配置域名 安装apache过程也没写 主要我很早就装好了 使用yum install httpd
这篇文章是我边做边写的 网上有很多教程 但是我总碰到问题 我就把我的过程写了一遍希望可以帮助到大家。有问题也可以留言一起讨论。