Django项目部署:Linux(centos7)+Nginx+Uwsgi+Python3+Mysql+Redis
笔记来源于刘建萍老师。自学自用,侵权删。
在windows系统中开发的django项目部署到centos系统中 并且可以在浏览器中可以访问项目
详细步骤(下面步骤都是ROOT权限执行):
1) 先安装python
2) 安装pip
3) 安装django
4) 把项目从windows系统拷贝到centos系统中django框架所在的项目的路径 通过命令行
5) 先通过django自带的web服务器运行项目 python manage.py runserver 0.0.0.0:8000 X
6) 安装uwsgi web服务器
7) 安装 web服务器 nginx (小巧 性能特别高 10000)
8) 通过nginx来启动django项目
Django+uWsgi+Nginx原理的初步理解
Nginx 是一个反向代理服务器,负责静态资源处理、动态请求转发以及结果的回复。
uWSGI 是一个Web服务器,负责接收 Nginx 请求,转发并处理后发给 Django 以及
接收 Django 返回信息转发给 Nginx。uWSGI是 实现了uwsgi协议,WSGI规范和HTTP协议的 一个C语言实现的软件。
Django 是一个Web应用框架,在收到请求后进行逻辑和数据处理,然后响应结果给 uWSGI 服务器。
通信关系:
一、更新系统软件包;安装软件管理包和可能使用的依赖
yum update -y
yum -y groupinstall "Development tools"
yum -y install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
二、安装Python (存放地方:eg: /home/soft)
登录到https://www.python.org/ftp/python/ 网站看所有版本 选择合适的版本下载
wget https://www.python.org/ftp/python/3.5.4/Python-3.5.4.tgz
tar -zxvf Python-3.5.4.tgz
cd Python-3.5.4
#编译安装
./configure --prefix=/usr/local/python3
make && make install
make && make install 后的结果:
查看安装后py目录的文件内容
#创建软连接
ln -s /usr/local/python3/bin/python3.5 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3.5 /usr/bin/pip3
#查看Python3和pip3安装情况
python3 --version
pip3 --version
Linux软连接相当于Windows的快捷方式,也可参考于Windows的环境变量。可直接使用Python3来操作指令,否则就要输一大串的内容/usr/local/python3/bin/python3.5。
此时python3 --version 等价于 /usr/local/python3/bin/python3.5 --version
三、安装virtualenv 来存放各个项目用到的扩展包的
pip3 install virtualenv
#建立软链接
ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
#安装成功在根目录下建立两个文件夹,主要用于存放env和网站文件的。
mkdir -p /data/env
mkdir -p /data/wwwroot
四、切换到/data/env/下,创建指定版本的虚拟环境。
cd /data/env
virtualenv --python=/usr/bin/python3 pyweb
#然后进入/data/env/pyweb/bin ,启动虚拟环境:
cd /data/env/pyweb/bin
source activate
#留意标记的位置,出现(pyweb),说明是成功进入虚拟环境
五、虚拟环境里用python3安装django和uwsgi
# (如果用于生产的话,则需要指定安装和你项目相同的版本)
pip3 install django
#切换到网站目录/data/wwwroot,把windows系统中的Django项目拷贝到linux系统的存放项目的路径中(可用rz命令来拷贝 )
cd /data/wwwroot
#上传py项目的zip包,然后解压
此时py项目的路径是 /data/wwwroot/cms
还要上传个manager.py 。
六、通过django自带的web服务器来运行项目项目
报错:
出现上述错误,可能的原因是刚才的django没安装完毕。 重新操作即可
python3 manage.py runserver 0.0.0.0:8000
此时报了另一个错误,提示要安装pymysql
此时再次:python3 manage.py runserver 0.0.0.0:8000 。 再次有报错
(要修改base.py)
另一个报错:
修复参考:
修改注释base.py的内容后,再次运行python3 manage.py runserver 0.0.0.0:8000 。仍有报错,由于目前还没安装mysql。先指向公网的mysql,先让项目跑起来。
修改 settings.py的database的host。 这里指向了个公网的地址 47.100.xxx.xxx的 luzancms
修改setting.py的 allowed_hosts
添加防火墙允许的端口
#防火墙端口、开启的命令
firewall-cmd --list-ports
处理完一系列报错后再次运行
访问192.168.1.186:8000/admin/login 。 此时Django自带的web服务器能正常运行py项目了。
步骤小结:
启动虚拟环境:source activate
8000端口一定要开启
版本的问题注释一些代码
进入项目的根目录python3 manage.py runserver o.o.o.o:8000
此部署笔记过程也记录了报错及其处理方式,通过给出的报错关键字,通过网上处理方法来解决问题。
END