首頁 » Django » 開發環境設置 » Python Django開發環境設置 Win 11 + VMWare + Ubuntu 20.04

一、VMWare安裝

VMWare Workstation Player

VMware Workstation Player(之前稱為 VMWare Player)是由 VMWare 公司開發的虛擬化軟體,主要用於在個人電腦上創建、運行虛擬機器。使用者可以在虛擬機器中安裝另一套作業系統,模擬完整的硬體環境,而且不會干擾到主機的作業系統。適合個人和商業使用,它提供了一個用戶友好的界面,讓初學者和非技術專業人士能夠輕鬆地使用虛擬化技術。一些常見的用途包括軟體開發、應用測試、演示展示、教育培訓等。

VMware Workstation Player 的一些關鍵特點包括:

  • 設置簡單:直觀的安裝過程和易於使用的管理界面。
  • 隔離與安全:虛擬機器完全隔離於宿主操作系統,提供額外的安全層。
  • 支援多種作業系統:可以安裝包括 Windows、Linux 和其他作業系統在內的多種作業系統。
  • 共享資源:可以設定虛擬機器共享宿主機的CPU、記憶體、磁碟空間和其他資源。
  • 快照與複本:可以創建虛擬機器的快照,這樣在出現錯誤時可以迅速恢復到之前的狀態。
  • 互操作性:與 VMware 的其他產品如 VMware vSphere 互相兼容,方便管理。

雖然 VMWare Workstation Player 是免費提供給個人使用者的,但商業使用則需要購買授權。對於要求更高的專業人士,VMware 也提供了一個功能更加強大的版本——VMware Workstation Pro。Pro版本提供了更多進階功能,包括支援創建複雜虛擬網絡環境、更高效率的虛擬機器管理等。

下載並安裝

請到官網點擊免費下載,目前最新版本為17.5,可使用最新版本,如果遇到問題可重新安裝並選擇較舊的版本。

二、安裝Ubuntu 20.04

介紹

Ubuntu 20.04 LTS(代號為”Focal Fossa”)是由Canonical Ltd發布的Ubuntu Linux發行版的一個版本,它於2020年4月23日正式推出。作為一個長期支持(Long-Term Support,LTS)版本,Ubuntu 20.04 將提供為期五年的官方支持和更新,直到2025年4月。

Ubuntu 20.04 引入了以下幾個重要特性和改進:

  1. GNOME 3.36 桌面環境:Ubuntu 20.04 使用了最新的 GNOME 桌面環境,帶來了許多用戶界面美化和效能提升,例如改善了系統的尋找功能、對話框和快速設定。
  2. 核心更新:Ubuntu 20.04 改用了更新的 Linux Kernel 5.4,它引入了多項新功能,包括對微軟的 exFAT 文件系統的支持以及改善的硬件支持。
  3. 更新的應用軟體和套件:這個版本包含了許多更新的軟體包,包括最新版本的 Firefox 網頁瀏覽器、LibreOffice 辦公室軟體套件等。
  4. 新的安裝程序功能:Ubuntu 20.04 提供了對 ZFS 文件系統的實驗性支持以及更為便捷的安全啟動支持。
  5. 改善的隱私和安全:內建的「隱私設定」選項現在更加全面,使用者可以更容易地控制位置、鏡頭、微鍵盤和麥克風等隱私敏感部分的訪問。系統還在安全性上進行了許多鞏固,包括啟動默認的 UFW 防火牆和應用AppArmor安全策略。
  6. 改良的多顯示器支持:對於使用多個顯示器的用戶來說,Ubuntu 20.04 改進了對顯示器的支持,特別是在HiDPI和混合DPI環境中,提高了用戶體驗。
  7. 即時主題和細微設計:Ubuntu 20.04 在界面上提供了新的主題和圖標設計,塑造了更為現代化和一致的外觀和感覺。

Ubuntu 20.04 LTS承襲了Ubuntu系列的易用性和免費開源的特點,是適合桌面用戶、開發者以及企業用戶在伺服器和雲環境中使用的一個穩定和可靠的操作系統版本。

下載及安裝

完成VMWare下載及安裝後,到Ubuntu官網下載Ubuntu 20.04.6 LTS (Focal Fossa)映像檔,選擇Desktop image即可。

