使用 win10 子系统开发心得 Laravel envoy 简单使用
1

使用 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


有梦想的咸鱼

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!