使用 win10 子系統開發心得 Laravel envoy 簡單使用

snowlyg發表於2018-11-09

使用 win10 子系統開發心得 Laravel envoy 簡單使用

最近開發摒棄了 homestead ,轉戰 windows 子系統。在使用 windows 子系統的開發過程中,我發現一個有趣的問題 子系統沒有許可權操作本地檔案的許可權 在 win10 經常出現許可權問題(為了方便開發,我將原生程式碼軟鏈到了子系統中)。這樣一來當我們要上傳圖片,或者新建資料夾等操作的時候就會出現許可權不足的問題。

我採用了一個笨辦法,在子系統中再獨立部署一套程式碼,本地開發中要用到上傳圖片等功能的時候,使用子系統的這一套程式碼。這樣一來有個問題,就是每次都要 push pull 程式碼非常麻煩。沒有方法能更簡單方便的同步程式碼到 子系統嗎? 答案是肯定的,而且不止一種。

這裡推幾兩種方式:

1.Laravel Envoy (本篇文章要介紹的)

2.@yuanshang 的文章 PhpStorm 實現遠端程式碼同步更新

3.git hooks 實現自動專案部署


為什麼不用 hometead ,它是 laravel 官方推薦的開發環境?

首先是我用的機器不給力,使用 homestead 經常出現 cpu , 記憶體 使用率過高的問題。而且 homestead 的啟動也是感覺緩慢,同時 homestead 環境部署也是比較麻煩,要裝很多軟體過程中還會有各種不可預知的問題。

相對來說 windows 子系統,安裝更加簡單。啟動速度更快,使用中也不會出現 cpu , 記憶體 使用率過高的問題


前面說了那麼前戲,現在來到正題:如何用 Laravel Envoy
我們使用基於 nickfan/envoy-deployscript 寫的指令碼。

1.注意你的本地部署伺服器和你的遠端目標伺服器之間配置基於ssh公鑰模式的認證設定

假設要登入的機器為192.168.1.100,當前登入的機器為192.168.1.101。

首先在101的機器上生成金鑰(如果已經生成可以跳過):

$ ssh-keygen -t rsa

然後在將生成的公鑰複製到機器100上的~/.ssh/authorized_keys中,使用如下命令:

ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.100

root為需要登入到機器 100 上的身份,需要替換成需要的使用者名稱。

如果不設定後面執行任務的時候會多次請求你運程主機的密碼。

2.你的本地部署伺服器/工作站/筆記本 必須透過 composer 全域性安裝過 Laravel 的 Envoy 工具 Envoy

composer global require laravel/envoy

export PATH=$PATH:~/.config/composer/vendor/bin

3.下載或在克隆 nickfan/envoy-deployscript

git clone https://github.com/nickfan/envoy-deployscript.git

4.複製 envoy.config.example.php 和 Envoy.blade.php 到你的本地 laravel 專案根路徑,重新命名 envoy.config.example.php 到 envoy.config.php.

cp envoy.config.example.php /var/www/your_project/envoy.config.php

cp  Envoy.blade.php /var/www/your_project/Envoy.blade.php

5.設定 envoy.config.php 檔案,主要修改 $app_name(你專案專案名稱) , $server_connections (你的遠端主機配置),$source_repo(你的 git 專案地址),$deploy_basepath(你的遠端主機專案存放地址)

envoy.config.php

/**
 * Envoy deployment script config file
 */
/**
 * application name
 */
$app_name = 'your app name';

/**
 * server settings
 * conn : remote server connection string
 * owner : (optional) remote server service user/owner(group) that run the php-fpm/nginx and the application files permissions.
 * @example row set: 'webserver1'=>['conn'=>'-p 2222 vagrant@127.0.0.1','owner'=>'vagrant'],
 * @example row set: 'webserver2'=>['user@191.168.1.10 -p2222','user'],
 * @example row set: 'root@example.com',
 */
$server_connections = [
    'webserver'=>['user@191.168.1.10 -p2222','user'],
    //    'webserver1'=>['conn'=>'-p 2222 vagrant@127.0.0.1','owner'=>'vagrant'],
    //    'webserver2'=>['user@191.168.1.10 -p2222','user'],
    //    'root@example.com',
];

/**
 * @notice http/https protocol might be ask for password for your private repos
 *  and that will break the git clone progress,use git protocol instead
 * @example 'git@localhost:user/myrepo.git'
 */
$source_repo = 'your git project';
/**
 * deployment base path
 * @example '/var/www'
 */
$deploy_basepath = '/var/www/html';
  1. 你需要建立一個 .env.production 的環境變數檔案在你的 laravel 專案的根路徑中(參考 .env.example ) 這個檔案將被當做環境檔案部署到遠端伺服器上去.

6.初始化 envoy


 envoy run deploy_init

 envoy run deploy_init --branch=develop --env=development

7.執行部署:


envoy run deploy
envoy run deploy --branch=develop --env=development

到這裡,就可以使用 envoy run deploy 一鍵同步程式碼到子系統了。


如果對安裝 homestead 環境有疑問的可以參考下我的另一篇文章 在 Windows10 系統中安裝 Homestead 本地開發環境

如果對 windows 子系統有興趣的可以參考下 win10 系統下安裝 wsl + Laravel 開發環境 Ubuntu16.04LTS + WIN10


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

相關文章