django項目上線環境部署


django項目上線環境部署

第一步 安裝python虛擬環境

1 安裝虛擬環境virtualenv

2 安裝virtualenvwrapper工具

3 確認virtualenvwrapper.sh腳本正常使用

4 確認用戶環境變量配置文件,有virtualenvwrapper.sh的四行配置

WORKON_HOME=~/Envs
VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'
VIRTUALENVWRAPPER_PYTHON=/opt/python3.7/bin/python3
source /opt/python3.7/bin/virtualenvwrapper.sh

5 創建路飛學城專用虛擬環境ldjango_env

mkvirtualenv  django

6 上傳requirements.txt

使用lrzsz直接從windows下托過去

7 安裝路飛學城項目所需要的所有模塊(這需要將windows虛擬環境中的安裝包導入到文件中>pip freeze >requirements.txt

pip3 install -r requirements.txt

第二步 配置mysql數據庫

1導出數據庫

有兩種方法
第一種:
mysqldump -u root -p --all-databases >  luffy_city.sql
第二種:
直接從navicat導出數據庫的數據
   (1) 先從navicat導出數據庫數據,導出為luffycity.sql
   (2) 將luffycity.sql上傳到服務器的/opt目錄下
   (3) 在服務器上進入mysql,然后創建數據庫luffycity
   (4) 進入數據庫luffycity
   (5) 使用命令source luffycity.sql導入luffycity.sql數據
   (6) 使用show tables命令查看數據是否成功導入

2登錄linux數據庫

mysql -uroot -p

3 刷新授權表

# 允許root用戶遠程登錄,並且給予所有數據庫所有表的所有權限
grant all privileges on *.* to root@'%' identified by 'nihao123';
flush privileges;

4將上傳這個項目數據文件到Linux數據庫中

(1) 進入mysql
	mysql -u root -p
(2) 進入數據庫
	use luffycity
(3) 導入數據
	source /opt/luffycity.sql
注意1,linux的數據庫,需要對root用戶設置遠程鏈接的權限,
注意2,SELinux和linux的防火牆要給關閉,否則windows去鏈接linux的3306端口可能被拒絕
注意3: 第4步一定要確認OK之后才能繼續往下操作

第三步 測試linux的python解釋器去運行項目 切換到項目中運行(注意要解決解釋器模塊問題,才能正常運行項目)

1先修改項目中的配置文件使得其對應的數據庫和授權用戶一致

ALLOW_HOSTS=["*"]
數據庫連接配置
注意: mariadb就是mysql,這里的ENGINE不用修改
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        "HOST": "127.0.0.1",
        "PORT": 3306,
        "USER": "root",
        "PASSWORD": "nihao123",
        "NAME": "luffycity",
    }
}

2使用命令把django跑起來

python3 manage.py runserver 0.0.0.0:8000

第四步 完成uWSGI自動啟動django項目(uWSGI支持多進程)

1安裝uwsgi

(1) 進入django_env虛擬環境
	workon   django_env
(2) 安裝uwsgi
    pip3 install uwsgi

2 uwsgi 啟動測試文件

(1) 創建一個testqishi2.py
(2) 寫入以下幾行代碼
def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello World"] # python3
(3) 通過uwsgi命令將測試文件跑起來
uwsgi --http :9000 --wsgi-file testqishi2.py
(4) 測試通過IP+端口訪問
http://192.168.12.56:9000

3 uwsgi 啟動django項目

uwsgi --http :9000 --module  django.wsgi

4uwsgi熱加載啟動()

uwsgi --http :9000 --module django.wsgi --py-autoreload=1

5使用uwsgi配置文件啟動django項目

(1) 創建一個配置文件uwsgi.ini(注意,這個配置文件不管放在哪里都可以,但是啟動的時候,需要找到這個配置文件)
(2) 寫入以下配置
[uwsgi]

chdir           = /opt/luffy_city/luffy
module          = luffy.wsgi
home            = /root/Envs/luffy_city_env
master          = true
processes       = 1
socket          = 0.0.0.0:8000
http            = 0.0.0.0:8000
vacuum          = true

(3) 通過指定uwsgi.ini配置文件把django跑起來
uwsgi uwsgi.ini

6 uwsgi.ini配置詳解

