只需三分鐘——基於 Serverless 快速部署 Laravel 專案

SkyCloud發表於2021-07-16

PHP 是搭建 Web 服務的常用開發語言之一,基於 PHP 也衍生出了眾多 Web 開發框架,Laravel 便是其中的優秀代表,它具有富於表達性且簡潔的語法,提供了眾多功能,例如模板引擎,MVC架構支援,安全性高,開發者工具,資料庫遷移等,可以滿足不同場景或規模的 Web 應用開發。

本篇教程將為您指導,如何通過 SCF Web Function,快速部署您的 Laravel 框架上雲。

模版部署 – 一鍵部署 Laravel 專案

  1. 登入 Serverless 控制檯,單擊左側導航欄的【函式服務】。

  2. 在主介面上方選擇期望建立函式的地域,並單擊【新建】,進入函式建立流程。

  3. 選擇使用【模版建立】來新建函式,在搜尋框裡篩選 WebFunc,篩選所有 Web 函式模版,選擇 Laravel 框架模版,點選“下一步”。如下圖所示:

  1. 在“配置”頁面,您可以檢視模版專案的具體配置資訊並進行修改。

  2. 單擊【完成】,即可建立函式。

函式建立完成後,您可在“函式管理”頁面,檢視 Web 函式的基本資訊,並通過 API 閘道器生成的訪問路徑 URL 進行訪問,檢視您部署的 Laravel 專案

自定義部署 – 快速遷移本地專案上雲

本地開發

  1. 首先請在本地環境裡,完成 Laravel 的開發環境搭建,參考官網文件

  2. 本地建立 Laravel 示例專案

在專案目錄下,通過以下指令,初始化 Laravel 示例應用:


composer create-project --prefer-dist laravel/laravel blog
  1. 本地啟動示例專案後,在瀏覽器裡訪問 http://0.0.0.0:9000,即可在本地完成Laravel 示例專案的訪問

$ php artisan serve --host 0.0.0.0 --port 9000

Laravel development server started: <http://0.0.0.0:9000>

[Wed Jul 7 11:22:05 2021] 127.0.0.1:54350 [200]: /favicon.ico

部署上雲

接下來,我們對本地已經建立完成的專案進行部分修改,使其可以通過 Web Function 快速部署,對於 Laravel,具體改造步驟如下:

1. 新增 scf_bootstrap 啟動檔案

在專案根目錄下新建 scf_bootstrap 啟動檔案,在裡面完成環境變數配置,指定服務啟動命令等自定義操作,確保您的服務可以通過該檔案正常啟動

注意

  • scf_bootstrap 必須有 755 或者 777 的可執行許可權
  • 如果想要在日誌中輸出環境變數,啟動命令前需要加 -u 引數,示例:python -u app.py

2. 修改檔案讀寫路徑

由於在 SCF 環境內,只有 /tmp 檔案可讀寫,其它目錄會由於缺少許可權而寫入失敗,因此需要在 scf_bootstrap 裡,以環境變數的方式注入,調整 Laravel 框架的輸出目錄:


#!/bin/bash

# 注入 SERVERLESS 標識

export SERVERLESS=1

# 修改模板編譯快取路徑,雲函式只有 /tmp 目錄可讀寫

export VIEW_COMPILED_PATH=/tmp/storage/framework/views

# 修改 session 以記憶體方式(陣列型別)儲存

export SESSION_DRIVER=array

# 日誌輸出到 stderr

export LOG_CHANNEL=stderr

# 修改應用儲存路徑

export APP_STORAGE=/tmp/storage

# 初始化模板快取目錄

mkdir -p /tmp/storage/framework/views

3. 修改監聽地址與埠

在 Web 函式內,限制了監聽埠必須為 9000,因此需要在在 scf_bootstrap 中,通過指定監聽埠:


/var/lang/php7/bin/php artisan serve --host 0.0.0.0 --port 9000

完整 scf_bootstrap 內容如下:

  1. 本地配置完成後,執行啟動檔案,確保您的服務可以本地正常啟動,接下來,登陸騰訊云云函式控制檯,新建 Web 函式以部署您的 Laravel 專案:

部署完成後,點選生成的 URL,即可訪問您的 Laravel 應用:

開發管理

部署完成後,即可在 SCF 控制檯快速訪問並測試您的 Web 服務,並且體驗雲函式多項特色功能如層繫結、日誌管理等,享受 Serverless 架構帶來的低成本、彈性擴縮容等優勢。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章