第四百零二節,Django+Xadmin打造上線標準的在線教育平臺—生產環境部署,uwsgi安裝和啓動,nginx的安裝與啓動,uwsgi與nginx的配置文件+虛擬主機配置

第四百零二節,Django+Xadmin打造上線標準的在線教育平臺—生產環境部署,uwsgi安裝和啓動,nginx的安裝與啓動,uwsgi與nginx的配置文件+虛擬主機配置css

 

軟件版本 python

uwsgi-2.0.15
nginx-1.12.1mysql

 

1.用Navicat Premium遠程登陸Linux系統數據庫,建立網站須要的數據庫nginx

 

2.數據庫建立好後,將開發環境的數據庫傳輸到剛纔建立的數據庫sql

傳輸數據數據庫

 

若是在傳輸數據時,怎麼都傳輸不了,老報錯誤,有多是傳輸數據太大,要在軟件設置一下,改一個變量,將參數調大apache

 

 

3.數據庫數據傳輸好後,Linux系統的opt目錄建立Python虛擬環境,通常虛擬環境建立在opt目錄否則會有權限問題django

將開發環境裏的整個Django項目,上傳到Linux系統裏準備好的python虛擬環境裏的網站安裝目錄裏,vim

在虛擬環境裏建立一個網站目錄,目錄裏包含兩個文件夾,一個是Django項目,一個是建立來專門放配置文件的目錄centos

上傳好項目後,檢查Django項目裏的settings.py配置文件,配置數據庫相關信息連接剛纔導入的數據庫,檢查用戶名密碼是否正確,鏈接數據庫的用戶名,必須有操做當前網站數據庫的權限,和當前用戶能夠任意ip訪問數據庫權限,詳情見第三百九十九節的16小節說明

#MySQL數據庫
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',       # 配置數據庫引擎名稱
        'NAME': 'jxiou2',                         # 數據庫名稱
        'USER': 'test_user',                             # 數據庫用戶名
        'PASSWORD': 'test_user',                       # 數據庫密碼
        'HOST': '127.0.0.1',                        # 數據庫連接地址
        'PORT': '3306',                             # 數據庫端口
    }
}

修改後保存

 

 

4.測試Django項目項目是否可以運行

執行命令進入虛擬環境

[root@192 ~]# workon jxiou2
(jxiou) [root@192 ~]# 

在虛擬環境裏cd到Django根項目

[root@192 ~]# workon jxiou2
(jxiou) [root@192 ~]# cd /opt/xu_ni_huan_jing/jxiou2/jxiou/MxOnline    進入django根目錄
(jxiou) [root@192 MxOnline]# dir                    查看根目錄下的文件
apps  extra_apps  manage.py  media  MxOnline  __pycache__  static  system  templates
(jxiou) [root@192 MxOnline]# 

執行命令,從manage.py啓動Django項目

(jxiou) [root@192 MxOnline]# python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).

You have 1 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): reversion.
Run 'python manage.py migrate' to apply them.

October 07, 2017 - 01:07:13
Django version 1.10, using settings 'MxOnline.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

能夠看到項目已經啓動,能夠訪問http://127.0.0.1:8000/

以上測試Django項目能夠遠行,這只是測試一下,正真的生產中不是從manage.py啓動Django項目,而是用uwsgi模塊來啓動,因此以上只是爲uwsgi作準備,至此在終端按ctrl+c鍵中止Django項目

 

 

【主題開始】

uwsgi+nginx+虛擬環境

uwsgi+nginx部署原理圖

 5.在虛擬環境安裝uwsgi

  uwsgi是Python寫的一個模塊,能啓動Django項目,它的角色就是處理網站的動態請求

  uWSGI的主要特色以下:

  ◆超快的性能。

  ◆低內存佔用(實測爲apache2的mod_wsgi的一半左右)。

  ◆多app管理。

  ◆詳盡的日誌功能(能夠用來分析app性能和瓶頸)。

  ◆高度可定製(內存大小限制,服務必定次數後重啓等)。

安裝

(jxiou) [root@192 MxOnline]# pip install uwsgi

 

 

6.安裝好uwsgi後,測試uwsgi啓動Django項目

首先cd 進入到Django項目裏,在此目錄下執行命令

