Django項目在linux系統中虛擬環境部署

1.在linux系統下,安裝virtualenvhtml

命令:pip install virtualenvpython

2.項目部署前的準備mysql

 

 

1. Django web project deployment

1.1. 項目準備

準備打包好項目組開發的web項目,經過FTP上傳到指定的linux/unix服務器linux

案例項目:mysite/nginx

1.2. 生產環境準備

Django生產環境服務器,常規狀況下使用Linux/Unix平臺做爲服務器平臺,須要準備以下運行環境web

l 環境:python2.x / python3.xsql

l 軟件:mysql-server、mysql-client數據庫

l 模塊:pymysql、pillow、django、uwsgidjango

1.3. 項目部署【UWSGI部署】



在指定的文件夾中上傳項目文件flask

使用FTP鏈接linux系統,通常狀況下建議使用非root帳號和密碼進行鏈接。

上傳文件以前可使用pip freeze  > 文件名,在原來的項目環境中進入項目蒐集第三方模塊,並保存在自定義文件中,將該文件建立於項目內部,一塊兒上傳如linux系統。

(1) 在生產環境打開mysql-client命令行,執行項目sql腳本語句,初始化數據庫

(2) 在項目根目錄中,添加uwsgi.ini配置文件,添加以下內容

[uwsgi]

# 指定服務器部署IP地址和端口

http=192.168.10.120:8000

# 配置項目在當前服務器中的絕對路徑

chdir=/home/worker/django_pro_1_11/mysite

# 相對路徑指定當前項目中wsgi.py

wsgi-file=mysite/wsgi.py

# 設置啓動的進程數量

processes=4

# 設置每一個進程啓動的線程數量

threads=2

# 設置主進程

master=True

# 指定保存主進程編號的文件

pidfile=uwsgi.pid

# 指定守護進程的日誌存儲

daemonize=uwsgi.log

 

(3) 項目運行

啓動項目,當前路徑中,直接運行命令啓動項目

uwsgi --ini uwsgi.ini

 

中止項目,經過包含主進程編號的文件設置中止項目

uwsgi --stop uwsgi.pid

 

重啓項目

uwsgi --reload uwsgi.pid

 

1.4. 項目部署【UWSGI + NGINX】

經過UWSGI服務器部署Django項目,經過nginx進行反向代理

(1) 項目根目錄建立uwsgi.ini配置文件

[uwsgi]

# 配置和nginx反向代理之間的鏈接地址

socket=localhost:8000

# 配置項目根路徑

chdir=/home/worker/django_pro_1_11/mysite

# 相對路徑指定當前項目中wsgi.py

wsgi-file=mysite/wsgi.py

# 設置啓動的進程數量

processes=4

# 設置每一個進程啓動的線程數量

threads=2

# 設置主進程

master=True

# 指定保存主進程編號的文件

pidfile=uwsgi.pid

# 指定守護進程的日誌存儲

daemonize=uwsgi.log

 

(2) 編輯nginx.conf配置文件,設置反向代理

nginx和uwsgi進行配合使用時,nginx主要有兩個做用,使用nginx做爲靜態文件服務器和反向代理服務器

l 設置靜態文件

打開django項目的配置文件,添加STATIC_ROOT配置

編輯mysite/mysite/settings.py

..

STATIC_ROOT=/home/worker/django_pro_1_11/myweb/static_file/

..

 

進入Django項目根目錄執行命令收集靜態文件

>>> python manage.py collectstatic

 

l 反向代理配置

編輯/etc/nginx/nginx.conf配置文件,編輯server配置選項

核心配置反向代理server服務器和靜態文件別名

..

events {

       ...

}

..

http {

        ..

        server {

            listen 80;

            server_name 192.168.10.120;

            # 反向代理配置

            location / {

                include uwsgi_params;

                uwsgi_pass 127.0.0.1:8000;

            }

            # 靜態文件路徑配置

            location /static {

                alias /home/worker/django_pro_1_11/myweb/static_file/;

            }

        }

        ..

}

 

(3) 啓動項目進行測試

l 首先進入項目目錄,啓動Django項目

>>> uwsgi --ini uwsgi.ini

 

l 啓動nginx服務器

>>> nginx

 

l 檢查進程啓動狀況

>>> ps -ef|grep wsgi

..

>>> ps -ef|grep nginx

..

 

l 測試訪問項目

TEST

1.5. 項目分佈式部署【UWSGI + NGINX】

使用UWSGI配置Django項目的多進程部署,使用nginx進行靜態文件的部署和負載均衡的配置

(1) 在多臺主機上部署多個相同的django項目【同一臺主機上部署多個項目進行模擬】

設置兩個或者多個Django項目的啓動配置信息以下

mysite/uwsgi.ini

[uwsgi]

# 配置項目訪問地址

http=localhost:8000

# 配置項目根路徑

