當用python 完成Django web項目在本地開發後,這僅能自己浏覽,需要将代碼放到伺服器上,這樣使用者才能通路,下文将詳細介紹Django項目如何部署到linux伺服器。
1.伺服器環境介紹
- 作業系統:CentOS7
- Python版本: 2.7.5
- Nginx主配置檔案位置:/etc/nginx/nginx.conf
2.安裝基礎開發包
Centos 下安裝步驟如下:
-
yum groupinstall "Development tools" -y
-
yum install zlib-devel bzip2-devel pcre-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel -y
3.安裝Python包管理工具
easy_install包連結: https://pypi.python.org/pypi/distribute
安裝步驟:
cd ~
yum install wget -y
wget https://pypi.python.org/packages/source/d/distribute/distribute-0.6.49.tar.gz
ls
tar xf distribute-0.6.49.tar.gz
cd distribute-0.6.49
python setup.py install
CentOS7:
python2.7 setup.py install
CentOS6:
python2.7 setup.py install
測試是否安裝成功:
easy_install --version
4.安裝 uwsgi
sudo yum install python-devel -y
1、安裝wget,gcc-c++ gcc*:
yum install -y wget gcc-c++ epel-release -y
2、安裝pip
yum install python-pip -y
3、更新pip
pip install --upgrade pip
4、Uwsgi安裝
pip install uwsgi
Successfully installed uwsgi-2.0.17.1
5、檢視 uwsgi 版本
uwsgi --version
CentOS 7.0使用的是firewall作為防火牆,預設防火牆是打開的
檢視防火牆狀态:
firewall-cmd --state
停止firewall:
systemctl stop firewalld.service
禁止firewall開機啟動:
systemctl disable firewalld.service
uwsgi:
https://pypi.python.org/pypi/uWSGI
uwsgi 參數詳解:
http://uwsgi-docs.readthedocs.org/en/latest/Options.html
測試 uwsgi 是否正常:
建立 test.py 檔案,内容如下:
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return "Hello World"
然後在終端運作:
uwsgi --http :8001 --wsgi-file test.py
在浏覽器内輸入:
http://伺服器IP位址:8001
檢視是否有"Hello World"輸出,若沒有輸出,請檢查你的安裝過程。
5.Django 安裝
Django 版本對應的Python 版本:
Django 版本 | Python 版本 |
---|---|
1.8 | 2.7, 3.2 , 3.3, 3.4, 3.5 |
1.9, 1.10 | 2.7, 3.4, 3.5 |
1.11 | 2.7, 3.4, 3.5, 3.6 |
2.0 | 3.5+ |
1、Django安裝
pip install django==1.8
2、Python版本檢視:
方式一:pip list
方式二:python
import django
print(django.get_version())
3、測試django:
cd ~
django-admin.py startproject mysite
cd mysite
進入項目檔案夾
/data/wwwroot/mysite
,添加static和templates,分别用于存放靜态檔案和模闆檔案。
django-admin.py startapp blog
允許所有主機通路
增加應用
python manage.py runserver 0.0.0.0:8002
(注意0.0.0.0這個IP位址)
在浏覽器内輸入:http://127.0.0.1:8002,檢查django是否運作正常。
6.安裝Nginx
yum install nginx -y
Nginx主配置檔案:
/etc/nginx/nginx.conf
看伺服器上安裝的nginx版本号,主要是通過ngix的-v或-V選項,檢視方法如下圖所示:
-v 顯示 nginx 的版本。
-V 顯示 nginx 的版本,編譯器版本和配置參數。
有時想知道nigix是否在正常運作,需要用linux指令檢視nginx運作情況。執行指令:
ps -A | grep nginx
如果傳回結果的話,說明有nginx在運作,服務已經啟動。
nginx啟動、停止、無間斷服務重新開機:
service nginx start
service nginx stop
service nginx reload
在浏覽器中輸入IP位址:
出現如下界面則nginx安裝成功!
7.uwsgi 配置
Django正常運作之後我們就開始配置一下uwsgi。
我們網站項目路徑是
/data/wwwroot/mysite/
,在項目根目錄下建立
mysite.xml
檔案,輸入如下内容:
<uwsgi>
<socket>127.0.0.1:8997</socket><!-- 内部端口,自定義 -->
<chdir>/data/wwwroot/mysite/</chdir><!-- 項目路徑 -->
<module>mysite.wsgi</module>
<processes>4</processes> <!-- 程序數 -->
<daemonize>uwsgi.log</daemonize><!-- 日志檔案 -->
</uwsgi>
并儲存
配置檔案裡的mysite這是我們的項目名。
8.配置nginx.conf檔案
首先切換到nginx的配置檔案所在路徑:
cd /etc/nginx
備份一下nginx.conf檔案,以防意外,
cp nginx.conf nginx.conf.bak
然後打開nginx.conf,把原來的内容删除,
rm -rf nginx.conf
直接加入以下内容:(nginx.conf)
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
server {
listen 80;
server_name www.django.cn;
charset utf-8;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8997;
uwsgi_param UWSGI_SCRIPT mysite.wsgi;
uwsgi_param UWSGI_CHDIR /data/wwwroot/mysite; #項目路徑
}
location /static/ {
alias /data/wwwroot/mysite/static/; #靜态資源路徑
}
}
}
注意該配置檔案中的路徑要和mysite.xml項目路徑對應上。
執行以下指令先檢查配置檔案是否有錯
nginx -t
,沒有錯就執行以下指令:
nginx
終端沒有任何提示就證明nginx啟動成功。可以使用你的伺服器位址檢視,成功之後就會看到一個nginx歡迎頁面。
9.通路項目的頁面
進入網站項目目錄:
cd /data/wwwroot/mysite/
執行下面指令:
uwsgi -x mysite.xml
以上步驟都沒有出錯的話,執行以下指令重新開機nginx 。
nginx -s reload
然後在浏覽器裡通路你的項目位址!