uwsgi --http 127.0.0.1:8000 --module MxOnline.wsgi(wsgi.py路徑--static-map=/static=static(靜態文件路徑)

(jxiou) [root@192 MxOnline]# uwsgi --http 127.0.0.1:8000 --module MxOnline.wsgi --static-map=/static=static

此時瀏覽器訪問

http://127.0.0.1:8000/

此時能夠看到uwsgi能夠啓動Django項目了,咱們按ctrl+c關閉退出

uwsgi經常使用命令

ps -ef|grep -i uwsgi     查看uwsgi啓動進程

pkill -9 nginx               殺掉uwsgi啓動進程

uwsgi                           啓動uwsgi

 

 

7.使用配置文件啓動uWSGI [ini]

網站安裝目錄裏與Django項目同級咱們建立了一個pzhi文件夾,就是專門用來放配置文件的

pzhi文件夾建立 網站名稱_uwsgi.ini文件,來寫uWSGI的配置文件

建立 jxiou_uwsgi.ini 文件

# uwsgi.ini
[uwsgi]

# 指定Django項目的根目錄
chdir           = /opt/xu_ni_huan_jing/jxiou2/jxiou/MxOnline/

# 指定Django項目裏的wsgi.py文件路徑,上面已經指定了根目錄,這裏拼接根目錄便可
module          = MxOnline.wsgi

# 啓用主進程
master          = true

# 設置啓動進程最大數
processes       = 10

# 設置監聽端口
socket          = 127.0.0.1:8000

# 自動移除unix Socket和pid文件當服務中止的時候
vacuum          = true

# 設置python虛擬環境
virtualenv = /opt/xu_ni_huan_jing/jxiou2/

# 設置uwsgi日誌保存路徑,通常設置到當前配置文件所在目錄
logto = /opt/xu_ni_huan_jing/jxiou2/jxiou/pzhi/uwsgi.log

 

建立好uWSGI的配置文件後,cd 進入到當前 jxiou_uwsgi.ini 配置文件目錄,執行啓動uwsgi命令

(jxiou) [root@192 pzhi]# uwsgi --ini jxiou_uwsgi.ini &         啓動uwsgi配置文件
[uWSGI] getting INI configuration from jxiou_uwsgi.ini
(jxiou) [root@192 pzhi]# ps -ef|grep -i uwsgi          查看uwsgi啓動進程
root     43159     1  1 03:50 ?        00:00:01 uwsgi --ini jxiou_uwsgi.ini
root     43164 43159  0 03:50 ?        00:00:00 uwsgi --ini jxiou_uwsgi.ini
root     43165 43159  0 03:50 ?        00:00:00 uwsgi --ini jxiou_uwsgi.ini
root     43166 43159  0 03:50 ?        00:00:00 uwsgi --ini jxiou_uwsgi.ini
root     43167 43159  0 03:50 ?        00:00:00 uwsgi --ini jxiou_uwsgi.ini
root     43168 43159  0 03:50 ?        00:00:00 uwsgi --ini jxiou_uwsgi.ini
root     43185 14898  0 03:51 pts/1    00:00:00 grep -i uwsgi
(jxiou) [root@192 pzhi]# 

 

 

8.安裝Nginx

在系統/etc/yum.repos.d/目錄配置Nginx的安裝源,

建立nginx.repo文件

vim /etc/yum.repos.d/nginx.repo

[nginx]
name=nginx repo
# 下面這行centos根據你本身的操做系統修改好比:OS/rehel
# 6是你Linux系統的版本,能夠經過URL查看路徑是否正確
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1

能夠訪問一下http://nginx.org/packages/centos  安裝源是否存在

 

9.配置好Nginx安裝源後,執行命令安裝Nginx

(jxiou) [root@192 pzhi]# yum -y install nginx

 

Nginx安裝好後,Nginx的啓動文件在 /usr/sbin/nginx    執行此文件便可啓動Nginx

 

/etc/nginx/conf.d   這個目錄爲Nginx配置文件啓動目錄,當Nginx啓動時會自動啓動目錄裏的conf文件

 

注意:設置配置文件時,在系統建立文件將代碼複製到文件裏,不可在系統外導入配置文件

 

網站安裝目錄裏與Django項目同級咱們建立了一個pzhi文件夾,就是專門用來放配置文件的

安裝好nginx後pzhi文件夾建立 網站名稱_nginx.conf文件,來寫nginxI的配置文件

建立 jxiou_nginx.conf 文件

# nginx配置文件
upstream django {
    # 設置動態請求轉發端口,要與uwsgi配置文件的socket監聽端口一致
    server 127.0.0.1:8000;
}

server {
    # 設置監聽端口
    listen      80;

    # 設置網站訪問ip或者域名,域名要解析好
    server_name 192.168.158.132 ;

    # 設置編碼
    charset     utf-8;

    # 設置網站最大上傳限制
    client_max_body_size 75M;

    # 設置Django的media用戶上傳文件目錄
    location /media  {
        alias /opt/xu_ni_huan_jing/jxiou2/jxiou/MxOnline/media/;
    }

    # 設置Django的static靜態文件目錄如js、css文件目錄
    location /static {
        alias /opt/xu_ni_huan_jing/jxiou2/jxiou/MxOnline/static/;
    }

    # 設置動態請求轉發給uwsgi
    location / {
        # 動態請求時,執行upstream django的配置轉發
        uwsgi_pass  django;
        # 經過nginx啓動目錄 /etc/nginx/uwsgi_params 的uwsgi_params模塊文件,與uwsgi交互
        include     uwsgi_params; # the uwsgi_params file you installed
    }
    
    # 指定日誌存放路徑,通常指定到網站配置文件目錄
    access_log  /opt/xu_ni_huan_jing/jxiou2/jxiou/pzhi/nginx.log  main;
}

 

nginxI的配置文件寫好後,將配置文件軟鏈接到 /etc/nginx/conf.d 目錄,也就是nginxI的啓動目錄

sudo ln -s /opt/xu_ni_huan_jing/jxiou2/jxiou/pzhi/jxiou_nginx.conf /etc/nginx/conf.d/

 

軟鏈接建立好後,啓動nginx

/usr/sbin/nginx             啓動nginx

ps -ef|grep -i nginx     查看nginx啓動進程

pkill -9 nginx                殺死nginx啓動進程

 

補充內容防盜鏈配置

 

Nginx防盜鏈配置
有些時候,你們不想讓別人調用本身的圖片,一是由於我的版權的問題,再一點就是會增長服務器的負載、還會產生一些不必的流量。

其實在Nginx裏面,很容易就作到防盜鏈的,在nginx.conf文件加入一個localtion配置項。

下面請看配置:

location ~ .*\.(jpg|jpeg|JPG|png|gif|icon)$ {
        valid_referers blocked www.qixing318.com qixing318.com;
        if ($invalid_referer) {
            return 404;
        }
}
gif|jpg|jpeg|….,這些是你想要屏蔽的文件類型,能夠根據狀況修改。

只須要把文中 www.qixing318.com qixing318.com 修改成你容許顯示你網站圖片的其餘網站域名,注意中間用空格分開,而不是逗號。

這樣直接返回的是404頁面。也能夠用http://domain.com/404.jpg,顯示給盜鏈者看到的圖片,注意不要放到本身的域名上,由於放盜鏈的做用,那樣對方是看不到的,能夠上傳到一些支持外聯的網絡相冊上。

固然了,也能夠設置某個目錄防盜鏈,只需把localtion匹配的改爲一個目錄就能夠了,好比:

location ~ ^/images/ {
    valid_referers none blocked www.qixing318.com qixing318.com;
    if ($invalid_referer) {
        return 404;
    }
    #rewrite ^/ http://otherdomin.com/404.jpg;
}

 

啓動nginx後訪問nginx配置文件裏設置的訪問域名或者ip

 

 

固然此時網站能夠啓動了,可是後臺和網站的一些樣式和靜態文件沒法訪問

因此,咱們須要拉取全部靜態文件到static目錄

在django的setting文件中,添加下面一行內容:

 

STATIC_URL = '/static/'    # 設置靜態文件前綴名稱
# 配置靜態文件目錄 #STATICFILES_DIRS = [ # os.path.join(BASE_DIR, 'static'), # 設置靜態文件路徑 #]
# 配置靜態文件訪問路徑
STATIC_ROOT = os.path.join(BASE_DIR, 'static')   

 


運行命令,拉取文件

cd 進入到網站項目根目錄

python manage.py collectstatic

 此時網站部署完成

 

注意:設置配置文件時,在系統建立文件將代碼複製到文件裏,不可在系統外導入配置文件

此時部署完成,網站配置文件夾裏會有以下文件

 

 

往後操做管理

中止網站服務

首先進入虛擬環境

1.pkill -9 uwsgi             殺死uwsgi進程

2.ps -ef|grep -i uwsgi       查看進程狀況

3.pkill -9 nginx             殺死nginx進程

4.ps -ef|grep -i nginx       查看進程狀況

 

啓動網站服務

首先進入虛擬環境

cd進入到uwsgi的配置文件目錄

1.uwsgi -i jxiou_uwsgi.ini &    啓動uwsgi

2.ps -ef|grep -i uwsgi       查看進程狀況

3./usr/sbin/nginx         啓動nginx

4.ps -ef|grep -i nginx       查看進程狀況

 

 

最後別忘了關閉Django調試模式

就是在settings.py文件關閉調試模式,關閉後配置的404才能起做用,不至於大黃頁

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False                                # 將調試模式關閉,關閉後訪問頁面出錯不會顯示錯誤(大黃頁)
ALLOWED_HOSTS = ['*']                        # 當關閉調試模式時,必須設置容許訪問的ip,*表明全部以訪問
相關文章
相關標籤/搜索