緊接著開啟VMWare,並選擇Create a New Virtual Machine。

選擇剛剛下載的Desktop Image路徑,並點選Next >。

設定帳號及密碼,通常我會把Full name跟User name設定相同。

可自由設定Virtual machine name,Location是該系統檔案儲存位置,可以保持原樣。

根據電腦硬體設備選擇要切分給虛擬機的硬碟容量。

如果條件允許,可設定較多RAM及CPU,提升開發時效率。

點選Finish,並等待系統安裝完成,安裝時間視你的裝置效能而定。安裝完成後會有問你要不要Next的東西,可以直接Next就好,也可以參考視窗上說明,自行選擇。

安裝完成後開啟設定,並選擇Date & Time,為了避免後續開發受到伺服器及用戶端不同時區影響,我們將時區設定為UTC+0,前後端在傳輸時間時使用時間戳記,避免造成自己的困擾。

大家可以安裝自己慣用的IDE及瀏覽器,這裡示範安裝Chrome及VSCode。

安裝Google Chrome

在你的Ubuntu上,直接搜尋Google Chrome或是前往這個連結點選下載。

選擇副檔名為.deb的安裝檔,這是Debian和Ubuntu使用的安裝檔格式,點選接受並安裝。

下載完成後直接點選檔案。

雖然可能會有點慢,但應該會跳出安裝頁面,點選Install開始安裝。

等待安裝完成就可以使用啦。

安裝VSCode

直接搜尋VSCode或點選連結前往下載VSCode。選擇.deb格式檔案,等待下載完成,並點擊下載好的檔案。

點選Install並等待安裝完成。

為了方便開啟,可點選右鍵加到favorite。

VSCode延伸模組推薦

  • Chinese (Traditional) Language Pack for Visual Studio Code
  • IntelliCode
  • IntelliCode API Usage Examples
  • Prettier – Code formatter
  • Python
  • Python Indent
  • autopep8

三、Python開發環境設置

首先我們開啟Terminal(建議加至favorite),

接著,更新軟體的最新資訊及列表:

sudo apt update

sudo – 維基百科,自由的百科全書 (wikipedia.org)

sudo可以讓你暫時提高權限,但你必須輸入你的密碼

再來,更新目前已安裝的軟體到最新版本,如果系統提示需要重新啟動就直接重新啟動:

sudo apt -y upgrade

Ubuntu 20.04已經預先幫我們安裝了Python,在Terminal直接輸入

python3

根據輸出我們可以看到版本為Python 3.8.10,後續開發上我們會直接使用這個版本。確認完Pyhton版本後,輸入exit()並按下enter可回到一般的Terminal。雖然Ubuntu都會預先幫我們安裝Python,但並沒有相關的套件管理工具,所以接下來我們要安裝的就是Python的套件管理工具pip

sudo apt -y install python3-pip

由於開發過程中容易安裝許多奇怪的東西,今天如果什麼東西都直接安裝在母環境,那你的母環境不用多久就會亂糟糟,因此我們也需要一個工具來建立虛擬環境,在這個環境中你可以隨意測試,也可以根據你的專案需求變更套件版本,避免影響到其他專案,這裡使用的是Python的virtualenv套件,透過這個套件協助我們建立及管理Python開發的虛擬環境:

sudo pip3 install virtualenv

接下來就讓我們來實際建立一個虛擬環境吧,這裡建立的虛擬環境名稱是VENV:

virtualenv VENV

到目前為止,如果你都照著我的步驟做,你的虛擬環境路徑應該會是在家目錄下的VENV 資料夾,我們可以在Terminal輸入pwd來確認當前路徑。

Ubuntu是linux的一種版本,在linux中,家目錄就是屬於你這個使用者的目錄,以這個例子來說,由於我設定的使用者名稱是alfred,所以我的家目錄路徑是/home/alfred

確認你的Terminal當前路徑在你的家目錄後,我們可以在Terminal中輸入ls -l指令來檢視家目錄下是否有VENV這個資料夾。

接著再在Terminal輸入以下指令:

~/VENV/bin/python3

如果跟下圖有相同結果就代表你成功建立了一個虛擬環境了。跟前面確認Pyhton版本一樣,輸入exit()並按下enter可回到一般的Terminal。

