操做系统:CentOS 6.8 x64
html
Python:3.6.8
(安装目录在/usr/local/python3
)python
pip:18.1
mysql
virtualenv:16.4.0
(当前适合该系统的最新版本,当前2019.02.20)nginx
咱们用来存放咱们编写的项目代码的目录:/site/project
c++
咱们用来存放虚拟环境的目录:/site/venv
sql
yum -y install gcc gcc-c++ openssl-devel zlib-devel pcre pcre-devel ncurses-devel
略数据库
# 下载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
该模块能够用来创建一个独立的虚拟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
pip3 install 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
打开配置文件
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
在项目的根目录(/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; }