CentOS环境下Django项目部署
第一次写博客,还望各位大佬和各位前辈不吝赐教。
1. 标题更新软件源
yum update -y
2.安装软件管理包和可能使用的依赖
yum -y groupinstall "Development tools"
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
3.下载Pyhton3到/usr/local 目录(这里使用的是Python3.6.5)
wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
解压
tar -zxvf Python-3.6.5.tgz
进入 Python-3.6.5路径
cd Python-3.6.5
编译安装到**/usr/local/python3**
./configure --prefix=/usr/local/python3
安装python
make
make install
安装完成之后建立为Python3建立软连接,方便在终端直接使用
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
如果报错可以使用
ln -sf /usr/local/python3/bin/python3.6 /usr/bin/python3
由于pip和Python是同时安装的,这里我们直接为其建立软连接就行了。
ln -s /usr/local/python3/bin/pip3.6 /usr/bin/pip3
4.查看Python和pip3的安装情况
查看Python我们可以直接
如图显示表示安装成功。
Python的版本为3.6.5,pip3的版本为9.0.3
5.安装隔离Python环境virtulenv
使用如下命令安装:
pip3 install virtualenv
这里提示pip3版本过低。可以使用如下命令升级:
pip3 install --upgrade pip
然后我们为virtulenv建立软连接
ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
在根目录下新建两个文件夹用来存放网站的项目文件
mkdir -p /data/env
mkdir -p /data/wwwroot
6.切换到/data/env/下,创建指定版本的虚拟环境。
virtualenv --python=/usr/bin/python3 pyweb
然后进入/data/env/pyweb/bin
cd /data/env/pyweb/bin
启动虚拟环境:
source activate
7.在虚拟环境里用pip3安装django和uwsgi
pip3 install django==3.0.2
pip3 install uwsgi
这里指定Django的版本为3.0.2
注:uwsgi需要安装两次
其中一次安装在系统,一次安装在虚拟环境
安装完成后为其建立软链接
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
8.将项目文件上传至/data/wwwroot/内
9.安装requirement内的Python第三方库
切换到/data/wwwroot/项目/requirement文件夹
pip3 install -r common.txt
10.恢复数据库
执行命令进入数据库
mysql -u用户名 -p密码
以utf8格式创建一个数据库
CREATE DATABASE `数据库名` CHARACTER SET utf8 COLLATE utf8_general_ci;
使用下面语句查看当前有哪些数据库
show databases;
选中数据库,并恢复本地备份的数据:
use 数据库名;
source /data/wwwroot/备份文件.sql;
11.检验一下项目能否正常运行
python3 manage.py runserver
估计很多人和我一样会发生如下的错误:
raise ImproperlyConfigured(‘mysqlclient 1.3.13 or newer is required; you have %s.’ % Database.version)
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
这是Django项目中比较常见的一类错误,我们只需要前往对应的base.py文件将下面这两句屏蔽掉即可。
vim /data/env/pyweb/lib/python3.6/site-packages/django/db/backends/mysql/base.py
#if version < (1, 3, 13):
# raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
然后错误就消失了,项目正常启动。
12.配置uwsgi
在项目根目录下创建项目项目名.xml文件
vim 项目名.xml
并输入如下内容:
<uwsgi>
<socket>127.0.0.1:8997</socket><!-- 内部端口,自定义 -->
<chdir>/data/wwwroot/项目名称/</chdir><!-- 项目路径 -->
<module>项目名称.wsgi</module>
<processes>4</processes> <!-- 进程数 -->
<daemonize>uwsgi.log</daemonize><!-- 日志文件 -->
</uwsgi>
13.安装nginx
进入/home目录
cd /home/
执行下面命令下载nginx
wget http://nginx.org/download/nginx-1.13.7.tar.gz
下载完成后执行解压操作
tar -zxvf nginx-1.13.7.tar.gz
进入nginx-1.13.7文件夹
cd nginx-1.13.7
依次执行下列命令
./configure
make
make install
进入 /usr/local/nginx/conf/
cd /usr/local/nginx/conf/
对 nginx.conf文件进行备份
cp nginx.conf nginx.conf.bak
删除原有的nginx.conf文件,并用vim新建
rm -rf nginx.conf
vim nginx.conf
写入如下内容
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
server {
listen 80;
server_name www.django.cn; #改为自己的域名,没域名修改为127.0.0.1:80
charset utf-8;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8997; #端口要和uwsgi里配置的一样
uwsgi_param UWSGI_SCRIPT mysite.wsgi; #wsgi.py所在的目录名+.wsgi
uwsgi_param UWSGI_CHDIR /data/wwwroot/mysite/; #项目路径
}
location /static/ {
alias /data/wwwroot/mysite/static/; #静态资源路径
}
}
}
进入/usr/local/nginx/sbin/目录
cd /usr/local/nginx/sbin/
执行下列代码测试配置文件是否有错
./nginx -t
没有错就执行以下命令:
./nginx
终端没有任何提示就证明nginx启动成功。
然后,我们需要对项目的setting.py文件进行一些更改。
关闭DEBUG模式。
DEBUG = False
设置任何IP都可以访问
ALLOWED_HOSTS = ['*']
14.访问项目的页面
进入网站的项目目录
cd /data/wwwroot/项目名称/
执行下列命令
uwsgi -x 项目名称.xml
进入/usr/local/nginx/sbin/
目录执行系列命令重启nginx:
./nginx -s reload
到此为止,你应该可以通过你的IP或者域名访问网站了。