chdir=/home/worker/django_pro_1_11/mysite

# 相對路徑指定當前項目中wsgi.py

wsgi-file=mysite/wsgi.py

# 設置啓動的進程數量

processes=4

# 設置每一個進程啓動的線程數量

threads=2

# 設置主進程

master=True

# 指定保存主進程編號的文件

pidfile=uwsgi.pid

# 指定守護進程的日誌存儲

daemonize=uwsgi.log

 

mysite2/uwsgi.ini

[uwsgi]

# 配置項目訪問地址

http=localhost:9000

# 配置項目根路徑

chdir=/home/worker/django_pro_1_11/mysite2

# 相對路徑指定當前項目中wsgi.py

wsgi-file=mysite/wsgi.py

# 設置啓動的進程數量

processes=4

# 設置每一個進程啓動的線程數量

threads=2

# 設置主進程

master=True

# 指定保存主進程編號的文件

pidfile=uwsgi.pid

# 指定守護進程的日誌存儲

daemonize=uwsgi.log

 

(2) 配置nginx靜態服務器映射和負載均衡

.. ..

# 使用默認的輪詢分發配置多個分佈的服務主機

upstream myweb {

            server 127.0.0.1:8000;

            server 127.0.0.1:9000;

        }

        server {

            listen 80;

            server_name 192.168.10.120;

            # 配置分佈式負載轉發

            location / {

                proxy_pass http://myweb;

            }

            # 配置靜態文件服務器

            location /static {

                alias /home/worker/django_pro_1_11/myweb/static_file/;

            }

        .. ..

 

(3) 測試訪問項目

TEST

2. Tornado web project deployment

2.1. 項目準備

參考Django 1.1部分

2.2. 項目常規部署【使用自帶服務器直接操做】

直接經過配置文件或者命令行指定端口運行程序,就可使用torando自帶的web服務器啓動web項目並提供正常的web服務了

 

可是這樣的操做方式並非可取的,命令行須要處理讓啓動的程序後臺運行,而且若是部署多進程項目的話,多個進程之間沒有進行統一管理的操做,很不方便後期的維護操做

 

直接運行【阻塞方式】

>>> python demo.py --port=8000

 

後臺運行【非阻塞方式】

>>> python demo.py --port=8000 &

 

2.3. supervisor管理進程

針對tornado多進程部署方式,第三方提供了各類進程管理模塊用於進行tornado項目多個進程的維護管理,項目中經常使用的如supervisor、circus等等

 

(1) ubuntu中安裝supervisor

$ sudo apt-get install supervisor

備註:可使用pip install supervisor安裝

 

安裝完成後,生成supervisor配置文件

$ cd /etc/supervisor

$ echo_supervisord_conf > supervisord.conf

 

修改配置文件/etc/supervisor/supervisord.conf

..

[include]

files=./conf.d/*.conf

 

(2) 添加tornado管理配置文件/etc/supervisor/conf.d/tornadoes.conf

[group:td]

programs=tornado-8000, tornado-8001

[program:tornado-8000]

command=/home/worker/tornado_web/tornado_lib/bin/python /home/worker/tornado_web/web1/demo01.py --port=8000

directory=/home/worker/tornado_web/web1

user=www-data

autorestart=true

redirect_stderr=true

stdout_logfile=/home/worker/tornado_web/web1/log/tornado.log

loglevel=debug

[program:tornado-8001]

command=/home/worker/tornado_web/tornado_lib/bin/python /home/worker/tornado_web/web1/demo01.py --port=8001

directory=/home/worker/tornado_web/web1

user=www-data

autorestart=true

redirect_stderr=true

stdout_logfile=/home/worker/tornado_web/web1/log/tornado.log

loglevel=info

 

(3) 進程管理

啓動進程管理器

$ supervisord -c supervisord.conf

 

進程管理器包含進程狀態管理

supervisorctl status   # 查看管理的全部進程的狀態

supervisorctl update   # 從新啓動配置文件修改的程序

supervisorctl stop td:* # 中止全部進程[能夠指定進程]

supervisorctl start td:* # 啓用全部進程[能夠指定進程]

supervisorctl restart td:* # 重啓全部進程進程[能夠指定進程]

 

2.4. supervisor+nginx分佈式部署

參考Django項目部署1.5章節nginx部署部分

3. Flask web project deployment

模仿Django和Tornado的項目部署方式

 

參考

http://docs.jinkan.org/docs/flask/deploying/index.html#deployment

 

 

 

 

3.在指定的文件夾中上傳項目文件

使用FTP鏈接linux系統,通常狀況下建議使用非root帳號和密碼進行鏈接。

上傳文件以前可使用pip freeze  > 文件名,在原來的項目環境中進入項目蒐集第三方模塊,並保存在自定義文件中,將該文件建立於項目內部,一塊兒上傳如linux系統。

相關文章
相關標籤/搜索