sudo apt-get install nginx
若是不能使用apt-get html
sudo apt-get update(更新源)
ubantu安裝完Nginx後,文件結構大體爲:
全部的配置文件都在 /etc/nginx下;
啓動程序文件在 /usr/sbin/nginx下;
日誌文件在 /var/log/nginx/下,分別是access.log和error.log;
而且在 /etc/init.d下建立了啓動腳本nginx。前端
sudo /etc/init.d/nginx start # 啓動 sudo /etc/init.d/nginx stop # 中止 sudo /etc/init.d/nginx restart # 重啓
使用瀏覽器訪問 localhost 出現界面 (局域網經過地址輸入ip地址,如:http://192.168.1.90/ )python
sudo apt-get install python3-dev sudo pip3 install uwsgi
注意:nginx
若是未安裝python3 ,web
使用:sudo apt-get install python3.6
shell
若是pip3 提示:django
wuchao@ubuntu:~$ pip3 install uwsig
Command 'pip3' not found, but can be installed with:
sudo apt install python3-pip
解決方案使用: sudo apt install python3-pipubuntu
至於爲何要使用uwsgi,能夠參見這邊博客:快速部署Python應用:Nginx+uWSGI配置詳解(1)。
這樣大致的流程是:nginx做爲服務器最前端,負責接收client的全部請求,統一管理。靜態請求由Nginx本身處理。非靜態請求經過uwsgi傳遞給Django,由Django來進行處理,從而完成一次WEB請求。
通訊原理是:
the web client <-> the web server(nginx) <-> the socket <-> uwsgi <-> Django
the web client <-> the web server(nginx) <-> the socket <-> uwsgi <-> Django
在Django項目下新建test.py文件,瀏覽器
# test.py def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) #return ["Hello World"] # python2 return [b"Hello World"] # python3
而後執行shell命令:bash
uwsgi --http-socket :8001 --plugin python --wsgi-file test.py
注意:若是uwsgi提示無命令 ,使用pip3 uninstall uwsgi 卸載 ,再使用 pip3 install uwsgi 從新安裝
加上--plugin python3是告訴uWSGI在使用python插件,否則頗有可能會出現相似這樣的錯誤:
uwsgi: unrecognized option '--wsgi-file' getopt_long() error
執行成功在瀏覽器中打開:http://localhost:8001顯示Hello World說明uwsgi正常運行。
首先得保證Django項目沒有問題
sudo apt install python-django #安裝django django-admin startproject blog #建立blog項目 cd blog #進入項目 python3 manage.py runserver 0.0.0.0:8001 #運行django項目
若是不能使用django-admin startproject blog 時,建立軟鏈接:sudo ln -s /usr/python3/bin/django-admin.py /usr/bin/django-admin
瀏覽器訪問:localhost:8001
而後連接Django和uwsgi,實現簡單的web服務器,到Django項目目錄下執行shell:
uwsgi --http localhost:8001 --plugin python3 --module blog(項目名).wsgi
blog爲你的項目名。訪問http://localhost:8001,項目正常。注意這時項目的靜態文件是不會被加載的,須要用nginx作靜態文件代理。
uwsgi支持經過配置文件的方式啓動,能夠接受更多的參數,高度可定製。咱們在Django項目目錄下新建uwsgi.ini
在django項目project目錄下(manage.py下)建立配置文件分兩種 ini
# myweb_uwsgi.ini file [uwsgi] # 指定IP端口 socket = :8080 # 項目目錄 chdir = /home/ubuntu/xiangmu # 指定項目的 wsgi 文件 module = xiangmu.wsgi # process-related settings # 啓用主進程 master = true # maximum number of worker processes processes = 4 # ... with appropriate permissions - may be needed chmod-socket = 664 # clear environment on exit vacuum = true # pidfile for record run pid pidfile =pid.uwsgi # 設置日誌目錄 daemonize = UWSGI.log
在shell中執行:
sudo uwsgi --ini uwsgi.ini
ps:若是實在不想配置nginx的話,單uwsgi就已經能完成部署了(把socket換成http),你能夠把Django中的靜態文件放到雲平臺中如七牛等等,這樣你的Web也能被正常訪問。
nginx默認會讀取/etc/nginx/sites-enabled/default
文件中的配置,修改其配置以下:追加內容以下
注意:若是文件爲只讀 使用chmod修改權限: sudo chmod 777 /etc/nginx/sites-enabled/default
server { # 你的網站將會監聽的端口號,若是監聽80端口,部署後訪問localhost自動跳轉到nginx默認的歡迎界面 listen 80; # 綁定的域名 server_name 10.32.170.124; # substitute your machine's IP address or FQDN charset utf-8; # 最大上傳速率 client_max_body_size 75M; # adjust to taste # Django media(設置成本身的路徑) location /media { alias /home/ubuntu/xiangmu/media; # 您的Django項目的媒體文件——根據須要進行修改 } #Django 靜態文件路徑(設置成本身的路徑) location /static { alias /home/ubuntu/xiangmu/static; # 您的Django項目的靜態文件——根據須要進行修改 } # 最後,將全部非媒體請求發送到Django服務器 location / { include /etc/nginx/uwsgi_params; # the uwsgi_params file you installed uwsgi_pass 127.0.0.1:8080; } }
重啓nginx
sudo /etc/init.d/nginx restart
注意:重啓失敗則配置文件修改錯誤
修改項目中setting.py 配置文件28行:
ALLOWED_HOSTS = ['*']
經過本地ip地址訪問。如:10.32.170.124/index