上次已經用阿里雲服務器和寶塔面板一鍵部署了一個網站,可以上傳網站源碼直接使用了,後端用的PHP。這次記錄是在雲服務器上運行django的過程。包括python3安裝,環境配置和項目創建等,不涉及ngix和uwsgi的配置,後續會有記錄。
文章目錄
搭建過程如下:
1 準備工作:
網站搭建前期工作(即上次搭建記錄,已有搭建經歷可忽略):【網站搭建】用阿里雲服務器搭建個人網站
(1) 啓動阿里雲 “輕量應用服務器”
(2) 打開阿里雲控制檯開啓遠程連接
(3) 打開寶塔面板
2 詳細過程
(1)安裝python3.7.5
CentOS7.3服務器中自帶python2,但目前django的資料大多基於python3,因此爲了後續使用更加方便,本次搭建建議先安裝python3。
打開命令行窗口,輸入以下命令,可以先輸入sudo -i進入管理員模式
- 安裝C編譯器
yum install gcc
- 下載python3.7.5壓縮包,如果下載較慢,可以先在瀏覽器進入下面的網址下載安裝包,然後將安裝包上傳到寶塔面板的root文件夾下面
wget https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tgz
- 解壓
tar -zxvf Python-3.7.5.tgz
- 打開安裝目錄
cd Python-3.7.5
- 啓動配置並選擇安裝路徑(/usr/local/python3爲安裝路徑,建議不改)
./configure --prefix=/usr/local/python3
- 編譯和安裝(中途可能卡住,請勿輸入命令,耐心等待)
make && make install
- 創建軟鏈接,之後可以直接使用’python3’命令ln -s (原路徑) (鏈接路徑),沒有提示即創建成功。
ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3
- 創建pip3的軟鏈接
ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3
- (可跳過,直接進入(2))安裝虛擬環境,可以在獨立的虛擬環境中運行項目
pip3 install virtualenv
#注意:pip用於安裝python2的庫,pip3用於安裝python3的庫
若出現如下提示,可忽略,也可以輸入pip3 install --upgrade pip
pip3 install --upgrade pip
- 創建虛擬環境的軟鏈接,沒有提示或出現**“File exists”**即表示成功
ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
- 創建虛擬環境
virtualenv --python=/usr/bin/python3 myvenv
#後面的myvenv爲環境名稱,建議不修改
- 進入或退出虛擬環境
source myvenv/bin/activate #進入虛擬環境
deactivate #退出虛擬環境
#提示:以上命令是在python-3.6.5文件夾下執行的,如果沒有打開此文件夾,可以輸入以下命令:
cd /root/Python-3.6.5 #進入python-3.6.5文件夾
source myvenv/bin/activate #進入myvenv
或直接輸入:
source /root/Python-3.6.5/myvenv/bin/activate
(2)安裝django
- 先輸入deactivate退出虛擬環境,然後安裝
pip3 install django
- 然後再進入myvenv虛擬環境,再次安裝(用pip)
pip install django
#不是pip3,而是pip,進入虛擬環境後去掉python和pip命令後的“3” 。可能因爲這本來就是python3的環境,沒必要再區分。
(3)創建項目
- 創建django項目需要用到django-admin命令,先創建其軟鏈接
ln -s /usr/local/python3/bin/django-admin /usr/bin/django-admin
#類似先前的命令,找到原路徑,創立軟鏈接路徑(兩路徑間空格)
- 先進入存放項目的文件夾(自由選擇),我選擇**/www/myproject/,先在寶塔面板中的文件夾/www/下創建一個名爲myproject**的目錄,然後再命令行輸入
cd /www/myproject #進入文件夾
- 之後可直接輸入命令創建項目
django-admin startproject HelloWorld
#HelloWorld爲項目名稱(建議先了解整個流程後再更改)
創建完成,/www/myproject/文件夾下面將會出現一個名爲HelloWorld的工程,進入文件夾,又會看到一個HelloWorld文件夾,難道是俄羅斯套娃?(狗頭),除此之外,還有一個名爲manage.py的文件,以後會經常用到,要習慣它的相關命令。
- 運行項目
cd HelloWorld
python3 manage.py runserver 0:8000
第一次運行出錯,提示爲沒有配置數據庫。如果沒有出錯請忽略下面步驟,直接在瀏覽器中輸入 “IP地址:8000” ,如果打不開網頁,需要在阿里雲安全組設置防火牆
配置方式如下:
首先,確保已經建立了一個MySQL數據庫,且知道數據庫名稱和密碼,可以在寶塔面板數據庫選項查看。
然後打開HelloWorld(第二個)工程文件夾,編輯settings.py文件
將76行DATABASES改成如下
DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }#以前的配置
'default': {
'ENGINE': 'django.db.backends.mysql', # 或者使用 mysql.connector.django
'NAME': 'name', #數據庫名
'USER': 'name', #用戶名,寶塔面板數據庫選項可查看
'PASSWORD': 'password', #數據庫密碼
'HOST':'Localhost', #默認,若改了這個,數據庫的也要改
'PORT':'3306', #端口,默認
}
}
settings.py文件第28行中ALLOWED_HOSTS=[]加入服務器IP
ALLOWED_HOSTS = ['180.25.91.166'] #[]內填服務器IP(公)
然後保存並返回命令行窗口,安裝mysqlclient
pip3 install mysqlclient #虛擬環境中使用pip
然後啓動服務
python3 manage.py runserver 0:9090
#虛擬環境中可以去掉“3”,如果嫌麻煩也可以先不使用虛擬環境,直接在原環境搭建,知道如何進入和退出虛擬環境即可。
結果就一直卡在這個畫面
可能是因爲端口沒開,先進入阿里雲控制檯打開9090和3306的tcp端口,然後輸入如下命令打開端口
firewall-cmd --zone=public --add-port=9090/tcp --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload #最後一定要重啓
再次啓動服務
python3 manage.py runserver 0:9090 #啓動服務器,且端口爲9090
瀏覽器打開101.24.97.334:9090,即 “你的IP:9090"。
(4)成功,小火箭起飛!
4 記錄一些常見錯誤以及解決方法
(1)錯誤一: DisallowedHost at/
解決方法:
settings.py文件第28行中ALLOWED_HOSTS=[]加入服務器IP,然後保存。
ALLOWED_HOSTS = ['180.25.91.166'] #[]內填服務器IP(公)
(2)錯誤二: Performing system checks…
解決方法:
可能是因爲端口沒開,先進入阿里雲控制檯打開9090和3306的tcp端口,然後輸入如下命令打開端口
firewall-cmd --zone=public --add-port=9090/tcp --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload #最後一定要重啓
(3)錯誤三: 已經安裝了django,但虛擬環境中提示未安裝
解決方法:
pip3 命令安裝的django只能在外部使用,在虛擬環境中要用pip命令來安裝。
5 常用命令
cd /www/myproject/HelloWorld #進入文件夾,進入後才能用manage.py命令
django-admin startproject HelloWorld #創建django項目
python3 manage.py runserver 0:9090 #啓動django服務
ctrl+C #退出服務
firewall-cmd --zone=public --add-port=8899/tcp --permanent #打開端口
firewall-cmd --reload #重啓防火牆
使用templates:要設置路徑:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR,"templates")],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
以上就是配置Django的全部記錄了。喜歡搞事情、DIY、學技術的同學可以關注下面這個的公衆號,瞭解更多有更趣的項目: