如何在 Azure 使用 Laravel + MySQL ?
Azure 除了可以跑 PHP 與 Laravel 外,更可以跑我們喜愛的 MySQL 資料庫。本文將實際在 Azure 建立 MySQL 資料庫,透過 .env
的設定,讓 Laravel 可以連上 MySQL,並透過 PhpStorm 直接管理 Azure 雲端的 MySQL 資料庫。
Motivation
在 如何使用 PhpStorm 部署 Laravel 到 Azure 一文中,我們已經可以順利在 Azure 跑 PHP 7.0 與 Laravel,唯一就是 MySQL 還沒連上,本文將以前一篇為基礎,繼續設定 MySQL 部分。
Version
PHP 7.0.8
Laravel 5.2.41
PhpStorm 2016.2
建立 Laravel 專案
請參考 如何使用 PhpStorm 部署 Laravel 到 Azure,將本機的 Laravel 專案部署到 Azure。
在 Azure 建立 MySQL 資料庫
登入 Azure portal,在 Azure 建立 MySQL 資料庫。
New -> Data + Analytics,選擇 See all
。
在 Data services
下選擇 More
。
選擇 ClearDB
的 MySQL Database
。
按 Create
建立 MySQL 資料庫。
- Database Name : 輸入資料庫名稱。
- Resource group : 可以新建 group,也可以使用目前既有 group,使用 group 的優點是方便管理,若要刪除可以整個 group 一起刪除。
- Location : 選擇離我們最近的
East Asia
。
- Pricing Tier : 選擇免費的
Mercury
。
- Legal Terms : 確認是
0.00 TWD/month
,按Purchase
。
建議將 Pin to dashboard
打勾,方便我們管理。
按 Create
開始建立 MySQL 資料庫。
MySQL 資料庫建立完成,會顯示 Healthy
。
設定本機 .env
MySQL 資料庫建立完成後,馬上來測試資料庫是否建立成功。
Settings -> General -> Properties
注意其 HOSTNAME
、PORT
、USERNAME
、PASSWORD
與 CONNECTION STRING
欄位。
其中 CONNECTION STRING
的 Database
,即為我們剛剛建立的資料庫。
將本機 .env
的設定與 Azure 的設定一致。
執行 php artisan migrate
,若能成功執行 migration,表示 MySQL 資料庫已經順利建立成功。
執行 seeding,將預設資料寫入 Azure 的 MySQL 資料庫。
設定 PhpStorm Database
目前為止,我們已經將資料 seeding 到 Azure 的 MySQL,不過還無法確定資料是否真的已經寫入成功,因此要設定 PhpStorm 的 Database 工具連到 Azure 查看資料。
點選右側的 Database
,按 +
新增資料庫連線。
Data Source -> MySQL。
將之前的 Azure 的 Host
、Database
、User
與 Password
設定填過來。
按 Test Connection
測試是否可連線成功。
若第一次在 PhpStorm 連接 MySQL,需安裝 MySQL 的 Java driver。
PhpStorm 的 Database 工具可以看到 Azure MySQL 上所有的 table,也能看到 posts
上剛剛 seeding 的三筆資料。
設定 Azure .env
資料已經上 Azure 的 MySQL了,不過在 Azure 上的 Laravel 還不認識我們剛剛建立的 MySQL 資料庫。
Laravel 雖然提供了 .env
,可以設定些敏感資訊,如資料庫連線。但預設 .gitignore
有排除 .env
,所以並沒有上 GitHub,因此也不會上 Azure。
我們須在 Azure 的 Application settings
設定資料庫連線資訊。
選擇我們的 Laravel Web App。
Settings -> General -> Application Settings
建立 DB_CONNECTION
、DB_HOST
、DB_DATABASE
、DB_USERNAME
與 DB_PASSWORD
這些 key,並將 .env
的這些值設定在這裡。
在 Azure 執行 Laravel
Azure 上的 Laravel 已經能順利讀取到 Azure 上的 MySQL 了。
Conclusion
- Azure 雖然沒有原生支援 MySQL,但透過 ClearDB 所提供的 MySQL 服務,我們依然可以在 Azure 上使用 PHP + Laravel + MySQL。
Sample Code
完整的範例可以在我的 GitHub 上找到。
Reference
- Cephas Lin, Create and connect to a MySQL database in Azure
- Mikhail Vink, Working with Windows Azure SQL Database in PhpStorm