用Django全棧開發——29. 部署之阿里雲CentOS+Nginx+uWsgi+Django

大家好,這是皮爺給大家帶來的最新的學習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_HOSTSDATABASES裏面的密碼

$ 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來做定時任務等等。高級的騷操作,期待一起搞事情。

獲取代碼的唯一途徑:關注『皮爺擼碼』,回覆『代碼』即可獲得。

長按下圖二維碼關注,如文章對你有啓發,歡迎在看與轉發。

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章