Cent-OS6.8部署Python3.6.8的Django项目

软件版本说明

操做系统:CentOS 6.8 x64html

Python:3.6.8安装目录在/usr/local/python3python

pip:18.1mysql

virtualenv:16.4.0(当前适合该系统的最新版本,当前2019.02.20)nginx

咱们用来存放咱们编写的项目代码的目录:/site/projectc++

咱们用来存放虚拟环境的目录:/site/venvsql

准备基础环境

yum -y install gcc gcc-c++ openssl-devel zlib-devel pcre pcre-devel ncurses-devel

安装nginx、mysql

数据库

安装python3.x

# 下载Python3.6的源码包
wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
# 解压并进入源码目录
tar zxvf Python-3.6.8.tgz
cd Python-3.6.8
# 编译安装
./configure --prefix=/usr/local/python3
make && make install

安装完后的python3的根目录在/usr/local/python3下,咱们能够经过使用软链接的形式让python3和pip3命令直接使用django

ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

检验Python的版本:vim

python -V
python3 -V

虚拟环境

virtualenv

该模块能够用来创建一个独立的虚拟python环境(建立隔离的Python环境)。python3.x

使用pip3安装,默认会安装到当前使用的python的模块目录中。(也能够直接用pip安装,可是Centos6默认环境不带pip,须要自行安装pip):

# 这里临时使用了豆瓣的镜像源
pip3 install virtualenv -i https://pypi.douban.com/simple/

建立软链接(若是使用pip安装的能够不用这一步)

ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv

查看virtualenv版本

virtualenv --version

指定python解释器建立项目虚拟环境,咱们这里使用刚刚安装的python3,假如咱们要建立的虚拟环境叫ss

# 执行完会在当前目录建立一个ss的目录
cd /site/venv
virtualenv -p /usr/bin/python3 ss

执行完上面的命令,将会在当前的目录中建立一个名ss的文件夹,这是一个独立的python运行环境,包含了Python可执行文件, 以及 pip库的一份拷贝,同时已经安装到系统Python环境中的全部第三方包都不会复制过来,这样,咱们就获得了一个不带任何第三方包的“干净”的Python运行环境了。

激活(进入)ss虚拟环境

source ss/bin/activate

退出当前虚拟环境

deactivate

退出虚拟环境后,使用的python相关的命令都是系统默认的命令。退出deactivate前执行的进程,在退出后会继续执行。

<!--### virtualenvwrapper (选用)-->

<!--`virtualenvwrapper` 是一个基于virtualenv之上的工具,它将全部的虚拟环境统一管理。是`virtualenv`的扩展管理包,用于更方便管理虚拟环境,它能够作:-->

<!--1. 将全部虚拟环境整合在一个目录下-->

<!--2. 管理(新增,删除,复制)虚拟环境-->

<!--3. 切换虚拟环境-->

<!--```-->

<!--# 安装-->

<!--pip3 install virtualenvwrapper -i https://pypi.douban.com/simple/-->

<!--```-->

<!--配置`virtualenvwrapper`:-->

<!--打开当前用户的环境变量配置文件(其它系统可能名字略有不一样):-->

<!--```-->

<!--vim ~/.bash_profile-->

<!--```-->

<!--而后在里面添加一下内容:-->

<!--```-->

<!--# 指定虚拟环境保存的目录-->

<!--export WORKON_HOME=$HOME/.virtualenvs-->

<!--# virtualenvwrapper默认安装在python解释器中的site-packages,实际上须要运行virtualenvwrapper.sh文件才行-->

<!--# 每次要想使用virtualenvwrapper 工具时,都必须先激活virtualenvwrapper.sh-->

<!--# 这个路径根据您安装的路径不一样会不同,须要你肯定virtualenvwrapper.sh的真实路径-->

<!--source /usr/local/python3/bin/virtualenvwrapper.sh-->

<!--```-->

<!--让咱们刚刚配置的信息生效-->

<!--```-->

<!--source ~/.bash_profile-->

<!--```-->

上传源码

咱们这里的Django项目叫:ky

其实咱们只须要上传:项目的配置目录以及各应用的目录便可,数据库建议从测试环境导入到线上环境(固然使用数据迁移也能够)

咱们这里为了简单,就全目录上传了

上传步骤:(略)

上传后的项目根目录为:/site/project/ky

上传后须要将项目的配置文件这几个地方修改一下:

DEBUG = False
 
ALLOWED_HOSTS = ['*']

导出本地依赖模块信息并在服务端安装

# 查看测试环境安装的模块信息
pip3 freeze > requirements.txt

# 线上环境:从文件中读取要安装的模块并执行安装
pip3 install -r requirements.txt

安装配置uwsgi,并配置nginx

安装uwsgi(这里只在当前Python中安装了,也能够全局安装)

pip3 install uwsgi

测试uwsgi

定义测试文件test.py,编写内容:

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello World"]

使用uwsgi运行测试文件,执行以下命令:

uwsgi --http :8000 --wsgi-file test.py

尝试您的url可否正常访问:

# example.com换成您的域名或者服务器ip
http://example.com:8000

配置nginx虚拟机

打开配置文件

vim /usr/local/nginx/conf/nginx.conf

配置虚拟机

server {
        listen       80;
        server_name  localhost;
        
        location / {
            include  uwsgi_params;
            uwsgi_pass 127.0.0.1:8000;
        }
    }

而后重启nginx:/usr/local/nginx/sbin/nginx -s reload

配置uwsgi

在项目的根目录(/site/project/ky)建立配置文件:uwsgi.ini,而后在里面添加以下内容:

[uwsgi]
#项目的根目录
chdir = /site/project/ky
#项目的对接wsgi.pi文件
#module = ky.wsgi
module = ky.wsgi:application
#项目执行的变口号,和nginx配置的要一致
socket = 127.0.0.1:8000
#是否以主进程模式容许
master = true
#开启的工做进程数量
processes=4   
#日志文件路径,前提是该文件要存在,且可写
daemonize = /site/project/ky/run.log
#表示不记录正常信息,只记录错误信息,不然你的日志可能很快就爆满
disable-logging = true
#当服务器退出的时候自动清理环境
vacuum = true
#进程信息文件路径(这里指项目的根目录)
pidfile=%(chdir)/uwsgi.pid

配完就能够运行起uwsgi了:

uwsgi --ini uwsgi.ini

# 关闭uwsgi
uwsgi --stop ./uwsgi.pid
# 重启
uwsgi --reload ./uwsgi.pid

而后访问咱们的网站就能够了,不过以上配置虽然能够,可是咱们其实并不须要使用django本身来处理静态文件,其实咱们彻底可让nginx为咱们处理,效率更高。下面咱们针对网站的静态资源进行配置。

若是使用Nginx处理静态资源,咱们最好使用统一目录管理咱们的Django静态资源。

修改nginx配置

# 其实就是让静态资源的请求在nginx层面就被响应了

# 在Nginx配置中增长一段配置就能够了(这个静态文件的路径根据各个项目可能有所不一样)
location /static {
    alias /site/project/ky/static;
}
相关文章
相关标签/搜索