Centos7配置部署Python3+Django+Apache
追寻心之所凤 2019-07-18 23:09:47 846 收藏 3
分类专栏: 项目部署 文章标签: Python项目部署
版权
一、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
- 1
- 2
- 3
- 4
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
- 1
- 2
- 3
- 4
- 5
3. 安装virtualenv
pip3.6 install --upgrade pip
pip3.6 install virtualenv
- 1
- 2
二、Django环境配置
1. 配置Django virtualenv
mkdir -p /var/www/html/django
cd /var/www/html/django
virtualenv -p /usr/local/bin/python3.6 .py3env
- 1
- 2
- 3
2. 开启virtualenv
source .py3env/bin/activate
*** 语法:
开启: source 虚拟环境名称/bin/activate
退出:deactivate
- 1
- 2
- 3
- 4
- 5
- 在此环境安装Django相关模块
- 注意:使用pip安装的内容都需要在虚拟环境下安装,否则将默认安装在Centos自带的Python2相关环境中
pip install django pymysql mod_wsgi
- 1
三、Apache配置
1. 安装apache package
yum install httpd httpd-devel -y
- 1
2. 导出apache所需的mod_wsgi模块
mod_wsgi-express install-module
- 1
结果(根据虚拟目录名称不同,这里结果也略有不同,但大致相同)
LoadModule wsgi_module "/usr/lib64/httpd/modules/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so"
WSGIPythonHome "/var/www/html/.py3env"
- 1
- 2
- 3
3.配置apache配置文件
vi /etc/httpd/conf/httpd.conf
- 1
在最后添加
LoadModule wsgi_module "/usr/lib64/httpd/modules/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so"
- 1
4. 创建相应的Django配置文件
vi /etc/httpd/conf.d/django.conf
- 1
写入(注意:这里我的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>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
5.重启apache并设置开机自启动
systemctl restart httpd
systemctl enable httpd
- 1
- 2
四 安装配置Mysql8
注意:此步骤需要在良好的网络下进行,且安装期间不要使用Ctrl+Z退出安装,否则yum将被占用,只有重新连接或者杀死指定进程才能重新安装
1. 下载mysql的repo源并安装
rpm -Uvh http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
- 1
2. 修改安装的Mysql版本
(1)查看repo源可安装版本
yum repolist all | grep mysql
- 1
之后会显示可安装的版本列表,默认安装版本为5.7
(2) 修改默认版本
vi /etc/yum.repos.d/mysql-community.repo
- 1
打开repo文件,将其中的5.7版本的enabled=1改为enabled=0以及8.0版本的enabled=0改为enabled=1,结果如下
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql80-community]
name=MySQL 8.0 Community Server
baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
(3)查看可用版本
yum repolist enabled | grep mysql
- 1
mysql-connectors-community/x86_64 MySQL Connectors Community 65
mysql-tools-community/x86_64 MySQL Tools Community 69
mysql80-community/x86_64 MySQL 8.0 Community Server 33
- 1
- 2
- 3
- 4
(4)启动MySQL并设置开机启动
# 启动
# systemctl start mysqld
# 开机启动
# systemctl enable mysqld
# systemctl daemon-reload
- 1
- 2
- 3
- 4
- 5
- 6
(5)生成初始密码
grep 'temporary password' /var/log/mysqld.log
- 1
2018-10-10T12:40:04.498437Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: h0tA=pS_lZ9f
# 最后的h0tA=pS_lZ9f为初始密码
- 1
- 2
(6)登录MySQL并修改初始密码
## 登录MySQL
mysql -uroot -p 初始密码
## 修改初始密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
# 密码强度默认为中等强度,需要由大写字母、小写字母、特殊符号、数字组成
# 可以先修改密码强度再修改密码
set global validate_password_length=4; (最小值是4,默认为8)
set global validate_password_policy=0
# 选择0(LOW),1(MEDIUM),2(STRONG)其中一种,选择2需要提供密码字典文件
# 之后修改密码便可以使用简单密码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
五、上传Django项目
1. 上传Django项目到Centos
首先使用yum安装上传插件
- yum -y install lrzsz
安装成功后上传Django压缩包(zip格式)并解压
## 上传命令
# rz
## 解压文件
# unzip django2.zip
- 1
- 2
- 3
- 4
2. 迁移数据库
进入虚拟环境并处于django项目下执行数据迁移操作
# 生成迁移
# python manage.py makemigrations
# 执行迁移
# python manage.py migrate
- 1
- 2
- 3
- 4
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项目
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
5.添加ALLOWED_HOSTS
vi myproject/settings.py
注意:myproject为自己项目名称
将如下内容
ALLOWED_HOSTS = []
改为
# 有域名
ALLOWED_HOSTS = ['*']
- 1
- 2
- 3
- 4
- 5
- 6
- 7
6.修改项目属主和权限
# chmod -R 755 /var/www/html
# chown -R apache:apache /var/www/html
- 1
- 2
- 3
六 其他配置
1. 关闭SELinux服务
- setenforce 0
2. 关闭防火墙或者开放指定端口(推荐开放指定端口)
# 关闭防火墙
# systemctl stop firewalld
# 开放端口
# 开放
# firewall-cmd --zone=public --add-port=80/tcp --permanent
# 重新载入
# firewall-cmd --reload