一. python3下载:
1. 安装前配置一些插件
#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 以及开始安装
# 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" 将python安装在usr/local目录下
# make && make altinstall 正式开始安装python
此时安装完成后centos上存在两个python版本, 一个python2.7, 一个python3.6
3. 安装 virtualenv ( virtuallenv: 虚拟环境) .
# pip3.6 install virtualenv
virtuallenv作用: 为每一个python版本下载一个对应的虚拟环境 可以把自己的项目放在对应的虚拟环境下, 以免和其它项目产生冲突.
pip后面跟着3.6的意思是: 在python3.6的版本中下载虚拟环境, 因为如果不加的话系统会默认下载到python2.7版本上.
virtuallenv会为每一个项目构建一个虚拟环境, 在虚拟环境内部放置的就是当前项目用到的所有第三方模块, 每一个项目只会用到自己所依赖的第三方模块, 项目与项目之间
不会相互影响, 如果有一天删除了其中一个虚拟环境, 不会影响到其它项目的运行.
二. Django 环境配置
1. 配置 Django virtualenv
Apache服务器默认的根目录, 每一次输入ip后默认先找到根目录. 未来运行的Django项目可以部署在var/www/html下面
# mkdir -p /var/www/html/django
# cd /var/www/html/django
# virtualenv -p /usr/local/bin/python3.6 venv
在文件夹内部生成Django运行所需的虚拟环境. virtualenv后面是所依据的python版本虚拟环境路径
2. 开启 virtualenv python3 环境
# source venv/bin/activate
3. 在此环境安装 Django 相关模块
# pip install django pymysql
4. 退出虚拟环境
# deactivate
三. Apache 配置(在真实环境下安装)
1. 安装 apache package
# yum install httpd httpd-devel -y
2. 安装 mod_wsgi for python3 (运行wsgi实例的第三方模块, 对应工程中的wsgi.py文件)
因为本项目部署在虚拟环境中, 所以wsgi模块也需要重新进入虚拟环境后再安装
# source venv/bin/activate 进入虚拟环境
# pip install mod_wsgi 安装wsgi
3. 导出 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"
4. 配置 apache 配置文件(apache默认安装在etc目录下, httpd即为apache)
# vi /etc/httpd/conf/httpd.conf
末行添加:
LoadModule wsgi_module “/usr/lib64/httpd/modules/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so”
5. 创建名字为django.conf的配置文件, 是用来Django项目和Apache进行连接的文件, 防止Django和自身所带的小型服务器链接
# vi /etc/httpd/conf.d/django.conf
#第一个django是工程名字, 第二个django2是项目名字, 可随自己项目名字更改
Alias /static /var/www/html/django/django2/static
<Directory /var/www/html/django/django2/static>
Require all granted
</Directory>
#此处是项目wsgi路径, 是django工程的django2项目下的django2文件夹下的文件
<Directory /var/www/html/django/django2/django2>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIPythonHome "/var/www/html/django/venv"
Listen 8080
<VirtualHost *:8080>
#为自己服务器设置的别名, django.example.com可更改成任意名字
ServerName django.example.com
#django2是项目名字 (此行代码是放置第三方模块)
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. 首先安装文件上传模块
yum install lrzsz -y
2. 选择项目django2压缩文件上传(注意: 上传工程之前要先把电脑本地的migrations中的类似于0001_initial.py文件给删除, 只留一个__init__.py文件 , 还有db.sqlite3文件也删除, 使用其他数据库同理)
rz
3. 解压缩
unzip django2.zip
4. 可删除上传的压缩文件
rm -rf django2.zip
5. 重启服务器
systemctl restart httpd
6. 配置服务器开机自启
systemctl enable httpd
此时部署已经完成, 但是还是不能访问, 因为防火墙没有关闭
两种方案可选:
(1). 关闭防火墙
systemctl stop firewalld
2.开放80端口
五. Django 项目配置
1. 保证 virtualenv python3 环境开启, 先进入虚拟环境
# source venv/bin/activate
2. 进入django2
cd django2
3. 将工程中的所有静态文件都拷贝到静态目录中
python manage.py collectstatic
4. 生成数据库表格
python manage.py makemigrations
python manage.py migrate
5.创建项目管理员账户(可看情况自己创建)
# python manage.py createsuperuser
Username (leave blank to use ‘root’): root
Email address: admin@admin.com
Password:
Password (again):
Superuser created successfully.
6. 修改 wsgi 入口文件
# vi django2/wsgi.py
import os
import sys
os.environ.setdefault(“DJANGO_SETTINGS_MODULE”, “django2.settings”)
sys.path.append(’/var/www/html/django/django2’)
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
7. 添加ALLOWED_HOSTS(允许访问项目的主机名)
# vi django2/settings.py
在settings.py中最后一行添加:
ALLOWED_HOSTS = [’*’] # (如果[ ]内设置为 * , 则所有主机都可访问)
8. 修改项目属主和权限(755最高权限, 任何情况下都能访问)
# chmod -R 755 /var/www/html
# chown -R apache:apache /var/www/html
此时登录页面, 如果往数据库里面写东西的话会报错, 因为现在数据库是只读权限, 可以修改成读写权限
两种方案: 1. 数据库权限改成读写
2. 数据库改成最高权限
chmod -R 755 db.sqlite3
至此, 项目就部署完毕了
可以创建超级管理员查看数据库信息, 然后登陆页面管理员页面查看. ip: 8080/admin
python manage.py createsuperuser