如果你跟我有相同的結果,恭喜你,你的Python開發環境設定完成了,下一步將會是開發Django的相關設置

至此,我們已經用了一些Linux命令和相關知識。如果你閱讀本文的初衷僅是希望在Ubuntu系統上搭建一個Python Django的開發環境,那麼對Linux的深入了解或許並非必須。畢竟,本篇文章的重點在於指導如何利用Django進行有效率的後端開發。

對於我來說,選擇在Linux環境下進行開發的最大價值,在於它讓我更貼近實際伺服器運作的生態。這樣一來,在開發的過程中,我能同時注意到在正式部署系統時可能需要額外安裝的套件,以及與Python相關的依賴包,在Linux上的安裝需求。

然而,這樣的要求源於我目前作為一名全端工程師的工作範疇,我需要兼顧前端和後端的開發、系統測試(QA)以及系統維運等多重職責。這迫使我深入瞭解廣泛的技術知識,只有這樣我才能在工作中游刃有餘。可惜的是,儘管工作內容益發複雜,我的薪資似乎並沒有因此而有所提升…

四、Django設置

安裝Python的Django套件

接下來是Django的相關設置,如果你的Terminal已經關閉,請再把Termina開啟

首先讓我們啟動虛擬環境,每次關掉Terminal都要記得把他開起來,不然你的Python很容易用到母環境,

source ~/VENV/bin/activate

虛擬環境如果啟動成功,在指令列的最前面會出現(VENV)

虛擬環境如果啟動成功,在指令列的最前面會出現(VENV)

安裝Python的Django套件:

pip3 install django

接著安裝Python的django-admin套件,後續建立專案就靠這個工具:

pip3 install django-admin

再來,就讓我們正式建立一個Django專案吧,專案名稱取名為AlfredWiki

django-admin startproject AlfredWiki

在Django的專案底下,我們會建立很多APP,常見的一種劃分方式為依照不同功能建立不同APP,實務上會依照PM傳達的專案需求及複雜度進行規劃,以利於團隊協作和未來擴展。

為了建立APP,先接當前目錄切換至Django專案:

cd AlfredWiki

此時,我們可以嘗試建立一個APP,名稱為TestAPP:

python manage.py startapp TestAPP

接著讓我們來修改程式設定吧,首先開啟你的VSCode,並打開家目錄底下的firstProjet資料夾,其中你可以發現裡面還有一個firstProjet資料夾,這個跟專案名稱相同的資料夾,就是這個專案的主要設定,找到settings.py並打開他。

修改settings.py

ALLOWED_HOSTS

第一個設定是ALLOWED_HOSTS,這個設定用途為Django網站可以提供服務的主機/網域的字串清單。這是一種防止HTTP主機標頭攻擊的安全措施,即使在許多看似安全的Web伺服器設定下也可能發生這種攻擊。詳細設定方式可參考官方文件。目前我們先使用萬用字元'*'允許透過所有HOST訪問該網站,通常除非是開發模式,不然不建議這麼做,但即使這邊設定'*',我也會在網頁伺服器設定僅允許透過特定HOST訪問該網站。

ALLOWED_HOSTS = ['*',]

INSTALLED_APPS

接著我們把剛剛建立的APP正式納入這項專案。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'TestAPP',
]

MIDDLEWARE

如果你知道什麼是CSRF,那妳可以將CsrfViewMiddleware註解掉,因為Django的這個東西有點難用,但如果你不知道CSRF是什麼,我非常建議你即使難用還是要用,未來有機會會介紹如何自製替代的CSRF防禦。

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    #'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

Session

當在Django中選擇使用Session或Cookie時,可以根据以下原則進行決策:

  1. 資料敏感程度:對於敏感信息,選擇使用Session。因为Session數據存放在伺服器端,更安全。
  2. 數據大小:如果需要存储的數據量較大,選擇Session。Cookie有大小限制,通常不超過4KB。
  3. 有效期和持久性:需要長時間保持的數據,可以選擇Cookie,如用戶偏好設定。Session通常在用戶會話結束後被清理。
  4. 擴展性與性能:如果應用需支持大規模用戶,避免增加伺服器負擔,輕量數據可考慮使用Cookie。
  5. 安全性:Session比Cookie更安全,特別是通過HTTPS傳輸Session ID可以進一步提高安全性。

