ubuntu+nginx+uwsgi部署django web項目


前言

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

服務器配置virtualenv

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

pip install virtualenv
pip install virtualenvwrapper

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

在 ~下創建.bash_profile,添加如下內容:

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

然后運行命令:

source ~/.bash_profile

配置完成。使用如下命令:

mkvirtualenv its_name # 創建virtual env
workon its_name # 切換到某個env下(如果不指定its_name)則是列出所有已有env
deactive # 退出當前env
rmvirtualenv its_name # 刪除某個virtual env

安裝依賴包

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

pip freeze > plist.txt

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

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

django項目的修改

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

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

配置uwsgi

安裝:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM