阿里雲伺服器配置(django)

阿里雲伺服器配置(django)

0 前言

最近在用django搭建一個web網站,然後使用到阿里雲伺服器,摸索摸索,磕磕碰碰的算是搭起來了,對於零基礎的我,在這次學習中獲得不少知識。

1 伺服器與域名的購買

這個網上太多教程了,我用的是阿里雲,不要問為什麼,因為學生便宜。

        對於伺服器以前從沒接觸過(就在aws上註冊個賬號玩了玩),所以剛開始是兩眼一抹黑啊,不過熟悉了阿里雲的介面就好了,這就需要認真的看了,真是應了那句:世上無難事,只要肯認真。

        域名的購買,還算順利,就是備案的時間花了很久很久很久(吐槽一波)

萬事俱備,只欠東風,就缺個安靜的白天,慢慢的在伺服器上操作了

2 伺服器的部署

        話說在前面,我搗鼓這個伺服器花了不少時間,Ubuntu系統我重置了很多遍,沒辦法,誰讓我菜啊,可是我能夠堅持啊

終於不負我望,終於搞好了。

       所以今天把需要用到的命令給整理下,也方便以後的回憶

1、對於新伺服器先更新下系統

sudo apt-get update
sudo apt-get upgrade

2、安裝必要軟體

sudo apt-get install nginx
sudo apt-get install git python3 python3-pip
sudo pip3 install virtualenv

3、啟動nginx服務,啟動後在輸入local host:8080或者域名就可以看到Welocom  to nginx

sudo service nginx start

4、程式碼部署

4.1、部署檔案目錄

/home/tianmai/
sites/
tianmo.xin/
env/
esay_blog/

網站程式碼放在sites/目錄下,tianmo.xin是以網站域名來命名的資料夾,env/是python的虛擬環境目錄,esay_blog是部落格專案目錄。

4.2、進入到tianmo.xin 目錄下,然後執行virtualenv命令建立虛擬環境

[email protected]:~$ cd ~/sites/tianmo.xin
[email protected]:~/sites/tianmo.xin$ virtualenv --python=python3 env

注意: –python=python3 來指定克隆 Python3 的環境。因為 ubuntu 系統預設安裝了 Python2,如果不特別指定的話 Virtualenv 預設克隆的是 Python2 的環境。

      檢查是否建立成功,在tianmo.xin下執行ls命令,看到env資料夾則建立成功。

4.3、從github上把程式碼拉取下來

[email protected]:~/sites/tianmo.xin$ git clone https://github.com/Tianmai1207/esay_blog.git

5、 啟用虛擬環境

[email protected]:~/sites/tianmo.xin$ source env/bin/activate

6、安裝環境依賴,首先需要進入虛擬環境

[email protected]:~/sites/tianmo.xin$ source env/bin/activate
(env)[email protected]:~/sites/tianmo.xin$ cd esay_blog/
(env)[email protected]:~/sites/tianmo.xin/esay_blog$ pip install -r requirements.txt

7、收集靜態檔案

(env)[email protected]:~/sites/tianmo.xin/esay_blog$ python manage.py collectstatic

8、生成資料庫

(env)[email protected]:~/sites/tianmo.xin/esay_blog$ python manage.py migrate

9、建立超級使用者

(env)[email protected]:~/sites/tianmo.xin/esay_blog$ python manage.py createsuperuser

10、配置Nginx

首先在伺服器/etc/nginx-available/目錄下新建一個配置檔案,檔名設定為域名名字,配置內容如下

/etc/nginx/sites-available/tianmo.xin
server {
charset utf-8;
listen 80;
server_name tianmo.xin; ①
location /static { ②
alias /home/tianmai/sites/tianmo.xin/esay_blog/static; 
}
location / { ③
proxy_set_header Host $host;
proxy_pass http://unix:/tmp/tianmo.xin.socket;
}
}

① 服務的域名為tianmo.xin。

② 所有URL 帶有 /static 的請求均由 Nginx 處理,alias 指明瞭靜態檔案的存放目錄。

③ 其它請求轉發給 Django 處理。proxy_pass 後面使用了 unix 套接字,其作用是防止埠衝突,這裡就不再詳述。

11、將配置檔案加入到啟用的網站列表中去

配置檔案在 /etc/nginx/sites-available/ 下,被啟用網站目錄在/etc/nginx/sites-enabled/。可以理解為從 sites-available/ 目錄下傳送了一個配置檔案的快捷方式到 sites-enabled/ 目錄。

(env)[email protected]:~/sites/tianmo.xin/esay_blog$ sudo ln -s /etc/nginx/sites-available/tianmo.xin /etc/nginx/sites-enabled/tianmo.xin

12、安裝並使用Gunicorn

Gunicorn一般用來管理多程序,有程序掛了Gunicorn 可以把它拉起來,防止伺服器長時間停止服務,還可以動態調整 worker 的數量,請求多的時候增加 worker 的數量,請求少的時候減少。

在虛擬環境下安裝Gunicorn

(env)[email protected]:~/sites/tianmo.xin/esay_blog$ pip install gunicorn

用Gunicorn啟動伺服器程序

(env)[email protected]:~/sites/tianmo.xin/esay_blog$ gunicorn --bind unix:/tep/tianmo.xin.socket esay_blog.wsgi:application

3 檢驗結果

輸入域名 就可以看到網站能夠訪問

4 總結

        這次的伺服器的配置也算是磕磕碰碰有了個結果,其實自己在把時間戰線託的挺長的,這種做事的風格可不行哦,做為一名程式猿,哦,不。

        回想起來,從Django開發到配置,雖說是挺簡單的,也都是照著下面連結的部落格一步步實現的(對於這方面想仔細學習的請見參考連結),有時候還是需要做一些總結,本來學習就是一個過程,需要時刻的反思與回憶,比如說我看到那些機器學習的演算法,不時常回憶下,很容易忘的,哎,心酸了。
        伺服器的配置還有很多待優化的地方,哎,感慨下時間過的真快。

參考:

https://www.zmrenwu.com/post/20/