CentOS7 + Python3 + Django(rest_framework) + MariaDB + nginx + uwsgi 部署 API 開發環境

這是一個 Django 環境部署教程,也是一個我坑爹的 Django 環境部署記錄:html

開始擼代碼以前有兩點須要提醒:python

  1. 本教程完美適配如題開發環境但不侷限於此環境,其餘開發環境僅需將命令操做轉換爲當前環境下的命令便可;
  2. 我寫做的順序是我我的體驗比較好的操做順序僅供參考;

開擼:mysql

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-develUbuntu 下是 mysql-devlibmysqlclient-dev)不然在下面安裝 Pythonmysqlclient 包的時候可能會出現 mysql_config not found 的錯誤。linux

2. Python3 的安裝與部署

CentOS 中默認安裝了 Python2 若是你是基於 Python2 開發的話能夠直接使用,但也要注意版本儘可能升級到 Python2 的最新版。nginx

2.1 安裝 Python3 所需依賴

CentOS 裏面是 XXX-devel,若是在 Ubuntu 下安裝則要改爲 XXX-devc++

# 爲 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 後會自動附帶安裝 pipsql

2.2 編譯安裝 Python3.X

點擊查看 Python 官方 FTP 地址shell

# 點擊上面的官方 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
# 我的配置圖以下
複製代碼

nginx 我的配置圖

# :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)聯繫我。

相關文章
相關標籤/搜索