前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >composer私有仓库搭建之系列二:web页面实现仓库列表更新

composer私有仓库搭建之系列二:web页面实现仓库列表更新

作者头像
joshua317
发布2020-06-15 10:53:00
7480
发布2020-06-15 10:53:00
举报
文章被收录于专栏:技术博文

诉求:在仓库列表显示的页面上,添加一个更新的按钮,实现仓库更新

分析:仓库生成或者更新的列表的命令是

代码语言:javascript
复制
全量生成或者更新:
php bin/satis build satis.json public/

指定生成或者更新
php bin/satis build satis.json public/ test/test1 test/test2

可以通过php的shell_exec函数实现此功能

主要代码如下:

全量生成或者更新:

代码语言:javascript
复制
<?php
$output = shell_exec('php /data/wwwroot/satis/bin/satis build /data/wwwroot/satis/satis.json /data/wwwroot/satis/public/');
echo "<pre><p style='backgroud-color:#ccc;'>$output</p></pre>";
exit();

指定生成或者更新

代码语言:javascript
复制
<?php
//获取包名,注意此处的安全性处理,我这里就略过了
if (! empty($_REQUEST)) {
    $packName = $_REQUEST['packName'];
    //指定包生成或者更新
    $output   = shell_exec('php /data/wwwroot/satis/bin/satis build /data/wwwroot/satis/satis.json /data/wwwroot/satis/public/ ' . $packName);
    echo "<pre><p style='backgroud-color:#ccc;'>$output</p></pre>";
    exit();
}

注意几点问题 

1.权限问题

因为网页版更新,是通过nginx+php-fpm来处理,所以注意php-fpm服务的启动用户,我的是www用户

a.首先确保你有www用户,没有的话需要提前创建www用户,这里就不赘述了;

b.其次要确保www用户有php的可执行权限,可以通过shell_exec('php -i');测试是否有可执行权限

c.是否有目录的可执行权限,涉及到的目录有

代码语言:javascript
复制
/data/wwwroot/satis/bin/satis 
/data/wwwroot/satis/satis.json 
/data/wwwroot/satis/public/

2.用户密码问题

首次执行之前,需要在服务器上通过php的cli模式手动触发一次,这个主要目的就是存储账号和密码,因为命令在执行时候会拉取代码,这个时候会提示输入gitlab的账号和密码,记得选择yes就行了,账号或者密码一般会存储在用户的家目录下.composer目录里面

这样在网页点击更新按钮的时候就可以正常更新了。

如果过程中遇到问题,主要可能是shell_exec,执行报错,可以通过输出错误结果进行排查

代码语言:javascript
复制
<?php
//命令行后面跟上2>&1,中间有空格,就可以输出整个命令执行的结果
$output   = shell_exec('php /data/satis/composer/bin/satis build /data/wwwroot/satis/satis.json /data/wwwroot/satis/public/ 2>&1');
print_r($output);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-06-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档