Centos7配置部署Python3+Django+Apache
程序员文章站
2022-03-04 12:48:39
...
一、Python3环境配置
1. 安装Python3源及依赖包
- yum install epel-release -y
- yum groupinstall “Development tools” -y
- yum install zlib-devel bzip2-devel openssl-devel ncurses-devel zx-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel -y
2. 编译安装Python3以及pip package manager
wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz --no-check-certificate
tar xf Python-3.6.5.tar.xz
cd Python-3.6.5
./configure --prefix=/usr/local --with-ensurepip=install --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
make && make altinstall
3. 安装virtualenv
pip3.6 install --upgrade pip
pip3.6 install virtualenv
二、Django环境配置
1. 配置Django virtualenv
mkdir -p /var/www/html/django
cd /var/www/html/django
virtualenv -p /usr/local/bin/python3.6 .py3env
2. 开启virtualenv
source .py3env/bin/activate
*** 语法:
开启: source 虚拟环境名称/bin/activate
退出:deactivate
- 在此环境安装Django相关模块
- 注意:使用pip安装的内容都需要在虚拟环境下安装,否则将默认安装在Centos自带的Python2相关环境中
pip install django pymysql mod_wsgi
三、Apache配置
1. 安装apache package
- yum install httpd httpd-devel -y
2. 导出apache所需的mod_wsgi模块
mod_wsgi-express install-module
结果(根据虚拟目录名称不同,这里结果也略有不同,但大致相同)
LoadModule wsgi_module "/usr/lib64/httpd/modules/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so"
WSGIPythonHome "/var/www/html/.py3env"
3.配置apache配置文件
vi /etc/httpd/conf/httpd.conf
在最后添加
- LoadModule wsgi_module “/usr/lib64/httpd/modules/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so”
4. 创建相应的Django配置文件
- vi /etc/httpd/conf.d/django.conf
写入(注意:这里我的django项目名称为django2,因此路径链接为django2配置文件中路径根据上传文件决定,其目的是连接到项目自动生成文件的虚拟目录、wsgi.py、静态文件目录等,需根据自身文件路径改变)
Alias /static /var/www/html/django/django2/common_static #项目名/所有app共享资源文件夹
<Directory /var/www/html/django/django2/common_static>
Require all granted
</Directory>
<Directory /var/www/html/django/django2> #项目名
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIPythonHome "/var/www/html/django/.py3env" #虚拟环境名
# Listen 80
<VirtualHost *:80>
ServerName 106.14.115.177 #公网ip地址
WSGIDaemonProcess django2 python-path=/var/www/html/django/.py3env/lib/python3.6/site-pachages
WSGIScriptAlias / /var/www/html/django/django2/django2/wsgi.py #项目名
</VirtualHost>
5.重启apache并设置开机自启动
systemctl restart httpd
systemctl enable httpd
四、上传Django项目
1. 上传Django项目到Centos
首先使用yum安装上传插件
- yum -y install lrzsz
安装成功后上传Django压缩包(zip格式)并解压
## 上传命令
# rz
## 解压文件
# unzip django2.zip
2. 迁移数据库
进入虚拟环境并处于django项目下执行数据迁移操作
# 生成迁移
# python manage.py makemigrations
# 执行迁移
# python manage.py migrate
3. 生成项目静态文件目录
将各app静态文件集合到公共静态文件中
- python manage.py collectstatic
3. 创建项目管理员账户(可选)
创建可登录django环境自带后台数据库的超级用户,如不需要可跳过
- python manage.py createsuperuser
4. 修改wsgi.py入口文件
vi myproject/wsgi.py
注意:myproject为自己项目名称
将主要内容修改为
import os
import sys
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")
sys.path.append('/var/www/html/django/django2')
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
# 注意,sys.path.append中的路径根据项目具体路径修改,其目的是连接到Django项目
5.添加ALLOWED_HOSTS
vi myproject/settings.py
注意:myproject为自己项目名称
将如下内容
ALLOWED_HOSTS = []
改为
# 有域名
ALLOWED_HOSTS = ['*']
6.修改项目属主和权限
# chmod -R 755 /var/www/html
# chown -R apache:apache /var/www/html
六 其他配置
1. 关闭SELinux服务
- setenforce 0
2. 关闭防火墙或者开放指定端口(推荐开放指定端口)
# 关闭防火墙
# systemctl stop firewalld
# 开放端口
# 开放
# firewall-cmd --zone=public --add-port=80/tcp --permanent
# 重新载入
# firewall-cmd --reload
上一篇: ASP.NET 按秒累加时间