使用Nginx+uwsgi在雲服務器上部署Django項目(Ubuntu、阿里雲)

最近在阿里雲服務器上成功部署了兩三個Django項目,當中經歷了很多熬夜也不能解決問題的夜晚,也曾不止一次把問題發到各種IT學習羣也找不到人來幫忙但我還是把事情做好了。下面我來總結一遍。坐好,請看。

目錄

準備資源:

部署流程:

1、開始前確認:

2、將本地項目通過Git推到碼雲倉庫

3、使用xshell連接阿里雲服務器,如果連上了的話,如下圖:

 4、通過xshell配置項目需要的運行環境

   5、在/srv文件下新建文件夾,用來存放項目文件:mkdir 文件夾名

 6、初始化新建的文件夾爲git倉庫,否則無法把碼雲的項目拉進來

7、把碼雲倉庫的項目拉到新建的文件夾

8、進入虛擬環境中,然後進入到項目所在目錄,收集靜態文件

9、在項目虛擬環境安裝依賴包:

10、 在`mysql`數據庫中,創建相應的數據庫;

11、遠程鏈接本地項目的MySQL;

12、遷移文件,映射到數據庫中,創建相應的表:

13、安裝並配置uwsgi

14、安裝並配置nginx

15、進入項目文件夾才能運行:uwsgi --ini uwsgi配置文件.ini 

補充一下部署命令:


準備資源:

  • 阿里雲ECS:Ubuntu18
  • PyCharm:Python項目的IDE
  • Xshell:連接阿里雲服務器的命令行工具
  • FileZilla Client:可以上傳項目,但我主要拿來查看文件路徑
  • 碼雲:通過Git把項目上傳到碼雲倉庫,再用雲服務器上的Git去碼雲倉庫拉取項目
  • 筆記本:Windows 10系統,提前安裝好Git

部署流程:

1、開始前確認:

  • 本地項目在調試模式下跑起來完全沒有問題;
  • 在setting文件裏設置`ALLOW_HOST`爲你的域名,以及ip地址;
  • 在項目文件夾下新建一個空文件目錄,專門用來收集靜態文件的,如下:

  • 把debug模式關了;
  • 進入項目當前目錄,在當前項目的虛擬環境下用`pip freeze > requirements.txt`,即可將當前環境的包導出到`requirements.txt`文件中,方便在部署的時候安裝:

2、將本地項目通過Git推到碼雲倉庫

  • 在項目裏摁住shift+右鍵,進入Git;
  • 在碼雲上新建一個私人/公共倉庫,複製倉庫鏈接,如下圖:

  • 把項目推到碼雲,項目代碼如下:
 git init

 git remote add origin xxx.git   #碼雲倉庫的鏈接

 git add .

 git commit -m 'first commit'

 git pull origin master --allow-unrelated-histories

 git push origin master

ps:如果不熟悉Git,請參考:Git命令:一回生,二回熟

3、使用xshell連接阿里雲服務器,如果連上了的話,如下圖:

 4、通過xshell配置項目需要的運行環境

  • 1. 安裝好項目用到的`Python`。

    * sudo apt install python

    * sudo apt install python-pip

    * pip install --upgrade pip

  • 2. 安裝`virtualenv`以及`virutalenvwrapper`。並創建虛擬環境。

如果創建不了虛擬環境,請參考我的這篇文章:mkvirtualenv : command not found(Ubuntu)

 pip install virtualenv

 pip install virtualenvwrapper

 sudo apt install vim

    * vim ~/.bashrc 進入文件中,填入以下兩行代碼:

export WORKON_HOME=$HOME/.virtualenvs

source /usr/local/bin/virtualenvwrapper.sh

    *保存再使環境變量生效: source ~/.bashrc

  • 3. 安裝`git`:
sudo apt install git
  • 4. 爲了方便XShell或者CRT連接服務器,建議安裝`OpenSSH`:
  sudo apt install openssh-server openssh-client

  service ssh restart
  • 5. 安裝`MySQL`服務器和客戶端:
sudo apt install mysql-server mysql-client

sudo apt-get install libmysqld-dev

   5、在/srv文件下新建文件夾,用來存放項目文件:mkdir 文件夾名

我個人部署博客的是:

 6、初始化新建的文件夾爲git倉庫,否則無法把碼雲的項目拉進來

git init
git remote add origin xxx.git
git add .

7、把碼雲倉庫的項目拉到新建的文件夾

git push origin master

ps:提前準備好碼雲的賬號密碼,以及倉庫的鏈接

8、進入虛擬環境中,然後進入到項目所在目錄,收集靜態文件

python manage.py collectstatic

9、在項目虛擬環境安裝依賴包:

pip install -r requirements.txt

10、 在`mysql`數據庫中,創建相應的數據庫;

11、遠程鏈接本地項目的MySQL;

請參考我的這篇文章:本地navicat for MySQL遠程連接阿里雲的mysql

12、遷移文件,映射到數據庫中,創建相應的表:

python manage.py migrate

13、安裝並配置uwsgi

uwsgi是一個應用服務器,非靜態文件的網絡請求就必須通過他完成,他也可以充當靜態文件服務器,但不是他的強項。uwsgi是使用python編寫的,因此通過`pip install uwsgi`就可以了。(uwsgi必須安裝在系統級別的Python環境中,不要安裝到虛擬環境中)。

那配置文件怎麼寫,請參考我的文章:uwsgi配置文件ini(結合兩個成功案例分析)

14、安裝並配置nginx

1. nginx是一個web服務器。用來加載靜態文件和接收http請求的。通過命令`sudo apt install nginx`即可安裝。

2. `nginx`常用命令:

    * 啓動nginx:service nginx start

    * 關閉nginx:service nginx stop

    * 重啓nginx:service nginx restart

3.配置文件:請參考我的這篇文章 Nginx配置文件.conf

寫完配置文件後,爲了測試配置文件是否設置成功,運行命令:`service nginx configtest`,如果不報錯,說明成功。(需要在虛擬環境下測試?不需要)每次修改完了配置文件,都要記得運行`service nginx restart`。

15、進入項目文件夾才能運行:uwsgi --ini uwsgi配置文件.ini 

  這是項目就部署成功並且運行了,如果你遇到問題請留言,我們一起探討。

 

補充一下部署命令:

Nginx配置文件所在目錄: cd /etc/nginx/conf.d
 

重啓Nginx服務器: sudo /etc/init.d/nginx restart

查看Nginx錯誤日記:cat /var/log/nginx/error.log


啓動Nginx:uwsgi --ini  lezeqe_uwsgi.ini



激活虛擬環境:   workon 虛擬環境名


退出虛擬環境:deactivate

查看進程列表:  ps aux | grep uwsgi

 

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