欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

  1. 在此环境安装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静态文件集合到公共静态文件中

3. 创建项目管理员账户(可选)

创建可登录django环境自带后台数据库的超级用户,如不需要可跳过

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

相关标签: Python项目部署