求教没有权限问题?

file
file

host('公网ip')
        ->user('root')
        ->identityFile('~/.ssh/laravel-shop-aliyun.pem')//指定登录秘钥文件路
径
        ->become('www-data')//以www-data身份执行命令
        //设置一个这台服务器独享的环境变量,名为 deploy_path,值为 ~/my_project
        //Deployer 会把花括号包裹起来的字符串替换成对应的环境变量
    ->set('deploy_path', '/var/www/laravel-shop-deployer');

ssh root@{公网ip}可以进服务器

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
leo
最佳答案
set('git_tty', true);

这个去掉

5年前 评论
讨论数量: 12

切到root也没有权限吗

5年前 评论

@pugOreo 您指的切到root是什么呢,本地homestead切到root吗,这样的话dep命令无效哦,还是我的理解有偏差

5年前 评论
leo

说明你之前用 root 账号做了一些操作,建议把整个部署目录删除重新部署

5年前 评论

@baimengran 你当前的登录的用户是vagrant吗,你可以试试su root切到root试试,不行的话,就直接把整个目录删了吧

5年前 评论

@leo 我第一次执行dep时貌似报了Permission denied (publickey)错误,我没有管,直接先做了上传.env的操作,然后就报这个错误了,删除部署目录是将laravel-shop-deployer删除吗

5年前 评论

@pugOreo 是vargrant的,你看上面截图的窗体标题,root帐户里没有deployer文件,没法执行命令的啊

file

5年前 评论

@leo

file
删除之后还是报错:flushed:
file

5年前 评论
leo

@baimengran 那就登录到远程服务器上,执行命令:

$ ll /var/www/laravel-shop-deployer/releases/1/
$ ll /var/www/laravel-shop-deployer/releases/1/storage/

看看这些文件的所属用户是什么

5年前 评论

@leo 哇,都是root

file
deploy.php内容

<?php
namespace Deployer;

//引入官方的 Laravel 部署脚本
require 'recipe/laravel.php';

// Project name 设置一个名为 application 的环境变量,值为 my_project
set('application', 'my_project');

// Project repository
set('repository', 'https://github.com/xxx/laravel-shop-advanced');

// [Optional] Allocate tty for git clone. Default value is false.
set('git_tty', true);

// Shared files/dirs between deploys 这两个环境变量是数组格式,add 函数可以往数>组里添加值
add('shared_files', []);
add('shared_dirs', []);

// Writable dirs by web server Deployer 会把这个变量下的目录加上写权限
set('writable_dirs', []);
set('allow_anonymous_stats', false);

// Hosts 添加一台服务器,服务器 IP/域名 是 project.com

host('47.99.244.126')
        ->user('root')//使用root账号登录
        ->identityFile('~/.ssh/laravel-shop-aliyun.pem')//指定登录秘钥文件路
径
        ->become('www-data')//以www-data身份执行命令
        //设置一个这台服务器独享的环境变量,名为 deploy_path,值为 ~/my_project
        //Deployer 会把花括号包裹起来的字符串替换成对应的环境变量
    ->set('deploy_path', '/var/www/laravel-shop-deployer');//指定部署目录

//定义一个上传.env文件的任务
desc('Upload .env file');
task('env:upload',function(){
        //将本地的.env文件上传到代码目录的.env
        upload('.env','{{release_path}}/.env');
});
// Tasks 定义一个名为 build 的任务
task('build', function () {
        //这个任务的内容是执行 cd ~/my_project && build 命令
    run('cd {{release_path}} && build');
});

//定义一个钩子,在deploy:shared之后执行env:update任务
after('deploy:shared','env:upload');

// [Optional] if deploy fails automatically unlock.
// 定义一个后置钩子,当 deploy:failed 任务被执行之后,Deployer 会执行 deploy:unlock 任务
after('deploy:failed', 'deploy:unlock');

// Migrate database before symlink new release.
// 定义一个前置钩子,在执行 deploy:symlink 任务之前先执行 artisan:migrate

before('deploy:symlink', 'artisan:migrate');
5年前 评论
leo
set('git_tty', true);

这个去掉

5年前 评论

请问你如何解决的?和你 一样的报错 ,

file

releases 目录是 www-data ,但是 releases 下的目录 就是 root 了

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!