大家好,這是皮爺給大家帶來的最新的學習Python能幹啥?之Django教程,從零開始,到最後成功部署上線的項目。這一節,全是乾貨!全是乾貨!建議收藏保存!!因爲我們超級詳細的講解怎樣部署我們的網站到服務器上。
Peekpa.com的官方地址:http://peekpa.com
皮爺的每一篇文章,都配置相對應的代碼。這篇文章沒有代碼。哈哈哈哈哈
上一節我們已經成功購買了阿里雲服務器,並且服務器系統是CentOS 7.7 64位系統。
這一節,我們就用二十一步,來把我們的Django項目,通過使用Nginx + uWsgi + Supervisor部署到線上服務區。
部署步驟繁瑣麻煩,大家一定要跟緊每一步,這篇文章是網上最全的部署文章,而且是一步一步的給大家展示如何部署。所以,請認真學習。
1/21 登錄服務器
上一篇文章我們購買了服務器,公網IP是39.104.203.202:
所以,我們通過SSH來登錄到服務器,Mac OS和Linux用戶,直接用系統自帶的終端就可以;windows用戶,可以使用putty來登錄:
$ ssh [email protected]
登錄成功顯示的是這樣:
2/21 安裝Git
由於新的CentOS 上面是沒有git的,所以,我們通過下面命令來安裝Git。安裝Git的目的是爲了從Github上下載我們的代碼。
$ sudo yum install -y git
安裝成功之後是這個樣子:
3/21 下載源碼
安裝好Git之後,我們就要從Github上下載我們的PeekpaCom項目。
PeekpaCom項目地址是,歡迎大家點星星:https://github.com/SwyftG/PeekpaCom
我們通過以下命令來下載源碼:
$ git clone https://github.com/SwyftG/PeekpaCom.git
下載完成之後是這樣:
4/21 安裝Python
我們項目是使用Python 3運行的,但是系統裏面自帶的Python版本是2.7.5
所以我們使用以下命令來安裝Python 3
# 安裝Python
$ sudo yum install -y python3
# 檢測Python版本
$ python3 -V
可以看到,安裝完成之後,我們再檢測以下Python 3的版本,是 3.6.8
5/21 安裝虛擬環境
我們在第一課的時候就介紹過,整個項目我們是使用的Python虛擬環境開發的,所以,我們爲了維持一致,需要在服務器上也安裝虛擬環境。 使用以下命令一條一條的輸入:
# 更新pip
$ sudo pip3 install --upgrade pip
# 安裝virtualenv
$ sudo pip3 install virtualenv
# 先安裝pbr,再安裝virtualenwrapper
$ sudo pip3 install pbr
$ sudo pip3 install virtualenvwrapper
6/21 設置virtualenv參數
及時安裝完virtualenv,我們還不能使用,需要設置一下參數,通過命令進入bashrc文件:
$ sudo vi ~/.bashrc
進去之後,將光標移動到文件的最後,再按"i"鍵,進入vi的插入模式,將以下內容複製黏貼到文件的最後:
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
source /usr/local/bin/virtualenvwrapper.sh
這個時候按Esc
,再按:
,輸入wq!
,再按回車,退出vi。
接着使用下列命令讓bashrc文件生效:
$ source ~/.bashrc
7/21 安裝依賴
安裝依賴
yum install mysql-devel gcc gcc-devel python36-devel python-devel
8/21 創建虛擬環境
接着通過以下命令創建虛擬環境:
#創建虛擬環境peekpa
$ mkvirtualenv peekpa
#切換到虛擬環境
$ workon peekpa
注意到左側有(peekpa)
,就說明當前的工作環境是在虛擬環境peekpa裏面。
9/21 安裝工程的依賴
接着我們安裝工程的依賴,在虛擬環境中,需要進入PeekpaCom文件目錄下,安裝依賴:
$ cd PeekpaCom/
$ pip install -r requirement.txt
接着我們推出虛擬環境:
$ deactivate
10/21 安裝MySQL
在系統環境下,我們要安裝MySQL 8.0。請務必遵循以下命令,一條一條執行:
# 1> 設置rpm文件
$ sudo rpm -Uvh https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm
# 2> 設置repo
$ sudo sed -i 's/enabled=1/enabled=0/' /etc/yum.repos.d/mysql-community.repo
# 3> 安裝MySQL
$ sudo yum --enablerepo=mysql80-community install mysql-community-server
# 4> 啓動MySQL服務
$ sudo service mysqld start
# 5> 獲取初始密碼
$ sudo grep "A temporary password" /var/log/mysqld.log
這個初始密碼會顯示出來,然後我們開始初始化MySQL
# 6> 修改初始密碼
$ sudo mysql_secure_installation
這裏面需要設置root密碼,把上面系統給的初始密碼輸入,然後設置一個自己系統的複雜密碼,並且一步一步的完成配置(基本都是Y),最後提示成功。
接着重啓MySQL服務,在登錄進去:
# 7> 重啓MySQL
$ sudo service mysqld restart
# 8> 登錄
$ sudo mysql -u root -p
我們接下來要看一下數據庫的內容,並且創建一個我們PeekpaCom/Peekpa/settings.py
文件裏DATABASES
裏面對應的數據庫。因爲這個變量裏面我們的數據庫名稱是peekpa_db1
,所以,我們就要創建一個名爲peekpa_db1
的數據庫
# 9> 顯示數據庫
> show databases;
# 10> 創建peekpa_db1數據庫
> CREATE DATABASE peekpa_db1;
# 11> 顯示數據庫
> show databases;
接着,我們要根據以下命令修改MySQL的配置:
# 12> 切換到mysql
> use mysql;
# 13> 顯示root信息
> select user,plugin from user where user='root';
# 14> 修改root密碼爲剛纔你設置的密碼,這裏就是'yourpasswordxxxxxx'對應是你的密碼
> alter user 'root'@'localhost' identified with mysql_native_password by 'yourpasswordxxxxxx';
# 15> 清除緩存
> flush privileges;
# 16> 退出MySQL
> quit;
11/21 修改工程settings.py
接下來,我們需要修改Django裏面的settings.py文件中的DEBUG
,ALLOWED_HOSTS
和DATABASES
裏面的密碼
$ cd Peekpa
$ sudo vi settings.py
將settings.py文件中的數據修改成這樣:
DEBUG = False
ALLOWED_HOSTS = ['peekpa.com','39.104.203.202']
DATABASES = {
修改密碼
}
這裏要說明一下ALLOWED_HOSTS
, 第一個填寫的是域名,第二個填寫的是你的服務器的公網IP地址。表面如果請求來自這兩個地方,則Django處理,否則Django是拒絕的。
然後我們進入虛擬環境,需要執行migrate
命令,將Django中的模型映射到數據庫中:
# 進入虛擬環境
$ workon peekpa
# 退回到PeekpaCom目錄
$ cd ..
# 執行migrate命令
$ python manage.py migrate
12/21 創建SuperUser
接着我們需要創建superuser:
$ python manage.py createsuperuser
13/21 啓動服務
接着我們啓動服務:
$ python manage.py runserver 0.0.0.0:80
然後在瀏覽器裏面輸入你的服務器的公網IP地址http://39.104.203.202/
,看到:
看到這裏,就說明目前服務器一切正常,但是我們的靜態資源文件缺失。
14/ 收集靜態文件
我們先退出Django的服務,通過collectstatic
命令先收集靜態文件:
$ python manage.py collectstatic
可以看到我們多了一個static_dist
文件
14/21 安裝uWsgi
首先得退出虛擬環境,然後通過pip3安裝uswgi:
# 退出虛擬環境
$ deactivate
# 安裝
$ pip3 install uwsgi
15/21 安裝Nginx
通過以下命令安裝Nginx,並啓動:
$ sudo yum install epel-release
$ sudo yum install nginx
$ sudo service nginx start
如何查看Nginx是否啓動,只需要在瀏覽器裏面輸入你的服務器公網IP地址就可以:
出現這個說明就成功了。
16/21 配置Nginx
接着我們配置Nginx。首先去目錄/etc/nginx/conf.d/
目錄下,創建一個peekpa.conf
文件,將以下內容粘帖進去即可:
server {
listen 80;
server_name peekpa.com,39.104.203.202;
charset utf-8;
location /static {
alias /root/PeekpaCom/static_dist;
}
location / {
include /etc/nginx/uwsgi_params;
uwsgi_pass unix:/root/peekpa.sock;
}
}
接着我們要將/etc/nginx/
目錄下的nginx.conf
中的user nginx;
改爲user root;
。這種做法不是很安全,但是目前我們可以這麼做。
然後通過命令重啓Nginx服務。
# 重啓Nginx服務
$ sudo service nginx restart
17/21 配置uWsgi
這個時候,我們在PeekpaCom目錄下,創建一個peekpa.ini
的文件:
$ touch peekpa.ini
接着我們將一下內容黏貼到這個文件中:
[uwsgi]
chdir = /root/PeekpaCom
module = Peekpa.wsgi
home = /root/.virtualenvs/peekpa
master = true
processes = 10
socket = /root/peekpa.sock
chmod-socket = 777
然後我們得去/root/
目錄下,創建一個peekpa.sock
文件,需要把peekpa.sock
文件的權限設置成777.
接着我們再回到PeekpaCom目錄下使用命令啓動uwsgi:
$ uwsgi --ini peekpa.ini
這個時候,我們去首頁,發現也是可以訪問的:
但是圖片還是加載不出來,這個是因爲我們的靜態資源文件夾權限問題。所以我們要修改靜態資源文件夾的權限:
$ chmod 777 -R static_dist/
這個時候,我們看到靜態資源文件就顯示成了。
18/21 安裝supervisor
我們需要在系統目錄下,安裝supervisor:
$ sudo pip3 install supervisor
19/21 配置supervisor
接着我們在項目底下,創建一個peekpa_supervisor.conf
文件,用來填寫supervisor的配置。
$ sudo touch peekpa_supervisor.conf
然後將一下內容複製到peekpa_supervisor.conf
文件中:
[program:PeekpaComSite]
command = uwsgi --ini peekpa.ini
directory = /root/PeekpaCom
startsecs=0
stopwaitsecs=0
autostart=true
autorestart=true
stdout_logfile=/root/PeekpaCom/log/supervisord.log
stderr_logfile=/root/PeekpaCom/log/supervisord.err
[supervisord]
loglevel=info
[inet_http_server]
port = :8000
username = admin
password = 123
[supervisorctl]
serverurl = http://127.0.0.1:8000
username = admin
password = 123
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
接着,我們需要在PeekpaCom
目錄下,創建一個log
文件夾,同時將log
文件夾的權限打開。
$ mkdir log
$ chmod 777 -R log/
20/21 啓動項目
最後一步,就是啓動項目了:
# 啓動項目
$ supervisord -c peekpa_supervisor.conf
# 查看狀態
$ supervisorctl -c peekpa_supervisor.conf
可以看到,網頁全部正常運行:
21/21 打開8000端口
剛纔我們在填寫supervisor的時候,我們配置了127.0.0.1:8000端口,這個時候,我們需要將服務器的8000端口打開才能訪問。
來到阿里雲的控制檯,更多 -> 網絡和安全組 -> 安全組配置
進來之後,選擇規配置規則
然後點擊手動添加
然後目的寫8000/8000
,源寫0.0.0.0/0
,最後點擊保存。
這樣就添加完成了。
這個時候,我們再回到頁面,刷新一下:
填入剛纔在supervisor裏面配置的admin和123,然後就看到了網頁管理頁面:
這個就是supervisor的守護進程頁面。
至此,PeekpaCom的網站配置就全部結束了。恭喜你,已經畢業了。
雖然課程結束了,至此,我相信你也可以成功搭建起來自己的網站了。
接下來一段時間,我們將會逐步講解Django如何和MongoDB連接,如何使用Redius作爲緩存,如何使用Celery來做定時任務等等。高級的騷操作,期待一起搞事情。
獲取代碼的唯一途徑:關注『皮爺擼碼』,回覆『代碼』即可獲得。
長按下圖二維碼關注,如文章對你有啓發,歡迎在看與轉發。