Centos下安装Python, 部署Django项目

一. 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

版权声明:本文为weixin_42603129原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。