1. 程式人生 > >django2+uwsgi+nginx上線部署到服務器Ubuntu16.04(最新最詳細版)

django2+uwsgi+nginx上線部署到服務器Ubuntu16.04(最新最詳細版)

鏈接 家庭 部署 txt 分享圖片 服務狀態 wsgi 國內 輸入密碼

1.前期準備

1.打開Terminal終端,執行以下命令,將項目所需要的依賴包,都記錄到一個文件內備用。

pip freeze >requirements.txt

技術分享圖片

2.將項目文件夾→右鍵→添加壓縮文件,壓縮為zip包

技術分享圖片

技術分享圖片

3.準備軟件

1.xshell(用於遠程操作服務器)

2.FileZilla(用於從客戶端將項目包上傳到服務器)

3.Navicat 12 (用於同步數據庫)

4.環境

雲服務器/雲主機:京東雲

(雲服務還是要選大廠的,我也試過一些比較小的廠的雲服務,不說是哪家了,哇,簡直是坑啊,各種報錯各種什麽都安不上。友情提醒,雲服務還是要在騰訊雲、阿裏雲、百度雲、金山雲、京東雲、網易雲這些裏面選用吧。國外的像亞馬遜啊,雖然雲計算的技術上可能領先於國內雲,價格也更加公道,但是,有些事,大家應該懂得,所以,貴是貴了點,還是選國內的吧。)

系統:Ubuntu16.04 64位

2.基本配置

1.使用xshell鏈接雲服務器/雲主機系統(雲服務器和雲主機在這裏概念差不多可以等同,後面都叫雲服務器)

1.打開xshell→【文件】→【新建】,輸入你雲服務器的公網ip

技術分享圖片

2.選擇剛剛建立的會話,然後點【連接】

技術分享圖片

3.輸入登錄用戶名:root

技術分享圖片

4.輸入登錄密碼

技術分享圖片

5.連接成功

技術分享圖片

2.新建用戶ubuntu

1.執行命令

adduser ubuntu
#設置密碼
#確認密碼
#設置姓
#設置名
#設置電話
#設置家庭電話
#除了密碼以為,其他的這些信息用處不大
y+回車
cd /home #切換到家目錄下
ls #查看家目錄下的目錄,可以看到ubuntu的目錄已經建立

技術分享圖片

2.切換用戶ubuntu

技術分享圖片

3.給普通用戶ubuntu添加權限

#切換回root用戶
su root
#輸入root登錄密碼
chmod u+w /etc/sudoers #給sudoers增加寫權利
vim /etc/sudoers#編輯sudoers,在找到這行 root ALL=(ALL) ALL,在他下面添加ubuntu     ALL=(ALL)     NOPASSWD: ALL
chmod u-w /etc/sudoers#取消sudoers的寫權利
su ubuntu #切換會ubuntu用戶
#vim編輯器常用命令
#英文輸入法模式下,i鍵進入編輯模式,可以通過上下左右鍵移動光標,進行編輯內容
#英文輸入法模式下,Esc鍵 退出編輯模式,輸入:wq 保存並退出,輸入q不保存退出,輸入q!強行退出

3.同步數據庫

1.安裝mysql數據庫

sudo apt-get install mysql-server -y
#設置密碼:(不顯示,請將密碼設置的與客戶端上數據庫密碼一致,方便使用)
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev -y

2.配置遠程連接權限

su root #切換root用戶
#root 登錄密碼
vim /etc/mysql/mysql.conf.d/mysqld.cnf 
# 英文輸入環境下,敲 i 鍵,進入插入模式
#上下左右鍵移動光標,註釋掉 bind-address = 127.0.0.1
#英文輸入環境下,敲Esc鍵,輸入:wq 保存退出

mysql -u root -p
#輸入密碼(不顯示),登錄mysql

GRANT ALL PRIVILEGES ON *.* TO root@% IDENTIFIED BY 123456 WITH GRANT OPTION;

flush privileges;

quit

#用Navicat鏈接服務器數據庫,如果報錯:
fuser -k 3306/tcp
#將客戶端數據庫通過數據傳輸,傳輸到服務器

3.使用Navicat 12 同步數據庫

1.創立連接

技術分享圖片

2.建立本地連接

技術分享圖片

3.建立服務器鏈接

技術分享圖片

4.傳輸數據庫

技術分享圖片

技術分享圖片

然後點擊【開始】等待傳完100%

技術分享圖片

5.查看一下數據庫是否上傳成功

mysql -u root -p
show databases;#查看所有數據庫
quit #退出數據庫

技術分享圖片

4.取消遠程連接數據庫權限

vim /etc/mysql/mysql.conf.d/mysqld.cnf
# 英文輸入環境下,敲 i 鍵,進入插入模式
#上下左右鍵移動光標,去掉 bind-address = 127.0.0.1這行的註釋
#英文輸入環境下,敲Esc鍵,輸入:wq 保存退出

4.上傳項目

su ubuntu #切換回ubuntu用戶

1.使用FileZilla上傳項目zip包

技術分享圖片

技術分享圖片

2.解壓項目zip包

sudo apt install unzip
unzip xueyiwang.zip 

技術分享圖片

5.安裝Python3.6

sudo add-apt-repository ppa:fkrull/deadsnakes #然後會提示你敲擊回車鍵
#回車
sudo apt-get install python-software-properties -y
sudo apt-get update
sudo apt-get install python3.6-dev python3.6-venv -y

sudo apt install python-pip -y

6.配置虛擬環境

1.安裝依賴包

python3.6 -m venv env36
#在當前目錄下,創建一個python3.6的虛擬環境,取名為env36,目前自帶虛擬環境只支持到3.6.2

. env36/bin/activate
#進入虛擬環境
#退出虛擬環境 deactivate


cd xueyiwang
pip3 install -r requirments.txt
#安裝相關依賴包,其中requirments.txt,是在客戶端時,通過pip freeze > requirments.txt獲得
#這個過程也許需要多等一會,比較low一點的雲服務就慢一些,親身體驗,bat裏,百度的最慢
#有可能pip要升級,如果版本過時,會提示用戶更新命令的

技術分享圖片

2.修改settings.py

cd xueyiwang
vim settings.py

技術分享圖片

#進入settings.py文件中,點擊i鍵,變為編輯模式
#通過上下左右鍵移動光標
ALLOWED_HOSTS = [公網ip]
#在最底追加
STATIC_ROOT=os.path.join(BASE_DIR,"static/")
#然後敲Esc鍵,輸入:wq 保存退出

技術分享圖片

技術分享圖片

3.測試運行項目

cd ..
python manage.py runserver 0.0.0.0:8000 
#瀏覽器訪問:公網ip+8000 
#發現啥都有啦!
#ctrl+c退出項目運行狀態

技術分享圖片

技術分享圖片

7.虛擬環境中安裝uwsgi

1.安裝

cd ~
pip3 install uwsgi

技術分享圖片

2.檢測是否安裝成功

cd xueyiwang
uwsgi --http :8000 --module xueyiwang.wsgi

#通過uwsgi啟動項目,這一步必須在項目目錄下操作執行
#ctrl+C鍵關閉項目服務狀態
#fuser -k 8000/tcp
#關閉8000端口占用
#瀏覽器訪問公網ip+8000 仍然可以正常訪問,證明uwsgi安裝成功

技術分享圖片

技術分享圖片

8.安裝配置nginx

1.安裝nginx

cd ..
sudo apt install nginx -y

技術分享圖片

2.配置uwsgi與nginx連接

cd xueyiwang
cp /etc/nginx/uwsgi_params .   #在項目目錄下執行,註意後面這個點兒別落下 
#回到~目錄下
cd ..

技術分享圖片

3.配置uwsgi.ini

vim uwsgi.ini
#進入uwsgi.ini,然後在英文輸入下敲i鍵,進入插入模式,將以下內容填充進去(通過敲i鍵進入插入模式這一步不能省略,不然粘貼進去的內容會部分丟失)
#然後在英文輸入下,Esc鍵,然後輸入冒號wq+回車,保存退出。

[uwsgi]
chdir=/home/ubuntu/xueyiwang
module=xueyiwang.wsgi:application
home=/home/ubuntu/env36
master=true
processes=10
socket=:8001
chmod-socket = 666
vacuum=true

技術分享圖片

4.配置nginx

#cd 到項目目錄下
vim xueyiwang_nginx.conf
#新建進入了nginx.conf文件
#在英文輸入法下,敲i鍵,進入可插入模式
#粘貼以下內容

upstream django {
    # server unix:/root/xueyiwang/xueyiwang.sock; # for a file socket
    server 127.0.0.1:8001; # for a web port socket (we‘ll use this first)
}
 
# configuration of the server
server {
    # the port your site will be served on
    listen      8000;
    # the domain name it will serve for
    server_name .example.com; # substitute your machine‘s IP address or FQDN
    charset     utf-8;
 
    # max upload size
    client_max_body_size 75M;   # adjust to taste
 
    # Django media
    location /media  {
        alias /home/ubuntu/xueyiwang/media;  # your Django project‘s media files - amend as required
    }
 
    location /static {
        alias /home/ubuntu/xueyiwang/static; # your Django project‘s static files - amend as required
    }
 
    # Finally, send all non-media requests to the Django server.
    location / {
        uwsgi_pass  django;
        include   /home/ubuntu/xueyiwang/uwsgi_params; # the uwsgi_params file you installed
    }
}

技術分享圖片

5.建立軟鏈接

 sudo ln -s /home/ubuntu/xueyiwang/xueyiwang_nginx.conf /etc/nginx/sites-enabled/ 

技術分享圖片

6.手機靜態文件

#cd 到項目目錄下執行
python manage.py collectstatic
#yes

技術分享圖片

技術分享圖片

7.最後測試

#修改settings.py中
DEBUG = False
cd ~
sudo service nginx restart
#重啟nginx
#啟動uwsgi
uwsgi --ini uwsgi.ini
#瀏覽器訪問http://公網ip:8000 

技術分享圖片

技術分享圖片

#瀏覽器訪問公網ip+:8000 可以看到,能夠正常訪問,靜態文件和媒體文件都在,說明nginx代理正常。

技術分享圖片

9.聯系方式

跟著一步一步做下來,應該都可以部署項目成功啦吧?如果遇到了什麽報錯,可以加我微信來問我^_^。

贊賞5元

技術分享圖片

我的微信

技術分享圖片

django2+uwsgi+nginx上線部署到服務器Ubuntu16.04(最新最詳細版)