Diango + uwsgi + nginx項(xiàng)目部署的全過(guò)程(可外網(wǎng)訪問(wèn))
前言
自己通過(guò)nginx uwsgi 部署django項(xiàng)目,查詢了很多資料,遇到了很多問(wèn)題,最終完成了部署,趁著心情愉悅,寫個(gè)隨筆,為曾像我一樣苦尋解決方案的小伙伴們提供些思路。
方法如下
安裝Nginx:
#安裝nginx sudo apt-get install nginx #一些有用的命令 #啟動(dòng)nginx sudo /etc/init.d/nginx start #重啟nginx 8sudo /etc/init.d/nginx restart #停止nginx sudo /etc/init.d/nginx stop #很暴力的方法,我喜歡 sudo killall nginx
安裝uwsgi:
pip install uwsgi #注意uwsgi需要在虛擬環(huán)境中運(yùn)行
配置uwsgi:
#在項(xiàng)目目錄中建立個(gè)conf文件夾,將nginx和uwsgi文件都放進(jìn)去,不是必須#但是個(gè)好習(xí)慣 #my_uwsgi.ini ite_uwsgi.ini file [uwsgi] # Django-related settings # the base directory (full path) chdir = /to/your/project/#這個(gè)是項(xiàng)目的路徑 # Django's wsgi file module = project.wsgi#這個(gè)project要換成自己的項(xiàng)目名,也就是uwsgi.py所在的文件夾名 # the virtualenv (full path) home = /home/ubuntu/.virtualenvs/虛擬環(huán)境名#這個(gè)就是虛擬環(huán)境的路徑 # process-related settings # master master = true # maximum number of worker processes processes = 10 # the socket (use the full path to be safe socket = 127.0.0.1:8080#這個(gè)用來(lái)和Nginx對(duì)接,端口號(hào)可以改,本人項(xiàng)目將uwsgi作為本地服務(wù),外網(wǎng)不能直接訪問(wèn),用nginx作為代理,所以用本地的地址。 # ... with appropriate permissions - may be needed # chmod-socket = 664 # clear environment on exit vacuum = true ~
配置nginx
#以下內(nèi)容在mysite_nginx.conf中,這個(gè)文件名也可以隨意起 # mysite_nginx.conf # the upstream component nginx needs to connect to upstream django { # server unix:///path/to/your/mysite/mysite.sock; # for a file socket server 127.0.0.1:8080; #這個(gè)是用來(lái)跟uwsgi對(duì)接的,要和my_uwsgi.ini中寫一致 } # configuration of the server server { # the port your site will be served on listen 8000;#這個(gè)端口是nginx用來(lái)監(jiān)聽uwsgi的,默認(rèn)的是80,總之項(xiàng)目是通過(guò)下面的server_name:8000來(lái)訪問(wèn)的 # the domain name it will serve for server_name xxx.xxx.xx.xx ; #這個(gè)ip就是服務(wù)器的ip charset utf-8; # max upload size client_max_body_size 75M; # adjust to taste # Django media location /media { alias /your/project/media; #這個(gè)目錄是項(xiàng)目的meda目錄 } location /static { alias /your/project/static; # 這個(gè)目錄是項(xiàng)目的static目錄 } # Finally, send all non-media requests to the Django server. location / { uwsgi_pass django;#這個(gè)是對(duì)接uwsgi的 include uwsgi_params; # 這個(gè)參數(shù)按我這樣寫nginx就能找到的 } }
將nginx配置文件鏈接到啟動(dòng)配置目錄:
#注意修改下面的路徑及文件名,哈哈不要只復(fù)制粘貼啊 sudo ln -s ~/path/to/your/mysite/mysite_nginx.conf /etc/nginx/sites-enabled/
修改django項(xiàng)目中的setting.py文件,添加
#要將STATICFILES_DIRS =[os.path.join(BASE_DIR, 'static')]注釋掉,Debug在生產(chǎn)模式也要改成False STATIC_ROOT = os.path.join(BASE_DIR, "static/")
將靜態(tài)文件打包,讓nginx代理:
python manage.py collectstatic
啟動(dòng)nginx,uwsgi
sudo /etc/init.d/nginx restart #進(jìn)入conf文件夾,或者說(shuō)配置的uwsgi.ini文件所在目錄 #uwsgi.ini改成自己的名字 uwsgi -i uwsgi.ini
訪問(wèn):
ip:port(端口為nginx.conf中配置的)
總結(jié):
寫到這也差不多了,項(xiàng)目可以跑起來(lái)了,nginx,uwsgi高級(jí)配置還在學(xué)習(xí)中,希望本文對(duì)你有所幫助,謝謝。
最后再提醒下,網(wǎng)上有很多配置文件的模板,將我寫注釋的地方對(duì)比修改下,別遺漏。
好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
參考文檔:https://uwsgi.readthedocs.io/en/latest/tutorials/Django_and_nginx.html
http://uwsgi-docs.readthedocs.io/en/latest/Nginx.html
- 關(guān)于nginx+uWsgi配置遇到的問(wèn)題的解決
- 解決nginx+uwsgi部署Django的所有問(wèn)題(小結(jié))
- 詳解使用Nginx和uWSGI配置Python的web項(xiàng)目的方法
- Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
- 使用Nginx+uWsgi實(shí)現(xiàn)Python的Django框架站點(diǎn)動(dòng)靜分離
- 在Linux系統(tǒng)上通過(guò)uWSGI配置Nginx+Python環(huán)境的教程
- 利用Python腳本在Nginx和uwsgi上部署MoinMoin的教程
相關(guān)文章
使用PyCharm在Github上保存代碼并在服務(wù)器上運(yùn)行方式
這篇文章主要介紹了使用PyCharm在Github上保存代碼并在服務(wù)器上運(yùn)行方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02python 匿名函數(shù)與三元運(yùn)算學(xué)習(xí)筆記
這篇文章主要介紹了python 匿名函數(shù)與三元運(yùn)算的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)python 編程,感興趣的朋友可以了解下2020-10-10Pytorch中Tensor與各種圖像格式的相互轉(zhuǎn)化詳解
這篇文章主要介紹了Pytorch中Tensor與各種圖像格式的相互轉(zhuǎn)化詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12細(xì)數(shù)nn.BCELoss與nn.CrossEntropyLoss的區(qū)別
今天小編就為大家整理了一篇細(xì)數(shù)nn.BCELoss與nn.CrossEntropyLoss的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-0210個(gè)python3常用排序算法詳細(xì)說(shuō)明與實(shí)例(快速排序,冒泡排序,桶排序,基數(shù)排序,堆排序,希爾排序,歸并排序,計(jì)數(shù)排
這篇文章主要介紹了10個(gè)python3常用排序算法詳細(xì)說(shuō)明與實(shí)例,需要的朋友可以參考下2020-03-03python開發(fā)之str.format()用法實(shí)例分析
這篇文章主要介紹了python開發(fā)之str.format()用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了str.format()函數(shù)的功能,使用方法與相關(guān)注意事項(xiàng),代碼包含詳盡的注釋說(shuō)明,需要的朋友可以參考下2016-02-02Python數(shù)據(jù)分析之pandas函數(shù)詳解
這篇文章主要介紹了Python數(shù)據(jù)分析之pandas函數(shù)詳解,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的pandas函數(shù)的小伙伴們有很好地幫助,需要的朋友可以參考下2021-04-04利用pyproj將經(jīng)緯度投影為平面坐標(biāo)以及地理坐標(biāo)系背景知識(shí)解讀
這篇文章主要介紹了利用pyproj將經(jīng)緯度投影為平面坐標(biāo)以及地理坐標(biāo)系背景知識(shí)解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06