將本地開發的django項目部署至linux上的uwsgi服務器,並配置nginx,完成基於ubuntu+nginx+uwsgi的上線運行。下面整理相關步驟。python
若是不想直接用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官方源快不少
須要修改settings.py文件,關閉debug模式。app
DEBUG = False ALLOW_HOSTS=['*',] #表示能夠訪問服務器的ip
安裝: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:
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