Python+Django+Nginx+Uwsgi(史上最全步骤)(亲测)
步驟:
Python安裝
第一步安裝Python
(很多購買的服務器linux系統中自帶python2和python3,我是直接使用自帶的python3.5版本的)
如果系統中沒有,則自己安裝,如下:
1.下載
wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0a1.tar.xz
2.解壓
tar xvf Python-3.6.0a1.tar.xz
3.進入目錄,添加配置
進入 Python-3.6.0a1 目錄中:cd Python-3.6.0a1
添加配置:./configure –prefix=/usr/local/python3.6
注意:/usr/local/python3.6 為python的安裝目錄
4.編輯安裝(切換成root用戶執行:sudo -s)
請依次執行以下命令:
make && make install
5.測試
輸入 python3
說明安裝成功
輸入ctrl + d退出
python3源碼編譯自帶pip3
6、如果不是 python3.6版本的,則需要更改下默認連接
linux系統默認指定連接是在 /usr/bin/python
需要將原有的指定連接文件刪掉后重新指定:
cd /usr/bin
rm -rf python
重新指定連接:
ln -s /usr/local/bin/python3.6 /usr/bin/python
7、查看 pip3 是否指定到python3.6中
pip3 -V
若沒有指定需改變默認連接
linux系統默認指定連接是在 /usr/bin/pip3
需要將原有的指定連接文件刪掉后重新指定:
cd /usr/bin
rm -rf pip3
重新指定連接:
ln -s /usr/local/bin/python3.6/bin /usr/bin/pip3
uwsgi安裝
1、安裝
pip3 install uwsgi
2、測試uwsgi
在你的同項目名目錄中寫一個test.py
執行:vim test.py
填寫如下內容:
python2寫法:
# test.py
def application(env, start_response):
? ? start_response('200 OK', [('Content-Type','text/html')])
? ? return "Hello World"
python3寫法:(我用的是這個)
# test.py
def application(env, start_response):
? ? start_response('200 OK', [('Content-Type','text/html')])
? ? return [b"Hello World"]
1
2
3
4
5
6
7
8
9
10
11
3、然后執行shell命令:
uwsgi –http :8001 –wsgi-file test.py
4、訪問網頁:
http://115.159.214.215:8001/
看在網頁上是否有Hello World
注意IP地址寫你自己的主機地址,如在本地請寫127.0.0.1
Django安裝
1、在 ubuntu中安裝 Django
1、首先要先安裝pip3
sudo apt install python3-pip
2、使用pip安裝Django
pip3 install Django==1.8.9
3、輸入命令:python3 -m django –version 來查看Django是否安裝成功
2、在ubuntu中創建一個Django項目
創建Django項目:
django-admin.py startproject 項目名(mysite)
創建項目中的static目錄:
cd mysite
mkdir static
3、啟動Django項目
python3 manage.py runserver 0.0.0.0:8000
選擇一個瀏覽器輸入:http://115.159.214.215:8000/
注意:IP地址換成自己的主機IP
4、創建app(做項目時使用,此時該步驟忽略)
python3 manage.py startapp app名稱
5、models建表命令(做項目時使用,此時該步驟忽略)
python3 manage.py makemigrations
python3 manage.py migrate
6、配置django,請保證你的django程序已經關閉
編寫django_wsgi.py文件,將其放在與文件manage.py同一個目錄下
注意: 編寫文件時需要注意語句os.environ.setdefault。比如,如果你的項目為mysite,則你的語句應該是 os.environ.setdefault(“DJANGO_SETTINGS_MODULE”, “mysite.settings”)
a、進入項目文件夾中:cd mysite
b、編寫django_wsgi.py文件:vim django_wsgi.py
寫入下面內容:
(python2的寫法)
#!/usr/bin/env python
# coding: utf-8
import os
import sys
# 將系統的編碼設置為UTF8
reload(sys)
sys.setdefaultencoding('utf8')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
from django.core.handlers.wsgi import WSGIHandler
application = WSGIHandler()
(python3的寫法)這里我使用的是該寫法,由于用的是python3,所以不需要指定字符集
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
連接django和uwsgi,實現簡單的WEB服務器
我們假設你的Django項目的地址是/home/ubuntu/mysite
然后,進入項目目錄下 cd /home/ubuntu/mysite,就可以執行以下命令:
uwsgi –http :8000 –chdir /home/ubuntu/mysite –module django_wsgi
這樣,你就可以在瀏覽器中訪問你的Django程序了。
選擇一個瀏覽器輸入:http://115.159.214.215:8000/
注意:IP地址換成自己的主機IP
所有的請求都是經過uwsgi傳遞給Django程序的界面展示與django自啟的時候一樣,如下:
Nginx安裝
1、安裝
sudo apt-get install nginx
2、查看nginx版本
-v 顯示 nginx 的版本:nginx -v
-V 顯示 nginx 的版本,編譯器版本和配置參數:nginx -V
3、測試是否已經成功安裝好nginx
a、啟動Nginx
/etc/init.d/nginx start #啟動
/etc/init.d/nginx stop #關閉
/etc/init.d/nginx restart #重啟
b、啟動nginx后,在瀏覽器中訪問自己的主機IP:
http://115.159.214.215/
或者 http://115.159.214.215:80
可看到如下界面表示成功安裝:
實現Nginx與uWSGI的連接
為了實現Nginx與uWSGI的連接,兩者之間將采用soket來通訊方式。
在本節中,我們將使用uWSGI配置文件的方式來改進uWSGI的啟動方式。
假定你的項目目錄是 /home/ubuntu/mysite
我們將要讓Nginx采用8077端口與uWSGI通訊,請確保此端口沒有被其它程序采用。
注意,請確定你在上面步驟中 django_wsgi.py 文件已經存在了。
新建一個XML文件:djangochina_socket.xml
將它放在你的項目目錄下,如:/home/ubuntu/mysite
寫入下面內容:(我將兩段配置都寫入了)
<!-- 若以socket方式訪問 -->
<uwsgi>
? ? <socket>:8077</socket>
? ? <chdir>/home/ubuntu/mysite</chdir>
? ? <module>django_wsgi</module>
? ? <processes>4</processes> <!-- 進程數 -->?
? ? <daemonize>uwsgi.log</daemonize>
</uwsgi>
<!-- 若以http方式訪問 -->
<uwsgi>
? ? <http>:8077</http>
? ? <chdir>/home/ubuntu/mysite</chdir>
? ? <module>django_wsgi</module>
? ? <processes>4</processes> <!-- 進程數 -->
? ? <daemonize>uwsgi.log</daemonize>
</uwsgi>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
在上面的配置中,我們使用 uwsgi.log 來記錄日志,開啟4個進程來處理請求。
這樣,我們就配置好uWSGI了。
配置Nginx
我們假設你將會把Nginx程序日志放到你的目錄 /var/log/nginx 下,請確保該目錄存在。
我們假設你的Django的static目錄是 /home/ubuntu/mysite/static
media目錄是 /home/ubuntu/mysite/media
請確保這些目錄存在。
我們假設你的域名是 www.you.com (在調試時你可以設置成你的機器IP)
我們假設你的域名端口是 80(在調試時你可以設置一些特殊端口如 8070)
基于上面的假設,我們為 /etc/nginx/nginx.conf 添加以下配置:
在http{…}中的最后一行添加:
server {
? ? ? ? listen ? 80;
? ? ? ? server_name 115.159.214.215;
? ? ? ? access_log /var/log/nginx/access.log;
? ? ? ? error_log /var/log/nginx/error.log;
? ? ? ? #charset koi8-r;
? ? ? ? #access_log ?logs/host.access.log ?main;
? ? ? ? location / {
? ? ? ? ?include ? ? ? ? ? ? /etc/nginx/uwsgi_params;
? ? ? ? ?uwsgi_pass ? ? 127.0.0.1:8077;
? ? ? ? }
? ? ? ? #error_page ?404 ? ? ? ? ? ? ?/404.html;
? ? ? ? # redirect server error pages to the static page /50x.html
? ? ? ? #
? ? ? ? error_page ? 500 502 503 504 ?/50x.html;
? ? ? ? location = /50x.html {
? ? ? ? ? ? root ? html;
? ? ? ? }
? ? ? ? location /static/ {
? ? ? ? ? ? alias ?/home/ubuntu/mysite/static/;
? ? ? ? ? ? index ?index.html index.htm;
? ? ? ? }
? ? ? ? location /media/ {
? ? ? ? ? ? alias ?/home/ubuntu/mysite/media/;
? ? ? ? }
? ? location /templates/ {
? ? ? ? ? ? alias ?/home/ubuntu/mysite/templates/;
? ? ? ? }
? ? }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
在上面的設置后,可以讓Nginx來處理靜態文件(/static/ 和 /media/ )。非靜態文件請求Nginx會發給 socket 8077,然后讓uWSGI來進行處理。
Nginx+uWSGI+Django的實現方式
在完成上面配置后,需要按以下步驟來做:
1、重啟Nginx服務器,以使Nginx的配置生效。
nginx -s reload (root權限執行)
重啟后檢查Nginx日志是否有異常。
vim /var/log/nginx/error.log
查看 error.log 文件內容是否有異常信息
2、啟動uWSGI服務器
cd /home/ubuntu/mysite
uwsgi -x djangochina_socket.xml
檢查日志 uwsgi.log 是否有異常發現。
uwsgi.log 日志文件生成在項目目錄下,所以進入項目目錄執行 vim uwsgi.log 查看
3、訪問服務
基于上面的假設你的域名是www.you.com(本節我設置的是IP地址)
因此,我們訪問 www.you.com
我用的IP訪問:http://115.159.214.215:8077/
如果發現程序與 單獨使用Django啟動的程序一模一樣時,就說明成功啦!
4、關閉服務的方法
將uWSGi進程殺死即可。
sudo killall -9 uwsgi
注意:
1、html文件中靜態文件的路徑設置,應設置為能夠通過nginx訪問的地址(巨坑啊,不然會一直加載不了css樣式和js文件)
————————————————
版權聲明:本文為CSDN博主「qq_42314550」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_42314550/article/details/81805328
總結
以上是生活随笔為你收集整理的Python+Django+Nginx+Uwsgi(史上最全步骤)(亲测)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python软件下载网站
- 下一篇: 广州罗浮宫家具城(罗浮宫家具)