ubuntu+nginx+uwsgi部署django web項目

前言

將本地開發的django項目部署至linux上的uwsgi服務器,並配置nginx,完成基於ubuntu+nginx+uwsgi的上線運行。下面整理相關步驟。python

服務器配置virtualenv

若是不想直接用python環境運行,則須要在服務器上安裝並配置virtual env。若是直接用python環境,則可跳過這一步。linux

pip install virtualenv
pip install virtualenvwrapper

須要配置環境變量,以能使用相關命令:nginx

在 ~下建立.bash_profile,添加以下內容:web

export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/workspace
source /usr/local/bin/virtualenvwrapper.sh

而後運行命令:django

source ~/.bash_profile

配置完成。使用以下命令:ubuntu

mkvirtualenv its_name # 建立virtual env
workon its_name # 切換到某個env下(若是不指定its_name)則是列出全部已有env
deactive # 退出當前env
rmvirtualenv its_name # 刪除某個virtual env

安裝依賴包

首先在開發本地,須要導出pip依賴包列表。bash

pip freeze > plist.txt

將此文件放至服務器環境,並批量安裝依賴。服務器

workon [虛擬環境名稱]
pip install -r plist.txt -i https://pypi.douban.com/simple
# 注,這裏使用豆瓣源安裝,在國內下載速度比pip官方源快不少

django項目的修改

須要修改settings.py文件,關閉debug模式。app

DEBUG = False
ALLOW_HOSTS=['*',] #表示能夠訪問服務器的ip

配置uwsgi

安裝:socket

pip install uwsgi

須要在django項目根目錄(與manage.py同級目錄)下,新建一個uwsgi.ini文件,寫入相關配置:

[uwsgi]
socket=外網ip:端口(使用nginx鏈接時,使用socket)
http=外網ip:端口(直接作web服務器,使用http)
chdir=項目根目錄
wsgi-file=項目中wsgi.py文件的目錄,相對於項目根目錄
processes=4
threads=2
master=True
pidfile=uwsgi.pid
daemonize=uswgi.log

能夠啓動uwsgi啦:

啓動:uwsgi --ini uwsgi.ini
中止:uwsgi --stop uwsgi.pid
重啓:uwsgi --reload uwsgi.pid

配置nginx

須要預先安裝nginx:

apt install nginx

對nginx進行配置:

cd /etc/nginx/sites-available
cp default default.bak
vi default

可進行以下配置:

server{
        # 根據自身須要使用80或443
    listen 443;
    server_name search.codingcat.cn;
    
        # 能夠配置域名ssl證書
    ssl on;
    ssl_certificate /etc/nginx/ssl/search.codingcat.cn.crt;
    ssl_certificate_key /etc/nginx/ssl/search.codingcat.cn.key;

    location / {
        uwsgi_pass 127.0.0.1:8888;
        include uwsgi_params;
    }
    
    # 由於uwsgi下,靜態目錄沒法訪問,因此使用nginx來處理靜態請求
    # 這裏是直接將static路徑請求賺到了項目的static下
    location /static {
        root /home/ubuntu/pythonweb/wesearch/;
    }
}

備註:若是使用了django自帶admin後臺,admin的靜態目錄也沒法訪問,可依此方法配置/ static/admin 到django源碼中的admin靜態目錄下,或者將admin目錄拷貝到本身項目的static目錄下。

啓動nginx:

service nginx start
service nginx stop
service nginx restart
相關文章
相關標籤/搜索