Centos6.9+Python3+Nginx+Uwsgi+Django2.0
0x00 前言
本文为 Centos6.9+Python3+Nginx+Uwsgi+Django2.0 下的部署方法,该方法不太适合纯小白直接粘贴复制,因为部分操作需要稍微修改为自己源码环境下路径才可以。
0x01 正文
可能是菜吧,花费了一下午和一晚上,踩了N个坑,才成功搭建完成。
- 更新源
yum update -y
- 安装软件管理包和可能使用的依赖
yum -y groupinstall “Development tools”
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
- 下载Pyhton3到 /usr/local 目录
切换到 /usr/local 目录,获取python3.6的压缩文件
执行命令:
wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz
- 解压python3.6
tar -zxvf Python-3.6.6.tgz
- 安装python3.6
A)执行命令: ./configure –prefix=/usr/local/python3
注意:/usr/local/python3 路径可以自己指定
B)安装python3
a)执行命令: make
b)执行命令: make install
C)安装完成之后,建立软链接,添加变量,方便在终端中直接使用python3
a)python3的软连接
执行命令: ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
b)pip3的软连接
执行命令: ln -s /usr/local/python3/bin/pip3.6 /usr/bin/pip3
c)查看python和pip的版本
执行命令: python3 和 pip3 -V
- 设置 pip 国内源
永久性设置,是在用户根目录(,而非系统根目录 / )下添加配置/.pip/pip.conf目录添加可信源,如果目录文件不存在,可直接创建。
[root@localhost ~]# cd
[root@localhost ~]# mkdir .pip
[root@localhost ~]# cd .pip
[root@localhost .pip]# vim pip.conf
写入如下内容
[global]
index-url=http://pypi.douban.com/simple
trusted-host = pypi.douban.com
加上trusted-host防止pip报警。
- 安装virtualenv ,建议大家都安装一个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
退出环境: deactivate
注意:出现(pyweb),说明是成功进入虚拟环境
- 虚拟环境里安装Django和uwsgi
执行命令: pip3 install django 注意:如果用于生产的话,则需要指定安装和你项目相同的版本
执行命令: pip3 install uwsgi
给uwsgi建立软链接:
执行命令: ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
- 下载或安装 Django 项目
git clone https://github.com/shiyan-520/django_blog.git
or
创建 Django 项目
- Centos系统自带的sqlite3版本偏低,需要升级到 SQLite 3.8.3 或以上版本
切换到 /usr/local 目录,获取 SQLite 3.8.3更高版本 的压缩文件
下载高版本:wget https://www.sqlite.org/snapshot/sqlite-snapshot-201911030007.tar.gz
解压安装包:tar -zxvf sqlite-snapshot-201911030007.tar.gz
设置安装目录:./configure –prefix=/usr/local/sqlite3
编译和安装:make && make install
查找当前系统中其它版本软件:find /usr/ -name sqlite3
把旧版本的移到一个新的目录中:mv /usr/bin/sqlite3 /usr/bin/sqlite3_old
设置软连接:ln -s /usr/local/sqlite3/bin/sqlite3 /usr/bin/sqlite3
查看当前版本是否新的版本:sqlite3 –version
共享库修改,注意修改为sqlite的安装路径地址:
vim ~/.bashrc
export LD_LIBRARY_PATH=”/usr/local/sqlite3/lib”
修改完成后,进行重启电脑,然后查看是否配置成功:
python3
1 |
|
- 此时在virtualenv里运行Django博客可能出现以下错误
错误提示:django.db.utils.NotSupportedError: URIs not supported
解决方案是,使用vim打开提示报错的那个文件并找见报错的那一行,把 URI 对应的 True 改成 Flase 。
- 本地预览一下项目是否能正常使用
python3 manage.py makemigrations
python3 manage.py migrate
python3 manage.py runserver –insecure
- 项目正常运行,准备配置 uwsgi
创建 django_blog.xml文件,用于相关配置:
1 |
|
uwsgi配置参数详解:
1 |
|
然后在xml文件中,进行设置:
vim django_blog.xml
1 |
|
- 安装nginx和配置nginx.conf文件
wget http://nginx.org/download/nginx-1.17.5.tar.gz
tar -zxvf nginx-1.17.5.tar.gz
nginx一般默认安装好的路径为/usr/local/nginx
a)执行命令: cd nginx-1.17.5.tar.gz 进入nginx-1.17.5.tar.gz文件夹
b)执行命令: ./configure
第一次安装 nginx 时,可能会提示“ make: *** 没有规则可以创建“default”需要的目标“build”。 停止。”在 make 的时候。
这个时候就要安装一些依赖包:
yum install pcre-devel zlib zlib-devel openssl openssl-devel
./configure
c)执行命令: make
d)执行命令: make install
- 进入 /usr/local/nginx/conf 目录,打开nginx.conf文件
a)执行命令: cd /usr/local/nginx/conf 进入目录
b)执行命令: vim nginx.conf 在server里编辑以下内容:
1 |
|
c)执行命令: cd /usr/local/nginx/sbin 进入 /usr/local/nginx/sbin/ 目录
d)执行命令: ./nginx -t
e)执行命令: ./nginx
- 访问项目的页面
进入虚拟机环境目录下:cd /data/env/pyweb/bin/
启动虚拟机:source activate
进入Django源码路径:cd /data/wwwroot/django_blog/
启动 xml 服务:uwsgi -x django_blog.xml
进入Nginx目录:cd /usr/local/nginx/sbin/
重启服务器:./nginx -s reload 重启nginx
打开浏览器访问 本机IP地址的80端口即可。
- 重启 uwsgi 方法
ps -ef | grep uwsgi
kill xxxx xxxx xxxx xxxx
uwsgi django_blog.xml
cd /usr/local/nginx/sbin/
./nginx -s reload
- 解决Django admin 后台无法渲染静态文件问题
进入 settings.py 文件中,添加:
STATIC_ROOT = os.path.join(BASE_DIR, ‘static’)#指定样式收集目录
然后执行下面命令
python3 manage.py collectstatic
- 开启和关闭博客
uwsgi 相关:
开启:
cd /data/wwwroot/django_blog/
uwsgi django_blog.xml
关闭:
ps -ef | grep uwsgi
kill xxxx xxxx xxxx xxxx
nginx 相关:
cd /usr/local/nginx/sbin/
开启:
./nginx
关闭:
./nginx -s stop
重启:
./nginx -s reload
0x03 结束语
部署上线,踩的坑是真的多,各种报错,磕磕盼盼才成功上线,O(∩_∩)O哈哈~