天天看點

python django項目部署至linux雲伺服器

   當用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"輸出,若沒有輸出,請檢查你的安裝過程。

python django項目部署至linux雲伺服器

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選項,檢視方法如下圖所示:

python django項目部署至linux雲伺服器

-v 顯示 nginx 的版本。

-V 顯示 nginx 的版本,編譯器版本和配置參數。

有時想知道nigix是否在正常運作,需要用linux指令檢視nginx運作情況。執行指令:

ps -A | grep nginx

如果傳回結果的話,說明有nginx在運作,服務已經啟動。

nginx啟動、停止、無間斷服務重新開機:

service nginx start

service nginx stop

service nginx reload
           

在浏覽器中輸入IP位址:

python django項目部署至linux雲伺服器

出現如下界面則nginx安裝成功!

python django項目部署至linux雲伺服器

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

然後在浏覽器裡通路你的項目位址!