[uwsgi]
# Django-related settings
# the base directory (full path)
# 寫上項目的絕對路徑
chdir           = /opt/book_manage
# Django's wsgi file
# 填寫找到django的wsgi文件,填寫相對路徑,以chdir參數為相對路徑
module          = book_manage.wsgi
# the virtualenv (full path)
# 填寫虛擬環境的絕對路徑
home            = /root/Envs/book_manage_env/
# process-related settings
# master
#啟動uwsgi主進程
master          = true
# maximum number of worker processes
processes       = 1
# the socket (use the full path to be safe
#如果你使用了nginx,做反向代理,必須填寫socket鏈接,而不是http參數
socket          = 0.0.0.0:8000
#如果你不用nginx,直接使用uwsgi,運行一個http服務端,就用這個http參數
http = 0.0.0.0:8000
# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum          = true

注意:由於uwsgi 不支持處理靜態文件,所以,我們需要配置nginx與uwsgi結合,通過nginx來處理靜態文件

第五步  完成nginx的安裝配置,了解nginx。conf如何配置

1收集靜態文件

(1)  修改settings.py配置文件, 加入以下一行配置
STATIC_ROOT='/opt/luffy_city/static'
(2)  創建靜態文件存放目錄/opt/luffy_city/static
mkdir -p /opt/luffy_city/static
(3)  一條命令收集django項目下面的所有靜態文件
python3 manage.py collectstatic

2 配置nginx結合uwsgi進行端口轉發

(1)在nginx.conf配置文件下添加以下配置文件

location / {
            include  /opt/nginx112/conf/uwsgi_params;
            uwsgi_pass 0.0.0.0:9000;
        }

(2) 將uwsgi.ini配置文件里面的http注釋掉,啟用socket

socket          = 0.0.0.0:9000   # 啟用此行
# http            = 0.0.0.0:9000  # 停用此行

(3) 在nginx.conf中添加靜態文件地址

location /static {
            alias /opt/luffy_city/static;
        }

(4) 平滑重啟nginx

/opt/nginx112/sbin/nginx -s reload

(5) 在物理機上添加hosts

192.168.12.56    www.qishi2.com

第六步 驗證所有流程是否正常

1 驗證域名是否正常訪問
2 驗證靜態文件是否正常顯示
3 驗證數據庫是否連接正常
4 驗證redis數據庫是否連接正常
5 驗證uwsgi是否正常啟動 

第七步 安裝node,配置vue前端

(1) 下載安裝node軟件包

wget https://nodejs.org/download/release/v8.6.0/node-v8.6.0-linux-x64.tar.gz

(2) 解壓縮

tar -zxvf node-v8.6.0-linux-x64.tar.gz

(3) 添加環境變量

PATH=/opt/node-v8.6.0-linux-x64/bin:/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

(4) 將vue項目里面的所有127.0.0.1和所有的localhost全部改為我們的服務器地址192.168.12.56

注意: 此步非常重要, 講師機上面的vue項目里面,這個IP沒有創建全局變量,導致127.0.0.1和localhost分布在很多個文件中,所以需要一個一個替換

(5) 進入到vue前端的項目目錄, 使用npm run build生成dist項目靜態文件

cd /opt/luffy_city/luffy_pc
npm run build

(6) 在luffy_pc目錄下就可以看到dist文件夾

/opt/luffy_city/luffy_pc/dist

第八步 supervisor守護進程工具

1 安裝supervisor

# 注意此時已經退出虛擬環境了!!!!!
easy_install supervisor
# 如果沒有easy_install的話,就yum安裝一個setuptools工具就可以用了
yum install python-setuptools

2 生成supervisord配置文件

echo_supervisord_conf > /etc/supervisord.conf

3 在/etc/supervisord.conf下添加以下兩行配置

[program:luffy_city]
command=/root/Envs/luffy_city_env/bin/uwsgi /opt/luffy_city/luffy/uwsgi.ini

4 啟動supervisor

supervisord -c /etc/supervisord.conf # 啟動supervisor
supervisorctl -c /etc/supervisord.conf # 啟動和進入supervisor交互模式

5 查看supervisor運行狀態

supervisorctl  # 使用此命令后將會進入supervisor交互式管理界面
status  # 查看進程運行狀態

6 管理supervisor里面的進程

stop luffy_city    # 關閉luffy_city進程
stop all           # 關閉所有進程
start luffy_city   # 開啟luffy_city進程
start all          # 開啟所有進程
status             # 查看所有進程運行狀態
supervisorctl status  # 可以不用進入交互模式查

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM