Centos環境部署django項目的全過程(永久復用)

一:基礎環境介紹:

Centos:7.8(cat /etc/redhat-release查看版本號)

Python:3.9.5(python -V查看版本號)

Django:2.2.6(django-admin –version查看版本號)

Uwsgi:2.0.20(uwsgi –version查看版本號)

Nginx:1.20.1 (nginx -v查看版本號)

二:部署環境安裝配置:

1.基礎依賴環境安裝

yum -y groupinstall "Development tools"
 
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel

2.安裝wegt,vim,unzip等必須命令

yum -y install wget vim unzip

3.安裝python與pip(或者python多版本管理工具pyenv等)

## 1.下載自己需要版本的python版本包
wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tar.xz
 
## 2.新建python3目錄
mkdir /usr/local/python3
 
## 3.安裝Python3壓縮包,進入解壓目錄,指定安裝目錄,安裝Python3
tar -xvf  Python-3.9.5.tar.xz
cd Python-3.9.5
./configure --prefix=/usr/local/python3
make && make install
 
## 4.安裝Python3時,會自動安裝pip,如果沒有就手動安裝
yum -y install python-pip
 
## 5.pip配置(更換pip的源)
(1)找到pip.conf並編輯
[root@devops ~]# cd ~ 
[root@devops ~]# mkdir .pip 
[root@devops ~]# vim pip.conf
 
[global] 
index-url = https://mirrors.aliyun.com/pypi/simple/ 
[install] 
trusted-host=mirrors.aliyun.com
 
:wq!保存退出即可
 
(2) 安裝依賴安裝好pip
[root@devops ~]# yum -y install epel-release
[root@devops ~]# yum install python-pip
[root@devops ~]# pip install --upgrade pip
 
## 6.升級下pip
pip install --upgrade pip
 
## 7.創建軟鏈接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
 
## 輸入python3測試是否安裝成功
python -V

4.安裝nginx

## 1.yum方式安裝nginx
yum -y install nginx
 
## 2.查看nginx版本
nginx -v
 
## 3.啟動nginx
systemctl status nginx  ## 查看nginx狀態
 
systemctl start nginx   ## 開啟nginx服務
 
systemctl stp nginx     ## 關閉nginx服務

5.安裝uwsgi

## 1.安裝uwsgi
pip3 install uwsgi
 
## 2.建立軟鏈接
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
 
## 3.查看uwsgi版本
uwsgi --version

三:部署django項目:

1.上傳項目並安裝項目模塊並啟動測試

## 1.上傳文件到服務器
 
## 2.解壓項目
unzaip devops.zip
 
## 3.pip安裝項目依賴模塊
pip3 install -r requirements.txt
 
## 4.通過python3 manage.py runserver運行一下項目,如果能正常啟動則進行下一步,不能正常運行往上檢查。
這裡需要註意使用python3來執行manage.py,否則會出現報錯情況!

2.在項目裡配置uwsgi.ini配置文件

(1)在settings.py所在目錄vim新文件 項目名稱.ini

(2)配置 項目名稱.ini文件

[uwsgi]
master=true
chdir=/data(服務器實際目錄)/項目名稱
module=項目名稱.wsgi
py-autoreload=1
lazy-apps=true  
socket=127.0.0.1:8000
processes=4
buffer-size=32768
daemonize=uwsgi.log
log-maxsize = 5000000
vacuum = true
disable-logging = true

 (3)檢查settings.py配置並收集項目靜態文件

一般都是這個配置:

settings.py配置:

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, '/static/')
STATICFILES_DIRS = [
  os.path.join(BASE_DIR, '../bitmain_cmdb/static'),  ## 實際靜態文件所在項目路徑,親測好使
]

url.py配置:

from django.conf.urls import *
from django.contrib import admin
from django.conf.urls import url,include
from django.conf.urls.static import static
from django.conf import settings
urlpatterns = [
    url(r'^cmdb_admin/', admin.site.urls),
] + static(settings.STATIC_URL,document_root = settings.STATIC_ROOT)

執行收集靜態文件命令:

python manage.py collectstatic

(4)啟動測試,並查看日志

## 在當前目錄啟動
uwsgi -i 項目名稱.ini
 
## 啟動之後查看進程
ps -ef | grep uwsgi

啟動:uwsgi -i 項目名稱.ini

查看進程

 查看日志,服務啟動正常

3.配置nginx

vim /etc/nginx/nginx.conf

nginx.conf配置

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
 
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
 
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    server {
        listen 80;
        charset utf-8;
        location /static {
               alias /項目所在目錄/static/;
        }
        location / {
            include uwsgi_params;
            uwsgi_pass 127.0.0.1:8000;
        }
    }
}

(4)啟動nginx

## 1.配置完nginx.conf,執行 nginx -t /etc/nginx.conf 啟用nginx配置文件
 
## 2.軟加載nginx   nginx -s  reload

(5)訪問django項目http://服務器ip/login/

四:備註

之後項目重啟隻需要重啟uwsgi之後再重啟nginx即可,切記正式環境要關掉django的debug模式,防止報錯源碼被看到。

## 項目重啟
killall -9  uwsgi
uwsgi -i 項目名稱.ini
nginx -s reload
## 關閉項目debug模式
vim  settings.py 
debug = Fasle

總結

到此這篇關於Centos環境部署django項目的文章就介紹到這瞭,更多相關Centos環境部署django內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: