這是一個 Django
環境部署教程,也是一個我坑爹的 Django
環境部署記錄:html
開始擼代碼以前有兩點須要提醒:python
開擼:mysql
# 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
的錯誤。linux
在 CentOS
中默認安裝了 Python2
若是你是基於 Python2
開發的話能夠直接使用,但也要注意版本儘可能升級到 Python2
的最新版。nginx
CentOS
裏面是 XXX-devel
,若是在 Ubuntu
下安裝則要改爲 XXX-dev
。c++
# 爲 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
。sql
# 點擊上面的官方 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
複製代碼
# 升級 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
複製代碼
本文推薦使用 pip3
直接下載安裝 uwsgi
若想使用其餘安裝方法請自行百度。數據庫
# 下載安裝 uwsgi
pip3 install uwsgi
# 建立 uwsgi 軟鏈接
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi3
複製代碼
在適合的位置用 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', # 數據庫密碼
}
}
# 注意:若是你是上傳的本身在本地環境寫好的程序別忘了同步數據庫
複製代碼
在適當的目錄下建立 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 則啓用成功
# 注意僅僅是啓用成功
複製代碼
# [必須]安裝 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)聯繫我。