對於敏感或大型數據,以及需要較高安全性的情境,選擇使用Session;對於需要長期存儲且對安全要求不高的輕量數據,可以選擇使用Cookie。

Django預設使用資料庫儲存Session,但我習慣使用Redis來儲存Session,因為使用Redis儲存Django的Session比使用資料庫有以下優點:

  1. 速度快:Redis基於内存運作,讀寫速度比硬盤基的資料庫快很多。
  2. 高效的擴展性:在面對大量並發訪問時,Redis更容易擴展。
  3. 自動過期處理:Redis可以自動移除過期的Session。

總的來說,Redis因其高性能和良好的擴展性而被視為處理Session的佳選,尤其適合於流量大的場景。

首先,我們再度開啟Terminal並依序輸入以下指令(參考自Redis官網):

sudo apt install lsb-release curl gpg
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
sudo apt-get update
sudo apt-get install redis
pip3 install redis

在透過以下指令,讓Redis在系統啟動時同步啟動:

sudo systemctl enable redis-server

完成後我們再重啟一下Redis

sudo systemctl restart redis-server

接著回到settings.py,在最尾部加入以下內容,指定快取資料庫使用Redis,並將Session儲存於快取資料庫,同時讓Session在關閉瀏覽器時或超過30分鐘過期,避免耗用記憶體:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.redis.RedisCache',
        'LOCATION': 'redis://127.0.0.1:6379',
    }
}

SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
SESSION_EXPIRE_AT_BROWSER_CLOSE = True
SESSION_COOKIE_AGE = 30 * 60

靜態檔案static

在settings.py找到STATIC_URL,

STATIC_URL = '/static/'

並在其後方加入以下內容,注意不要覆蓋到原有STATIC_URL,設定該專案的靜態檔案資料夾位置,

import os

STATICFILES_DIRS = [
  os.path.join(BASE_DIR, 'static'),
]
STATIC_ROOT = '/var/www/staticfiles'

同時在專案目錄下建立static資料夾

模板檔案Template

在settings.py中找到TEMPLATES這個List,並修改如下(調整DIRS):

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

同時在專案目錄下建立templates資料夾

MySQL

Django默認使用的SQLite和MySQL是兩種不同類型的關係型數據庫系統,每種都有其特點和適用情境。以下是它們的一些優劣比較:

SQLite:

  • 優點
  • 易於設定:SQLite不需要單獨的服務器進程或配置文件。它直接嵌入於應用中,並使用單個文件存儲數據。
  • 低資源要求:運行SQLite需要的系統資源較少,非常適用於輕量級應用和開發環境。
  • 高度便攜性:數據庫只是一個文件,可以輕鬆從一個位置拷貝到另一個地方,對於測試和部署都非常方便。
  • 原生支援:Django內建對SQLite的支持,從而減少初學者的學習曲線。
  • 劣勢
  • 並發限制:當有寫操作時,SQLite會對整個數據庫文件加鎖,這意味著在高並發情況下性能受限。
  • 功能限制:比起其他更強大的數據庫系統,SQLite在功能上可能有限制,如較少的數據類型和高級特性。
  • 不支持大型系統:當應用需要處理大量數據和用戶時,SQLite的限制就顯得尤為重要了。

MySQL:

  • 優點
  • 高性能:MySQL在處理大量數據和高並發時表現出良好的性能。
  • 功能豐富:比SQLite提供更多的高級功能,比如存儲過程、觸發器、分區等。
  • 可擴展性:MySQL可以優化並配置以支持從中型到大型應用和服務。
  • 廣泛支持:MySQL擁有大量開發社區支持,以及許多相關工具和界面。
  • 劣勢
  • 設置複雜性:啟動和維護MySQL服務需要相比SQLite更多的配置和管理工作。
  • 資源要求:相較於SQLite,MySQL作為一個獨立服務器運行,需要較多的系統資源。
  • 便攜性:雖然可以導出和導入數據庫,但MySQL的數據庫文件相比SQLite的單個db文件來說,便攜性不那麼強。

當你的Django應用是個人或小規模項目時,SQLite 是個很好的選擇,方便開發和迅速原型制作。然而,對於預期有高流量或需要更精細數據操作功能的生產環境,則通常建議使用MySQL 或其他成熟的數據庫系統(比如 PostgreSQL)。

這裡我們示範如何將SQLite資料庫替換為MySQL資料庫,讓我們開啟Terminal,首先安裝的是MySQL Server。

sudo apt install mysql-server

接著我們要設定一個可以透過帳號密碼遠端登入的使用者,讓我們啟動MySQL Command Line。

sudo mysql

接下來要建立一個有帳號密碼的使用者,請自行替換remoteUserremoteUserPass

CREATE USER 'remoteUser'@'%' IDENTIFIED BY 'remoteUserPass';

賦予可遠端連線使用者權限,這裡為了示範方便,直接賦予最高權限,詳細權限未來有機會會有一篇文章專門介紹。請注意remoteUser要換成你剛剛設定的remoteUser。

GRANT ALL PRIVILEGES ON *.* TO 'remoteUser'@'%' WITH GRANT OPTION;

重整權限設定,使設定生效。

FLUSH PRIVILEGES;

在離開MySQL Command Line前我們最後再Create一個Schema給這個專案使用。

CREATE SCHEMA `AlfredWiki` ;

接著輸入exit並按下enter,離開MySQL Command Line。

跟Redis一樣,我們設定開機自動啟動。

sudo systemctl enable mysql

重啟MySQL確保所有設定生效。

sudo systemctl restart mysql

為了讓Python可連接MySQL,有些相依性套件需要安裝。

sudo apt install python3-dev libmysqlclient-dev

安裝Python連接MySQL的套件。

pip3 install mysqlclient
Exception: Can not find valid pkg-config name.

如果遇到Exception: Can not find valid pkg-config name.這個錯誤,請依序執行以下指令:

sudo apt install pkg-config
export MYSQLCLIENT_LDFLAGS=$(pkg-config --libs mysqlclient)
export MYSQLCLIENT_CFLAGS=$(pkg-config --cflags mysqlclient)

即可成功安裝Python連接MySQL的套件。

pip3 install mysqlclient

最後讓我們修該settings.py,找到以下這段並註解掉。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

接著換上這段,就完成MySQL的設定了,其中NAME是前面設定的SchemaUSER和PASSWORD前面如何設定,這邊就要做相對應的輸入。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'AlfredWiki',
        'USER': 'remoteUser',
        'PASSWORD': 'remoteUserPass',
        'HOST': 'localhost',
        'PORT': '3306',
        'OPTIONS': {
            'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"
        },
    }
}

MONGODB

結合關聯式資料庫(RDB)和NoSQL資料庫(如:MongoDB)在網站開發中是常見的做法。在使用Django時,預設支援像是MySQL這樣的RDB,這類資料庫擅長處理結構化數據,透過嚴謹定義的模式(schema),提供了強大的事務支援,保證數據的一致性。對於需要複雜查詢和與數據之間有嚴密關係的情境,如金融交易系統,RDB是首選。

另一方面,NoSQL資料庫如MongoDB,則適合處理大量且結構多樣、不規則的數據。MongoDB等NoSQL資料庫對於快速迭代開發、大數據儲存需求,以及對於靈活性有高要求的應用場景更為適合。這些情況包括社交網路數據、即時大規模日誌處理或分散式數據儲存等。

NoSQL資料庫對於特殊字符和不同編碼的支持性較好,這在處理多語言內容或非規範化數據時特別有用。然而,它們通常不提供像是ACID事務這類的嚴格一致性保障。

具體到應用場景:若網站需儲存用戶行為記錄、社交互動數據等,這時候使用NoSQL能提供更高效、靈活的數據儲存方案。而對於需要處理交易記錄、用戶資訊等結構化數據,關聯式資料庫則是更合適的選擇。

最佳實踐是根據具體需求,選擇適合的資料庫或組合使用多種資料庫以達到最佳的性能和靈活性。在Django中,可以通過定製後端或使用第三方套件來整合MongoDB或其他NoSQL資料庫,以滿足開發需求,我通常使用的是MongoDB官方的Python模組進行操作,MongoDB官方提供的GUI可讓你輕鬆操作資料,同時也能直接幫你產生Python程式碼,在開發過程中非常方便。

