Ubuntu系統(tǒng)搭建django+nginx+uwsgi的教程詳解
1. 在開發(fā)機上的準備工作
1.確認項目沒有bug。
2.用pip freeze > requirements.txt將當前環(huán)境的包導出到requirements.txt文件中,方便在部署的時候安裝。
3.將項目上傳到服務器上的/srv目錄下。這里以git的形式為例,打開終端,依次輸入如下命令 •git init
•git remote add origin xxx.git
•git add .
•git commit -m 'first commit'
•git pull origin master --allow-unrelated-histories
•git push origin master
2. 在服務器上的準備工作
1.安裝好項目用到的Python。
•sudo apt install python
•sudo apt install python-pip
•pip install --upgrade pip
2.安裝virtualenv以及virutalenvwrapper,并創(chuàng)建虛擬環(huán)境。
•pip install virtualenv
•pip install virtualenvwrapper
•sudo apt install vim
•vim ~/.bashrc 進入文件中,填入以下兩行代碼:
export WORKON_HOME=$HOME/.virtualenvs source /usr/local/bin/virtualenvwrapper.sh
•source ~/.bashrc
3.安裝git:
sudo apt install git
4.為了方便XShell或者CRT連接服務器,建議安裝OpenSSH:
sudo apt install openssh-server openssh-client service ssh restart
5.安裝MySQL服務器和客戶端:
sudo apt install mysql-server mysql-client sudo apt-get install libmysqld-dev
6.進入虛擬環(huán)境中,然后進入到項目所在目錄,執(zhí)行命令:pip install -r requirements.txt
,安裝好相應的包。
7.在mysql數據庫中,創(chuàng)建相應的數據庫。
8.執(zhí)行python manage.py migrate
命令,將遷移文件,映射到數據庫中,創(chuàng)建相應的表。
9.執(zhí)行python manage.py runserver 0.0.0.0:8000
,然后在你自己電腦上,在瀏覽器中輸入http://你的服務器的ip地址:8000/,訪問下網站所有頁 面,確保所有頁面都沒有錯誤。
10.設置ALLOW_HOST為你的域名,以及ip地址。
11.設置DEBUG=False,避免如果你的網站產生錯誤,而將錯誤信息暴漏給用戶。
12.收集靜態(tài)文件:python manage.py collectstatic。
3.安裝uwsgi
1.uwsgi是一個應用服務器,非靜態(tài)文件的網絡請求就必須通過他完成,他也可以充當靜態(tài)文件服務器,但不是他的強項。uwsgi是使用python編寫的,因此通過pip install uwsgi就可以了。(uwsgi必須安裝在系統(tǒng)級別的Python環(huán)境中,不要安裝到虛擬環(huán)境中)。
2.使用命令uwsgi --http :8000 --module test.wsgi --vritualenv=/root/.virtualenvs/django-env-py36
。用uwsgi啟動項目,如果能夠在瀏覽器中訪問到這個頁面,說明uwsgi可以加載項目了。
4.編寫uwsgi配置文件,使用配置文件啟動uwsgi
在項目的路徑下面,創(chuàng)建一個文件叫做djangotest.ini的文件,然后填寫以下代碼:
[uwsgi] # Django相關的配置 # 必須全部為絕對路徑 # 項目的路徑 chdir=/srv/djangotest # Django的wsgi文件 module=djangotest.wsgi # Python虛擬環(huán)境的路徑 home=/root/.virtualenvs/django-env-py36 # 進程相關的設置 # 主進程 master=true # 最大數量的工作進程 processes=10 # socket文件路徑,絕對路徑 socket=/srv/djangotest/djangotest.sock # 設置socket的權限 chmod-socket=666 # 退出的時候是否清理環(huán)境 vacuum=true
然后使用命令uwsgi --ini djangotest.ini
,看下是否還能啟動這個項目。
5. 安裝nginx
1.nginx是一個web服務器。用來加載靜態(tài)文件和接收http請求的。通過命令sudo apt install nginx即可安裝。
2.nginx常用命令:
•啟動nginx:service nginx start
•關閉nginx:service nginx stop
•重啟nginx:service nginx restart
6. 收集靜態(tài)文件
靜態(tài)文件應該讓nginx來服務,而不是讓django來做。首先確保你的settings.py文件中有一個STATIC_ROOT配置,這個配置應該指定你的靜態(tài)文件要放在哪個目錄下。那么我們可以執(zhí)行以下命令:python manage.py collectstatic來收集所有靜態(tài)文件,將這些靜態(tài)文件放在指定的目錄下。
7. 編寫nginx配置文件:
在/etc/nginx/conf.d目錄下,新建一個文件,叫做djangotest.conf,然后將以下代碼粘貼進去:
upstream djangotest { server unix:///srv/djangotest/djangotest.sock; } # 配置服務器 server { # 監(jiān)聽的端口號 listen 80; # 域名 server_name 192.168.0.101; charset utf-8; # 最大的文件上傳尺寸 client_max_body_size 75M; # 靜態(tài)文件訪問的url location /static { # 靜態(tài)文件地址 alias /srv/djangotest/static_dist; } # 最后,發(fā)送所有非靜態(tài)文件請求到django服務器 location / { uwsgi_pass djangotest; # uwsgi_params文件地址 include /etc/nginx/uwsgi_params; } }
寫完配置文件后,為了測試配置文件是否設置成功,運行命令:service nginx configtest,如果不報錯,說明成功。每次修改完了配置文件,都要記得運行service nginx restart。
8. 使用supervisor配置
讓supervisor管理uwsgi,可以在uwsgi發(fā)生意外的情況下,會自動的重啟。
1.supervisor的安裝:在系統(tǒng)級別的python環(huán)境下pip install supervisor
。
2.在項目的根目錄下創(chuàng)建一個文件叫做my_supervisor.conf。內容如下:
# supervisor的程序名字 [program:mysite] # supervisor執(zhí)行的命令 command=uwsgi --ini zlkt_uwsgi.ini # 項目的目錄 directory = /srv/djangotest # 開始的時候等待多少秒 startsecs=0 # 停止的時候等待多少秒 stopwaitsecs=0 # 自動開始 autostart=true # 程序掛了后自動重啟 autorestart=true # 輸出的log文件 stdout_logfile=/srv/djangotest/log/supervisord.log # 輸出的錯誤文件 stderr_logfile=/srv/djangotest/log/supervisord.err [supervisord] # log的級別 loglevel=info # 使用supervisorctl的配置 [supervisorctl] # 使用supervisorctl登錄的地址和端口號 serverurl = http://127.0.0.1:9001 # 登錄supervisorctl的用戶名和密碼 username = admin password = 123 [inet_http_server] # supervisor的服務器 port = :9001 # 用戶名和密碼 username = admin password = 123 [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
然后使用命令supervisord -c my_supervisor.conf
運行就可以了。 以后如果想要啟動uwsgi,就可以通過命令supervisorctl -c my_supervisor.conf
進入到管理控制臺,然后可以執(zhí)行相關的命令進行管理:
# 查看狀態(tài) status # 啟動程序 start program_name # 重新啟動程序 restart program_name # 關閉程序 stop program_name # 重新加載配置文件 reload # 退出控制臺 quit
總結
以上所述是小編給大家介紹的Ubuntu系統(tǒng)搭建django+nginx+uwsgi的教程詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!
相關文章
用vi命令刪除日志中的所有內容并對日志進行實時監(jiān)控
2008-01-01解決Linux中ROOT用戶刪除普通用戶報普通用戶已登錄問題
今天在Linux某普通用戶上配置系統(tǒng),因為文件誤刪,我想刪除系統(tǒng)安裝文件,重新解壓安裝,但是考慮到該系統(tǒng)生成的配置文件可能會對后來的某些功能造成影響,因此便想刪除該普通用戶,在操作過程中遇到了好多問題,下面小編給大家分享問題描述及解決辦法,一起看看吧2017-03-03分布式監(jiān)控系統(tǒng)Zabbix3.2添加自動發(fā)現磁盤IO并注冊監(jiān)控(推薦)
zabbix自帶的“Template OS Linux”模板可自動發(fā)現磁盤并監(jiān)控空間利用率,小編這次介紹分布式監(jiān)控系統(tǒng)Zabbix3.2添加自動發(fā)現磁盤IO并注冊監(jiān)控,需要的朋友參考下吧2018-01-01