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;
}
相關文章
相關標籤/搜索