接著就要在我們的虛擬機中安裝MongoDB伺服器,方便測試。一樣我先們打開Terminal,接著在Ubuntu安裝gunpg及curl套件:

sudo apt-get install gnupg curl

匯入MongoDB public GPG key:

curl -fsSL https://pgp.mongodb.com/server-7.0.asc | \
   sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg \
   --dearmor

建立/etc/apt/sources.list.d/mongodb-org-7.0.list

echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list

重新載入本地套件包:

sudo apt-get update

安裝最新MongoDB:

sudo apt-get install -y mongodb-org

為了防止意外升級,設定MongoDB為目前版本:

echo "mongodb-org hold" | sudo dpkg --set-selections
echo "mongodb-org-database hold" | sudo dpkg --set-selections
echo "mongodb-org-server hold" | sudo dpkg --set-selections
echo "mongodb-mongosh hold" | sudo dpkg --set-selections
echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
echo "mongodb-org-tools hold" | sudo dpkg --set-selections

設定開機自動啟動MongoDB:

sudo systemctl enable mongod

重新啟動MongoDB:

sudo systemctl restart mongod

MongoDB預設沒有帳號密碼保護,非常不安全,接下來我們將設定MongoDB登入用的帳號密碼。

進入Mongo Shell:

mongosh

切換至admin資料庫:

use admin;

建立root使用者,並賦予admin資料庫的root權限,其中user跟pwd請換成另外的帳號跟密碼,並強烈建議user不要設置為root,避免太容易被別人猜中最高權限(root權限)的帳號,增加一層保護。

db.createUser({
    'user': 'root',
    'pwd': 'password',
    'roles': [{'role': 'root', 'db': 'admin'}]
})

接下來建立一個使用者,存取一般用途的資料庫,這邊示範資料庫為AlfredWiki,後續可根據專案需求自行增減或調整。role的設定請參考官方文件

db.createUser({
    'user': 'user',
    'pwd': 'password',
    'roles': [
        {'role': 'readWrite', 'db': 'AlfredWiki'},
    ]
})

輸入exit退出Mongo Shell。接著要修改設定檔,先安裝vim工具:

sudo apt install vim

使用vim工具開啟設定檔:

sudo vim /etc/mongod.conf

按一下鍵盤上的a鍵,進入編輯模式,並在檔案的最後加上以下設定:

security:
  authorization: enabled

完成後按一下esc鍵,然後依序按下:wq,即可保存並離開。設定檔修改完成後需要重啟資料庫:

sudo systemctl restart mongod

五、小結

透過本文的指引,我們已經成功地在 VMWare 虛擬環境中安裝好了 Ubuntu 20.04,並在其中配置了一個適合開發的工作環境,包括了瀏覽器 Google Chrome 和代碼編輯器 VSCode,以及VSCode的一些推薦延伸模組,為後續的 Python 和 Django 開發打下了堅實的基礎。

隨後,我們又走過了 Python 開發環境的設置,並重點介紹了如何在 Django 中安裝 Python 套件以及進行基本配置,涵蓋了 ALLOWED_HOSTS、INSTALLED_APPS、MIDDLEWARE,以及處理 Sessions、靜態檔案、模板檔案和MySQL 數據庫連接等重要設置。這一切為順利開發 Django Web 應用提供了必要條件。

值得一提的是,雖然 Django 默認支持 SQLite 作為開發階段的輕量級數據庫選擇,本文中我們還深入探討了如何配置 MySQL,以便於在需要更強大數據處理能力的情況下供我們使用。

整個設置過程中,我們不但涉及了具體的操作步驟,還討論了每項服務在 Django 開發中的作用和意義,使得讀者能夠不只是步驟的跟隨者,更是原理的理解者。

總而言之,這篇技術文章不僅為希望能在 VMWare 虛擬機上搭建 Django 開發環境的開發者提供了一套從零到一的詳細指南,同時也為對 Django 框架有興趣的讀者提供了一個快速入門的渠道。希望這篇文章能夠幫助你順利啟動你的 Django 學習之旅,並在此基礎上建立起更廣博的開發技能。

後續文章也會圍繞這個Django APP的設定進行,逐步讓這個Django APP變成完整的專案,具備各項功能。

2 Replies to “Python Django開發環境設置 Win 11 + VMWare + Ubuntu 20.04

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *