1. 程式人生 > >白手起家Django項目發布下篇_Django項目nginx部署

白手起家Django項目發布下篇_Django項目nginx部署

pes httpd ror 編譯 war daemon djang 序列 jpeg

上一篇完成了python的安裝,接下來安裝python的依賴包和項目的依賴包

1、 python-devel

命令:yum -y install python-devel

技術分享圖片

安裝Django1.8.2 pillow django-ckeditor5.4.0

pip3 install django==1.8.2

技術分享圖片

pip3 install pillow

技術分享圖片

pip3 install django-ckeditor==5.4.0

技術分享圖片

python uwsgi

上面我們已經完成了python+Django環境的部署,接下來我們需要了解python 的uwsgi框架。接下來我們需要了解python 的uwsgi模塊。

Python manager.py runserver, 這是一款適合開發階段使用的服務器,只支持最高200的並發,顯然不適合在生產中使用。我們在生產環境當中,通常會用到apache或者nginx服務器作為Django的生產服務器。今天我們以nginx為例子。但是在學習部署之前,我們首先要掌握在Django和nginx之間的一個程序,就是wsgi,web服務器網關接口,英文叫, Web Server Gateway Interface 縮寫叫WSGI,是Python應用程序或框架和web服務器之間的一種接口。

我們今天部署用的是uwsgi模塊,首先安裝

pip3 install uwsgi

技術分享圖片

然後配置環境變量

命令:ln /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

技術分享圖片

Django和WSGI的結合

我們把我們準備好的Django項目存放到/opt/下

[root@localhost bin]# cp -r /root/Desktop/OurBlog/ /opt/

[root@localhost bin]#

技術分享圖片

然後嘗試使用uwsgi啟動Django項目

在這裏我們要關註到之前大家一直忽視的一個文件了

技術分享圖片

這個就是我們項目的uwsgi文件

uwsgi --http 192.168.1.69:8000 --file OurBlog/wsgi.py --static-map=/static=static

技術分享圖片

當然,這裏我們要配置seLinux,防火墻和Django的settings

關閉selinux

命令: setenforce 0

關閉防火墻

命令:systemctl stop firewalld.service

Settings配置

ED_HOSTS = ["*"] 允許所有訪問

然後發起訪問

技術分享圖片

django+nginx+uwsgi

上面我們用命令啟動了uwsgi,但是體驗不太好,所以我們在這裏使用ini文件啟動uwsgi服務器

在項目同等級目錄下創建script目錄

技術分享圖片

然後在當中編寫uwsgi.ini文件,內容如下

[uwsgi]

chdir=/opt/OurBlog #項目目錄

module=OurBlog.wsgi:application #指定項目的application

socket=/opt/script/uwsgi.sock #指定sock的文件路徑

workers=5 #進程個數

pidfile=/opt/script/uwsgi.pid

http=192.168.2.69:8000 #指定IP端口

static-map=/static=/opt/OurBlog/static #指定靜態文件

uid=root #用戶

gid=root #組

master=true #啟用主進程

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

enable-threads=true #啟用線程

thunder-lock=true #序列化接受的內容,如果可能的話

harakiri=30 #設置自中斷時間

post-buffering=4096 #設置緩沖

daemonize=/opt/script/uwsgi.log #設置日誌目錄

然後啟動uwsgi服務

Uwsgi --ini uwsgi.ini(腳本名稱)

技術分享圖片

然後可以正常訪問

技術分享圖片

安裝nginx服務器

我們直接安裝nginx是沒有的,所以,需要我們wget

命令:wget -c https://nginx.org/download/nginx-1.12.2.tar.gz

技術分享圖片

解壓

命令:tar -zxvf nginx-1.12.2.tar.gz && cd nginx-1.12.2

技術分享圖片

自定義配置

命令:./configure \

技術分享圖片

編譯安裝

命令:make && make install

技術分享圖片

技術分享圖片

然後配置環境變量

命令:ln sbin/nginx /usr/bin/nginx

技術分享圖片

啟動nginx查看效果

技術分享圖片

技術分享圖片

進行nginx配置,(配置nginx.conf,配置之前進行備份)

備份

技術分享圖片

然後開始配置

配置節選1

http {

include mime.types;

default_type application/octet-stream;

#這裏規定了日誌的格式,默認是註釋的,我們需要解開註釋

log_format main ‘$remote_addr - $remote_user [$time_local] "$request" ‘

‘$status $body_bytes_sent "$http_referer" ‘

‘"$http_user_agent" "$http_x_forwarded_for"‘;

#access_log logs/access.log main;

sendfile on;

#tcp_nopush on;

#keepalive_timeout 0;

keepalive_timeout 65;

#gzip on;

server {

技術分享圖片

配置節選2

server {

listen 80; #監聽端口

server_name OurBlog; #服務名稱

charset utf-8; #服務器編碼

access_log /var/log/nginx/access.log main; #訪問日誌路徑,註意:這個目錄可能沒有,需要創建

gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json image/jpeg image/gif image/png application/octet-stream; #壓縮格式

error_log /var/log/nginx/error.log error; #錯誤日誌註意:這個目錄可能沒有,需要創建

location / {

include uwsgi_params; #nginx加載uwsgi模塊

uwsgi_connect_timeout 30; #連鍵超時時間

uwsgi_pass unix:/opt/script/uwsgi.sock; #nginx對應的uwsgi socket文件

}

location = /static/ {

alias /opt/OurBlog/static; #靜態文件路徑

index index.html index.htm; #首頁

}

}

技術分享圖片

效果如下:

技術分享圖片

白手起家Django項目發布下篇_Django項目nginx部署