最近在阿里雲服務器上成功部署了兩三個Django項目,當中經歷了很多熬夜也不能解決問題的夜晚,也曾不止一次把問題發到各種IT學習羣也找不到人來幫忙但我還是把事情做好了。下面我來總結一遍。坐好,請看。
目錄
3、使用xshell連接阿里雲服務器,如果連上了的話,如下圖:
5、在/srv文件下新建文件夾,用來存放項目文件:mkdir 文件夾名
6、初始化新建的文件夾爲git倉庫,否則無法把碼雲的項目拉進來
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