Y16
本博客借鉴于其他博客而作,有地方不同。大家可视自身所需情况了解。 借鉴博客: http://blog.51cto.com/51reboot/2105415
在Centos7下部署项目,需要先部署相关环境。在此配置环境版本:
- Remote:Centos7.0以上版本操作系统
- Python: Python3.6.5
- Apache: Apache 2.4.6
- Mod_wsgi: 4.6.4
- Django: Django 2.0.4
一、python3.6环境配置
1、安装 python3.6.5 源及依赖包
# 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.6.5 以及 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 virtualenv
二、Django环境配置
1、配置 Django virtualenv
# mkdir -p /var/www/html/django
# cd /var/www/html/django
# virtualenv -p /usr/local/bin/python3.6 venv
2、开启 virtualenv python3 环境
# source venv/bin/activate
3、在此环境安装 Django 相关模块
# pip install django pymysql
三、Apache配置
1、退出python3环境,安装apache package
# deactivate
# yum install httpd httpd-devel -y
2、开启 virtualenv python3 环境,安装mod_wsgi for python3
# pip install mod_wsgi
3、导出 apache 所需的 mod_wsgi 模块
# mod_wsgi-express install-module
4、注意第3步导出的第一句即:
LoadModule wsgi_module "/usr/lib64/httpd/modules/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so"
5、配置 apache 配置文件
# vi /etc/httpd/conf/httpd.conf
在末行添加第4步的语句(即第3步导出的第一句语句)
6、配置 django 配置文件
vi /etc/httpd/conf.d/django.conf
在里面填写:(注意工程名要统一,可自取)
Alias /static /var/www/html/django/’工程名’/static
<Directory /var/www/html/django/’工程名’/static>
Require all granted
</Directory>
<Directory /var/www/html/django/’工程名’/’工程名’>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIPythonHome "/var/www/html/django/venv"
Listen 8080
<VirtualHost *:8080>
ServerName django.example.com
WSGIDaemonProcess ‘工程名’ python-path=/var/www/html/django/venv/lib/python3.6/site-pachages
WSGIScriptAlias / /var/www/html/django/’工程名’/’工程名’/wsgi.py
</VirtualHost>
7、此时一定要关闭防火墙或者开启8080端口:方法链接
四、Django项目配置
如果是新建项目,推荐看顶层的借鉴博客,以下介绍直接部署已完成的项目。
以上执行完成后开始上传工程: 输入rz上传文件(若不能上传,使用yum -y install lrzsz安装上传插件),上传后解压缩
注意:上传的工程中不能有存在的数据库和已迁移文件,否则不能再centos中完成数据迁移,删除压缩包。
上传的工程有以下为两种数据库方式,请根据项目所连接的数据库选择对应方法。
1、部署项目基于sqlite数据库的操作
① 编辑settings.py:vi ‘项目名’/settings.py,在末行添加
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
② 进入工程目录中,迁移数据;创建项目管理员账户;生成静态文件目录
Python manage.py makemigrations #更新数据
Python manage.py migrate #迁移数据
Python manage.py createsuperuser #创建项目管理员
Python manage.py collectstatic #生成项目静态文件目录
③ 修改wsgi入口文件: # vi ‘工程名’/wsgi.py
import os
import sys
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")
sys.path.append('/var/www/html/django/工程名')
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
④ 添加ALLOWED_HOSTS: # vi ‘工程名’/settings.py
修改其中的: ALLOWED_HOSTS = [’*’]
‘*’ 代表允许任何网址访问。
⑤ 修改项目属性和权限
# chmod -R 755 /var/www/html
# chown -R apache:apache /var/www/html
⑥ Ls -l 可以用来查看生成的项目文件
⑦ 临时关闭selinux防火墙 输入setenforce 0
永久关闭可使用: vi /etc/selinux/config
改:SELINUX=enforcing
为:SELINUX=disabled (输入getenforce查看状态)
⑧ 如果views.py中有用到 IP 的地方(例如前后端交互使用静态网址路由上传文件),需要找到对应链接,改为此操作系统IP,即改为127.0.0.1
⑨ 测试网页。在网页中输入:
IP:8080/admin或IP:8080/url (url为urls.py中定义网址名)
2、部署项目基于mysql数据库的操作
① 完成文件上传后,在虚拟环境( source venv/bin/activate )中执行:
先执行:yum install mysql-devel
后执行:pip install mysqlclient
② 启动mysql (mysql -uroot -p) , 创建数据库(数据库名称必须和settings.py中的名称对应) , quit退出 , 之后进入虚拟环境
此时 , 若启动时出现错误Can’t connect to MySQL server on ‘XXX’
是因为mysql和centos在同一个操作系统中,所以执行setsebool httpd_can_network_connect 1 , 执行完后,重启阿帕奇和mysql数据库.
③ 安装成功之后执行上面的3(10)~(13)步骤,之后再修改项目中的__init__.py文件
④ Vi 项目名/__ init __.py
在其中添加:
import pymysql
pymysql.install_as_MySQLdb()
⑤ 重新启动systemctl restart httpd , 即可通过第“1⑨”步验证。
个人小结,定有不足之处,欢迎指点。
谢谢~