我正在使用 PHP 部署器 6.6.0 来部署基于 Laravel 的网站。
每次部署时它都会创建一个新版本。目前,我有超过 10 个版本,它占用了大量磁盘空间。
我不想保留超过最后 3 个版本的版本,并且需要旧版本自动滚动。
如何指定要保留的最大版本数?
我使用 Docker 创建了一个新的 Digital Ocean 服务器(使用Laradock),并使我的 Laravel 网站运行良好。
\n\n现在我想使用Deployer自动化部署。
\n\n我认为我唯一的问题是我无法让 Deployer 运行docker exec -it $(docker-compose ps -q php-fpm) bash;,这是我成功手动使用进入适当 Docker 容器的命令(在使用 SSH 从我的本地计算机连接到 Digital Ocean 服务器之后)。
当 Deployer 尝试运行它时,我收到以下错误消息:
\n\n\xe2\x9e\xa4 Executing task execphpfpm\n[1.5.6.6] > cd /root/laradock && (pwd;)\n[1.5.6.6] < /root/laradock\n[1.5.6.6] > cd /root/laradock && (docker exec -it $(docker-compose ps -q php-fpm) bash;)\n[1.5.6.6] < the input device is not a TTY\n\xe2\x9e\xa4 Executing task deploy:failed\n\xe2\x80\xa2 done on [1.5.6.6]\n\xe2\x9c\x94 Ok [3ms]\n\xe2\x9e\xa4 Executing task …Run Code Online (Sandbox Code Playgroud) 我通过 cmd 成功连接到服务器,但发送部署命令后出现错误
\nerror getsockname failed: Not a socket
从项目目录在 cmd 中运行命令\ncall vendor/bin/dep deploy st1
部署程序版本:6.8.0\nPHP 版本:7.3\n我的操作系统:Windows 10 x64
\n\xe2\x9c\x88\xef\xb8\x8e Deploying master on st1.XXXX.ru\n\n\xe2\x9e\xa4 Executing task deploy:prepare\n\n\xe2\x9c\x94 Executing task deploy:failed\n\n\xe2\x9e\xa4 Executing task deploy:unlock\n\nIn Client.php line 103:\n\n The command "rm -f /home/admin/web/st1.XXXX.ru/.dep/deploy.lock" failed. \n\n Exit Code: -1 (Unknown error)\n\n Host Name: st1.XXXX.ru\n\n ================\n getsockname failed: Not a socket\n packet_write_poll: Connection to UNKNOWN port -1: Permission denied \nRun Code Online (Sandbox Code Playgroud)\n 通过命令将其部署到服务器后:
bin/dep deploy
Run Code Online (Sandbox Code Playgroud)
在“ releases”文件夹我有一个名为文件夹喜欢1,2,3,...
我如何将其更改为时间戳,所以在部署命令之后,我将得到类似这样的信息,20160425120500而不是1
bin/dep --version
Deployer 6.0.5
Run Code Online (Sandbox Code Playgroud) 我正在使用 PhpStorm 和Deployer,因此我包含deployer.phar在 PHP Include 路径中以在文件中自动完成deploy.php。包含整个deployer.pharPhpStorm 后抱怨重复的类定义 - 一个来自我的应用程序供应商目录,第二个来自deployer.phar供应商目录。
是否可以以某种方式配置 PhpStorm Include 路径,以便仅src包含 PHAR 文件的某些部分(例如仅包含目录)?这不起作用:
/path/to/deployer.phar/src
Run Code Online (Sandbox Code Playgroud)
也不是这个:
phar:///path/to/deployer.phar/src
Run Code Online (Sandbox Code Playgroud)
我想避免安装deployer/deployer为作曲家开发包。
编辑
看来即使在包含路径中添加单个 PHAR 文件也是一种黑客行为。
我正在使用 PHP 部署程序,它是一个基于符号链接的部署工具,opcache:reset在部署后调用。
最近,我在部署后的 PHP-FPM 进程中遇到了段错误。
这表现为 PHP 日志中的段错误/内存耗尽警告正在输出或来自 Apache 的 500/503 错误。
多年来这一直运作良好,所以我很困惑到底是什么导致了这种情况的发生。
在第一个段错误之后,我可以在受影响池的每个页面刷新上重现此情况。
如果我重新启动 PHP-FPM 进程,第一次会正确提供页面,然后出现段错误。
我怀疑这与 Opcache 有关,因为如果我删除 Opcache 缓存文件并重新启动 PHP-FPM,问题就会消失。如果我禁用opcache.file_cache,那么就没有问题了。请注意,我并不专门使用文件缓存。
当我(不科学地)检查 PHP 在内存耗尽错误期间报告的文件的 opcache 版本时,我注意到它们似乎被截断或丢失了未发生段错误的 opcache 文件的先前版本中存在的数据。当我删除那些特定的 opcache 文件并重新启动 PHP-FPM 时,问题就消失了。因此,我认为 opcache 文件在部署之间似乎已损坏。
环境:
我的 opcache 配置:
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=0
opcache.memory_consumption=96
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=4096
opcache.max_wasted_percentage=5
opcache.validate_timestamps=1
opcache.revalidate_path=0
opcache.revalidate_freq=2
opcache.max_file_size=0
Run Code Online (Sandbox Code Playgroud)
核心转储:
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-120.el7
Copyright (C) 2013 Free …Run Code Online (Sandbox Code Playgroud) 部署者版本4.1.0
运行时dep deploy test报告以下错误:
PHP致命错误:调用未定义的函数服务器()
server ftn在配置文件中定义如下:
// Configure servers
server('test', 'test.server.com')
->user('user')
->identityFile('~/.ssh/id.pub', '~/.ssh/user', 'password')
->stage("test")
->env('deploy_path', '/var/www/project.com');
Run Code Online (Sandbox Code Playgroud)
根据Deployer网站,这几乎是标准.还有其他人遇到过这个问题吗?如果是这样你是如何解决的?
我想要实现的是,php7.2-fpm通过php-deployer重新加载服务。
根据php-deployer's documentation,它可以像下面的代码一样完成:
task('reload:php-fpm', function () {
run('sudo /usr/sbin/service php7-fpm reload');
});
after('deploy', 'reload:php-fpm');
Run Code Online (Sandbox Code Playgroud)
但是,我在部署时遇到以下错误:
? 执行任务部署:reload_php_fpm
? 在 [生产]
须藤服务 php7.2-fpm 重新加载
在 PhpSecLib.php 第 124 行:
[RuntimeException]
sudo: no tty present and no askpass program specified
系统信息:
PHP 7.2 版
Ubuntu 18.04 LTS
PHP-Deployer 6.3.0 版
你知道我该如何解决这个问题吗?
我正在尝试使用Deployer部署我的Yii2应用程序
我的服务器是Ubuntu server 16.4.10 LTS,我已经配置好了一切,当我只是使用filezilla将项目复制到服务器时一切正常但是当我用deployer部署它时我在google chrome中得到了这个错误:
Redirected too many times
Run Code Online (Sandbox Code Playgroud)
我尝试过几次不同的配置部署,但我得到了同样的错误.
ps:我已经使用部署程序为我的其他项目使用此配置类型,它没有任何问题.
我正在尝试使用Deployer从本地将Laravel应用程序部署到共享托管中(使用laravel配方)~/Code/project_foo。
关键是当我通过连接到共享托管服务器时ssh,默认php -v版本是5.6.33。我确认可以通过调用php70 -v甚至整个路径(例如)来动态更改php版本/usr/local/bin/php70 whatever。
关键是我不知道如何告诉部署者使用php70必需的命令来调用命令,否则会composer install失败。
所以在终端中,我位于Laravel项目的根目录下,我只是简单地调用:
dep deploy
我deploy.php很凌乱而且非常简单,但这只是概念的证明。我正在尝试找出所有问题,然后使它看起来更好。
{{bin/php}}
但我不知道如何覆盖该值以匹配托管告诉我的使用:
/usr/local/bin/php70
请给我任何提示,一旦连接到远程主机/服务器,如何强制脚本使用不同的PHP版本。
这是整个脚本:
<?php
namespace Deployer;
require 'recipe/laravel.php';
//env('bin/php', '/usr/local/bin/php70'); // <- I thought that this will work but it doesn't change anything
// Project name
set('application', 'my_project');
// Project repository
set('repository', 'git@github.com:xxx/xxx.git');
// [Optional] Allocate tty for git clone. Default value is false. …Run Code Online (Sandbox Code Playgroud)