<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
輸入命令換掉Ubuntu的下載源
sudo nano /etc/apt/sources.list
將以下全部替換掉原檔案,我這裡用的是阿里的源,你也可以換其他的。
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted deb http://mirrors.aliyun.com/ubuntu/ bionic universe deb http://mirrors.aliyun.com/ubuntu/ bionic-updates universe deb http://mirrors.aliyun.com/ubuntu/ bionic multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-updates multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted deb http://mirrors.aliyun.com/ubuntu/ bionic-security universe deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu bionic stable
分別輸入以下命令,更新源 sudo apt update sudo apt upgrade
# 安裝python3 sudo apt install python3 # 檢視python安裝路徑: which python # 檢視python版本:建議使用3.6之後的版本,因為其他的筆者沒試過,筆者用的是3.6.9版本 python
# 安裝 openssh-server sudo apt install openssh-server #開啟: sudo service ssh start # 安裝net-tools sudo apt install net-tools # 檢視虛擬機器器ip: ifconfig
如下圖所示,就是我們的虛擬機器器IP
安裝django的執行環境
#安裝django執行環境: sudo apt install virtualenv # 建立環境 virtualenv --python=/usr/bin/python3 myblog # 進入環境: cd myblog # 啟用環境: source bin/activate
安裝django:pip3 install Django
建立專案:django-admin.py startproject blog
啟用並且建立好專案之後就基本和下圖所示差不多了
# 進入到blog中安裝 uwsgi: pip3 install uwsgi
安裝好之後我們再寫一個測試檔案,用來測試我們專案的執行方式,實際專案也是一樣的。這裡我用的是nano編輯寫入方式,你也可以使用vim,方式不限,能建立寫入即可寫入命令為:
sudo nano test.py
需要寫入的檔案內容為:
def application(env,start_response): start_response('200 ok',[('Content-Type','text/html')]) return [b"Hello World"]
測試命令為:uwsgi --http :8000 --wsgi-file test.py
回車之後,我們在瀏覽器輸入ip加port埠號,我的是192.168.217.133:8000。在瀏覽器開啟發現報了以下錯誤。
對於這個錯誤,我們只需要開啟專案檔案的settings.py檔案,在ALLOWED_HOSTS裡面新增自己虛擬機器器的地址,就ok了,然後我們再測試執行,發現正常,網頁輸出hello world。這裡說明uwsgi能夠正常執行測試檔案。
但是我們並不是為了執行test.py檔案,我們是為了執行自己的django專案,這裡我們需要對上一個命令進行修改,改為:uwsgi --http :8000 --module blog.wsgi
為了避免在輸入ip時,不輸入埠號也能正常使用,我們引入輕量級的nginx,這裡我們用命令列安裝並且啟動nginx
安裝:sudo apt install nginx
啟動:sudo service nginx start
輸入命令:sudo nano /etc/nginx/sites-available/blog_nginx.conf
新建一個conf檔案,並且寫入以下內容,將裡面涉及路徑的地方全部改為你自己專案的路徑:
upstream django { # server unix:///home/python/myblog/blog/blog.sock; # 這裡的路徑改為你自己專案路徑 server 127.0.0.1:8001; # for a web port socket (we'll use this first) } server { listen 8000; server_name 192.168.217.133; # 將這裡的ip地址改為你自己的虛擬機器器或者伺服器地址 charset utf-8; client_max_body_size 75M; # adjust to taste location /media { alias /home/python/myblog/blog/media; # your Django project's media files - amend as required } location /static { alias /home/python/myblog/blog/static; # your Django project's static files - amend as required } location / { uwsgi_pass django; include /home/python/myblog/blog/uwsgi_params; # the uwsgi_params file you installed } }
建立好檔案之後,我們需要對該檔案建立一個軟連結,需要輸入以下命令:
sudo ln -s /etc/nginx/sites-available/blog_nginx.conf /etc/nginx/sites-enabled
完成之後我們可以通過ll /etc/nginx/sites-enabled/這個命令來檢視一下,是否設定正確,參考下圖
這裡我們需要建立一個uwsgi_params檔案,建立命令為:sudo nano uwsgi_params
並且將下面內容一字不差的寫入到uwsgi_params檔案中儲存並退出
uwsgi_param QUERY_STRING $query_string; uwsgi_param REQUEST_METHOD $request_method; uwsgi_param CONTENT_TYPE $content_type; uwsgi_param CONTENT_LENGTH $content_length; uwsgi_param REQUEST_URI $request_uri; uwsgi_param PATH_INFO $document_uri; uwsgi_param DOCUMENT_ROOT $document_root; uwsgi_param SERVER_PROTOCOL $server_protocol; uwsgi_param REQUEST_SCHEME $scheme; uwsgi_param HTTPS $https if_not_empty; uwsgi_param REMOTE_ADDR $remote_addr; uwsgi_param REMOTE_PORT $remote_port; uwsgi_param SERVER_PORT $server_port; uwsgi_param SERVER_NAME $server_name;
檔案儲存之後重啟一下nginx即可
開啟django專案的settings.py檔案,新增靜態檔案的路徑,如下圖:
然後儲存退出並複製對映靜態檔案,命令為:python manage.py collectstatic
建立media資料夾:mkdir media
最後輸入命令檢視靜態資料夾是否設定正確:
在uwsgi 中將http通訊改為socket通訊,修改命令為:uwsgi --socket :8001 --wsgi-file test.py
此時進入阻塞,在瀏覽器中輸入IP地址:192.168.217.133:8000,發現可以開啟,顯示hello world成功。說明uesgi和nginx通訊正常
進入nginx組態檔中:sudo nano /etc/nginx/sites-available/blog_nginx.conf
將檔案中下面兩行中的第二行註釋掉,開啟第一行,但是路徑一定要正確,改使用管道通訊
server unix:///home/python/myblog/blog.sock; # for a file socket
# server 127.0.0.1:8001; # for a web port socket (we'll use this first)
儲存退出,重啟nginx:sudo service nginx restart
將uwsgi引數套節字改為blog.sock
uwsgi --socket blog.sock --wsgi-file test.py
回到瀏覽器輸入:192.168.217.133:8000得到502:如圖
我們檢視一下錯誤紀錄檔,發現是因為許可權問題,解決辦法,在命令列後面加入--chmod=666
uwsgi --socket blog.sock --wsgi-file test.py --chmod=666
執行之後發現沒有問題,並且正常顯示Hello World介面。
現在我們執行django專案,命令為:uwsgi --socket blog.sock --module blog.wsgi --chmod=666
重新整理192.168.217.133:8000得到django的基礎頁面。
目前可以說明nginx和uwsgi管道通訊正常。
建立一個uwsgi的組態檔:sudo nano blog_uwsgi.ini
寫入一下內容,將其中的路徑改為自己的專案路徑
# mysite_uwsgi.ini file [uwsgi] # Django-related settings # the base directory (full path) chdir = /home/python/myblog/blog # Django's wsgi file module = blog.wsgi # the virtualenv (full path) home = /home/python/myblog # process-related settings # master master = true # maximum number of worker processes processes = 10 # the socket (use the full path to be safe socket = /home/python/myblog/blog/mysite.sock # ... with appropriate permissions - may be needed chmod-socket = 664 # clear environment on exit vacuum = true # daemonize uwsgi and write messages into given log daemonize = /home/python/myblog/blog/uwsgi.log
儲存退出並且啟動組態檔,命令為:uwsgi --ini blog_uwsgi.ini
我們可以檢視一下後臺程序,是否正常啟動,輸入:ps aux
最後回到nginx組態檔中,將監聽埠改為80,重啟nginx即可。在瀏覽器中輸192.168.217.133得到django頁面結果,表示專案執行正常。
到此這篇關於用nginx+uwsgi部署自己的django專案的文章就介紹到這了,更多相關nginx+uwsgi部署django專案內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45