這是一個 Django
環境部署教程,也是一個我坑爹的 Django
環境部署記錄:
開始擼程式碼之前有兩點需要提醒:
- 本教程完美適配如題開發環境但不侷限於此環境,其他開發環境僅需將命令操作轉換為當前環境下的命令即可;
- 我寫作的順序是我個人體驗比較好的操作順序僅供參考;
開擼:
1. MariaDB 的安裝與部署
# yum 安裝
yum -y install mariadb mariadb-server mariadb-devel
# 安裝完成MariaDB,首先啟動MariaDB
systemctl start mariadb
# 設定開機啟動
systemctl enable mariadb
# 接下來進行MariaDB的相關簡單配置
mysql_secure_installation
#首先是設定密碼,會提示先輸入密碼
Enter current password for root (enter for none):# 初次執行直接回車
#設定密碼
Set root password? [Y/n] # 是否設定root使用者密碼,輸入y並回車或直接回車
New password: # 設定root使用者的密碼
Re-enter new password: # 再輸入一次你設定的密碼
#其他配置
Remove anonymous users? [Y/n] # 是否刪除匿名使用者
Disallow root login remotely? [Y/n] #是否禁止root遠端登入
Remove test database and access to it? [Y/n] # 是否刪除test資料庫
Reload privilege tables now? [Y/n] # 是否重新載入許可權表
#初始化MariaDB完成,接下來測試登入
mysql -uroot -ppassword
複製程式碼
注意:切記安裝 mariadb-devel
(Ubuntu
下是 mysql-dev
或 libmysqlclient-dev
)否則在下面安裝 Python
的 mysqlclient
包的時候可能會出現 mysql_config not found
的錯誤。
2. Python3 的安裝與部署
在 CentOS
中預設安裝了 Python2
如果你是基於 Python2
開發的話可以直接使用,但也要注意版本儘量升級到 Python2
的最新版。
2.1 安裝 Python3 所需依賴
CentOS
裡面是 XXX-devel
,如果在 Ubuntu
下安裝則要改成 XXX-dev
。
# 為 CentOS 系統增加編譯功能
yum install -y gcc-c++
# 安裝這些模組都是為了成功編譯安裝 Python3,防止出現各種異常
yum install -y wget openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel xz-devel tk-devel gdbm-devel
# 3.7版本需要一個新的包libffi-devel,安裝此包之後再次進行編譯安裝即可。
yum install -y libffi-devel
# 安裝這個模組是為了讓 uwsgi 支援使用 -x 選項,能通過 xml 檔案啟動專案
yum install -y libxml*
複製程式碼
各個依賴的用途我就不展開講了,如果好奇的話可以去百度,度娘都知道。
提醒一點:如果你之前已經嘗試過一次安裝並且失敗了,可以看一下是不是少裝了某項依賴,在依賴完整的情況下,安裝完 Python3
後會自動附帶安裝 pip
。
2.2 編譯安裝 Python3.X
# 點選上面的官方 FTP 地址選擇你想要的版本和壓縮方式,獲取下載連線
# 本例以 Python3.6.3 為例
# 在合適的路徑(推薦在使用者根路徑下如 /home 或者 /root )下執行下載命令:
wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz
# 下載完成後執行解壓命令:
tar -zxvf Python-3.6.3.tar.gz
# 進入解壓後的 Python-3.6.3 檔案,依次執行以下命令:
# 編譯設定將 Python3 安裝到 /usr/local/python3/ 路徑下
./configure --prefix=/usr/local/python3
make
make install
# 建立 Python3 軟連線,方便直接在命令列使用 Python3 和 pip3 直接呼叫 Python3 和 pip3
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
複製程式碼
3.3 利用 pip3 安裝必要的 Python 包
# 升級 pip3 到最新版本
pip3 install --upgrade pip
# 安裝需要的包( django djangorestframework mysqlclient )
pip3 install django djangorestframework mysqlclient
# 建立 django-admin 軟連線
ln -s /usr/local/python3/bin/django-admin /usr/bin/django-admin
複製程式碼
3. uwsgi 的安裝
本文推薦使用 pip3
直接下載安裝 uwsgi
若想使用其他安裝方法請自行百度。
# 下載安裝 uwsgi
pip3 install uwsgi
# 建立 uwsgi 軟連線
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi3
複製程式碼
4. Django 專案建立或下載
在適合的位置用 django-admin startproject myproject
建立自己的專案,或者用 Git , FTP上傳工具
等上傳、克隆自己的專案,本文采用新建專案的方式呈現此過程:
# 在合適的地方建立用來存放 Django 專案的目錄
mkdir /var/www
# 進入目錄
cd /var/www
# 建立 Django 專案
django-admin startproject myproject
# 進入專案
cd myproject
# 檢視專案目錄
ls
myproject manage.py
# 其中 myproject 為專案配置檔案目錄 manage.py 為 Django 命令列工具
# 記住我剛剛定義的幾個名詞:
# 專案目錄:/var/www/myproject
# 專案配置檔案目錄:/var/www/myproject/myproject
# 這在後面的配置中有很大的作用千萬別搞混
# 下面,進入專案配置檔案目錄修改部署需要的配置
cd myproject
vim settings.py
# 必須修改的有(本設定不適合在上線專案中使用)
# 1. 修改 ALLPWED_HOSTS = ['*']
# 2. 修改 DATABASES 如下(相應位置改為你的專案的相應值):
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 資料庫型別
'NAME': 'test', # 專案資料庫名稱
'HOST': '127.0.0.1', # 資料庫地址
'PORT': '3306', # 埠號
'USER': 'root', # 資料庫使用者名稱
'PASSWORD': 'root', # 資料庫密碼
}
}
# 注意:如果你是上傳的自己在本地環境寫好的程式別忘了同步資料庫
複製程式碼
5. uwsgi 設定
在適當的目錄下建立 uwsgi
配置檔案。
本文采用 xml
配置檔案,需要更多型別配置檔案請自行百度。
# 進入專案目錄
cd /var/www/myproject
# 建立編輯 uwsgi 配置檔案(檔名自起)
vim uwsgiset.xml
# 內容如下
<uwsgi>
<socket>127.0.0.1:8997</socket><!-- 內部埠,自定義 -->
<chdir>/var/www/myproject</chdir><!-- 專案目錄 -->
<module>myproject.wsgi</module><!-- wsgi 啟動檔案 -->
<processes>4</processes> <!-- 程式數 -->
<daemonize>uwsgi.log</daemonize><!-- 日誌檔案路徑 -->
<pidfile>uwsgi.pid</pidfile><!-- uwsgi 管理檔案路徑,用來重啟 uwsgi -->
</uwsgi>
# 更多配置資訊請自行百度
# 在專案目錄( /var/www/myproject )下啟動:
uwsgi3 -x uwsgiset.xml
# 提醒 [uWSGI] parsing config file myproject.xml 則啟用成功
# 注意僅僅是啟用成功
複製程式碼
6. nginx 下載、設定和啟用
# [必須]安裝 nginx 需要先將官網下載的原始碼進行編譯,編譯依賴 gcc 環境,如果沒有 gcc 環境,則需要安裝:
yum install -y gcc-c++
# [必須]PCRE(Perl Compatible Regular Expressions) 是一個Perl庫,包括 perl 相容的正規表示式庫。nginx 的 http 模組使用 pcre 來解析正規表示式,所以需要在 linux 上安裝 pcre 庫,pcre-devel 是使用 pcre 開發的一個二次開發庫。nginx也需要此庫。命令:
yum install -y pcre pcre-devel
# [自選]zlib 庫提供了很多種壓縮和解壓縮的方式, nginx 使用 zlib 對 http 包的內容進行 gzip ,所以需要在 Centos 上安裝 zlib 庫。
yum install -y zlib zlib-devel
# [自選]nginx 不僅支援 http 協議,還支援 https(即在ssl協議上傳輸http),所以需要在 Centos 安裝 OpenSSL 庫。
yum install -y openssl openssl-devel
# 官網下載 Ngxin
# 直接下載.tar.gz安裝包,地址:https://nginx.org/en/download.html
# 推薦選擇穩定版下載 : 當前版本 1.12.2
# 下載連結: https://nginx.org/download/nginx-1.12.2.tar.gz
wget -c https://nginx.org/download/nginx-1.12.2.tar.gz
# 解壓 用到了之前下載的zlib庫 若沒下載可選擇其他方式解壓
tar -zxvf nginx-1.12.2.tar.gz
# 編譯前初始化配置
cd nginx-1.12.2 # 進入nginx目錄
./configure # 使用預設配置
# 編譯安裝
make
make install
# 查詢安裝路徑
[root@Ryoma nginx-1.12.2]#whereis nginx
nginx: /usr/local/nginx
# 啟動、停止 nginx
cd /usr/local/nginx/sbin/ # 進入 nginx sbin 目錄
./nginx # 啟動 nginx
./nginx -s quit # 此方式停止步驟是待 nginx 程式處理任務完畢進行停止
./nginx -s stop # 此方式相當於先查出 nginx 程式id再使用kill命令強制殺掉程式
./nginx -s reload # 重新載入
#查詢 nginx 程式:
ps aux|grep nginx
# 配置 nginx
vim /usr/local/nginx/conf/nginx.conf
# 個人配置圖如下
複製程式碼
# :wq儲存後進入 /usr/local/nginx/sbin/ 目錄
# 先檢查配置檔案是否有錯
./nginx -t
# 沒有錯就執行以下命令:
./nginx
# 終端沒有任何提示就證明 nginx 啟動成功,可以通過連結檢視 nginx 是否啟動成功:
# http://192.168.1.111 (請將該ip替換成你的伺服器ip)
複製程式碼
若出現 nginx
錯誤,請自行查閱 nginx
錯誤日誌 (預設在 /usr/local/ngxin/logs/error.log
)
若出現 internal server error
,請檢視 uwsgi
日誌 (位置請看 uwsgi xml
配置檔案)
理論上來說到這裡你就能看到你的 Django
專案啟動成功了,如果過程中出現了任何你自己無法解決的問題,歡迎留言或郵件(ryomahan1996#gmail.com)聯絡我。