Python-django-uwsgi-nginx環境

Ubuntu 環境搭建:


1.python 部分

linux 系統會自帶python,通常不須要特定安裝python. 查看版本html

python -V

修改默認版本 [即修改python的link位置]python

ln -snf /usr/bin/python3.6 /usr/bin/python

ln -s [源文件] [連接文件]linux

2.Uwsgi Django 部分

準備python-dev[或者 python-devel]nginx

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python-dev
sudo apt-get install gcc
sudo apt-get install puthon-pip  #pip python軟件管理工具

訪問pip
報錯 關於 /usr/bin/pip mian
執行pip更新web

easy_install --upgrade pip

查看pip 版本django

pip -V

安裝Uwsgi Djangovim

pip install uwsgi
pip install Django==2.1.1 #2.1.1爲版本號 請到官網獲取最新

3.Django 項目建立 及 Uwsgi 與Python 鏈接測試

Uwsgi 與Python 鏈接測試服務器

cd /var/www
#新建一個test.py
vim test.py
#內容以下 

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello World"]

#開啓uwsgi  http服務
uwsgi --http :8000 --wsgi-file test.py # 2)
#訪問 127.0.0.1:8000 是否輸出helloworld; 
#未輸出,請檢查test.py的return helloworld 與python版本是否一致
#沒法訪問 請檢查防火牆及端口占用

如HelloWorld正常輸出 說明 uwsgi與python鏈接無缺。多線程

Django 項目建立及配置app

#進入項目目錄
cd /var/www
#projectName 爲項目名 請自定義
django-admin startproject projectName 
#進入projectName目錄
cd  projectName 
#1.修改setting.py  讓項目容許的host爲所有
vim projectName/setting.py
ALLOWED_HOSTS = ["*"]
#2.在項目目錄下,建立 靜態文件目錄 及視頻圖片目錄
sudo mkdir static_common
sudo mkdir media_common
#配置設置到setting.py文件尾部
vim projectName/setting.py
STATIC_ROOT = os.path.join(BASE_DIR, 'static_common')
MEDIA_ROOT = os.path.join(BASE_DIR, 'media_common')
#進入項目根目錄,執行靜態文件遷移命令
python manage.py collectstatic
#提示輸入選項時選yes便可

4.Nginx 安裝 及 nginx 與 uwsgi 鏈接 配置

nginx 安裝

sudo apt-get install nginx
#安裝完畢,訪問127.0.0.1 或者ip地址,查看nginx是否成功。

nginx與django配置

#進入項目目錄
cd /var/www/projectName
#將/etc/nginx/目錄下的uwsgi_params複製到項目文件夾,對此文件不作任何改動
cp /etc/nginx/uwsgi_params ./
#在項目根目錄建立文件my_nginx.conf(nginx配置),my_uwsgi.ini(uwsgi配置),並寫入如下內容【注意不一樣項目請區別名稱】
touch my_nginx.conf #以下
touch my_uwsgi.ini #以下
#與Nginx配置目錄創建軟連接
sudo ln -s /var/www/projectName/my_nginx.conf /etc/nginx/sites-enabled/ #[必須使用絕對路徑,不然nginx 啓動報錯]

my_nginx.conf 內容

upstream django {
    # server    127.0.0.1:8001;#【使用socket 請開打此項 配合 uwsgi socket使用 1)】
    server      unix:///var/www/projectName/mySock.sock;#【使用 UNIX socket 3)】
}

server {
    listen      80;  # 【端口號】
    server_name myweb.com;  # 【服務器 ip 或是域名】
    charset     utf-8;  # 字符集

    # 最大上傳限制
    # client_max_body_size 75M;

    location /media  {
        alias /var/www/projectName/media_common;  # 【媒體文件所在文件夾】
    }

    location /static {
        alias /var/www/projectName/static_common;  # 【靜態文件所在文件夾】
    }


    # 將全部非媒體請求轉到Django服務器上
    location / {
        uwsgi_pass      django;  # 最上方已定義
        # 將全部參數都轉到uwsgi下
        include         /var/www/projectName/uwsgi_params; # 【uwsgi_params的路徑】
    }
}

這個配置文件表示將靜態文件和媒體文件由Nginx處理,而其它的請求轉入uWSGI處理

my_uwsgi.ini 內容

[uwsgi]
# 使用nginx鏈接時使用 1)
# socket = 0:8001

# 直接作web服務器使用 【命令行直接調用 2)】
# http = 0:8080

# 【項目目錄】
chdir = /var/www/projectName 

# 【項目中wsgi.py文件的目錄】
wsgi-file = /var/www/projectName/projectName/wsgi.py

# 主進程
master = true

# 多進程&多線程
processes = 6
threads = 2

# 【.sock文件目錄需與Nginx文件內的配置相同】
socket = /var/www/projectName/my_sock.sock # 3)
chmod-socket = 666

# 以守護進程的方式啓動
vacuum = true

# 存儲pid進程
pidfile=uwsgi.pid

# 存儲log日誌
daemonize=uwsgi.log

重啓Nginx和uWSGI

sudo service nginx restart #重啓nginx
cd /var/www/projectName
uwsgi --stop uwsgi.pid #關閉原有的 uwsgi
uwsig --ini my_uwsgi.ini #使用項目的配置文件 已後臺方式啓動 uwsgi

訪問 myweb.com 完成環境搭建

設置開機自啓動
將各項目的uwsgi配置到開機自啓內便可

uwsgi --ini /var/www/projectName/my_uwsig.ini

新增項目 注意事項

  1. django-admin startproject 【項目名不要重複】
  2. 修改項目setting.py。
  3. 設置靜態目錄 執行靜態文件遷移命令
  4. 添加nginx配置文件 uwsgi配置文件 【不一樣項目請不要重名】【變動對應內容】
  5. 建立nginx.conf的軟鏈接
相關文章
相關標籤/搜索