A. gitee 可以发布到packagist.org吗
Github项目代码发布到Packagist管理
一、前言
Composer 是 PHP 用来管理依赖( 关系的工具。我们不仅要学会使用别人提供的包,更要学会制作和分享自己的软件包,下面演示如何创建一个自己的 Composer 包。
准备工作:
注册 Github 账号
注册 Packagist 账号
二、实践
本案例演示如何创建一个PHP Elasticsearch 的项目包。
1. 创建 Github 仓库
登录 Github,创建仓库 huazaili/PHP-Elasticsearch,并将代码克隆到本地:
git clone
2. 创建 Composer 配置文件
进入项目根目录,创建 Composer 配置文件 composer.json,可以使用命令 compser init 创建也可以手动创建,最终文件内容大体如下:
以上是如何配置composer.json内容,需要配置:
包名,描述,作者,最小稳定版本,许可证,该包依赖的其他包已经对应包的最小版本;依次填入正确的信息后,git push到github仓库。
以上的github包仓库文件创建准备完成了,接下来我们要将这个包发布到站点发布,用来提供下载和安装使用。
首先登陆站点,可以使用github的账号登录:
接着找到github仓库要发布的包的地址:
可以看到包已经发布成功!!!
这个时候可以使用composer require lca/elasticsearch 直接安装,然后就可以使用了
B. 为什么php webhook 使用接口调用提示无法识git命令
估计和你当前用的 shell 命令行不是同一个 shell 解释器。
写 shell 脚本,记住一定要在最开始写 #!/bin/bash 或者其他的解释器,比如 csh、tsh。python、perl、php 都可以这么用,这样你的脚本就制定了一个解释器来运行。运行时不要用 sh xxx.sh ,而是赋予可运行权限后 ./xxxx.sh 方式运行。
一般 Linux 下面的 /bin/sh 是一个链接,指向一个默认的 shell 解释器,这个链接如果不是你需要的解释器,那么脚本运行出现任何问题都可能。如果系统装了 busybox ,他也会提供一个 sh 解释器,而且命令的文件名也是 sh ,他和 bash 运行结果也有区别,只是这个 sh 不一定在 /bin 里面。
C. 接收不到shopify webhook 发送post请求
接收不到shopifywebhook发送post请求,解决方法如下:
执行此操作的最佳方法是设置webhooknotification,该ojit_a向服务器发送HTTPPOST请求,然后让服务器捕获POST并将其解析为XML。然后,我将通过一个php脚本读取XML,该脚本将更新我的数据库。
我的php没问题,但是我似乎无法弄清楚是如何在服务器上捕获webhook的。Webhook询问我要发送POST请求的URL。发现可以通过html,php,Access-Control-Allow-Origin等多种方式捕获POST请求。真正了解如何做到这些。我尝试过使用HTML隐藏操作表单,但似乎无法捕获XML。
我要做的就是让Webhook发送POST请求,并将其捕获为.xml。这样我就可以在每天结束时阅读xml,并相应地更新数据库。
D. 如何利用git webhooks 实现网站代码自动化部署
1. 生成公钥
公钥有两个:1. git用户公钥,2. 部署公钥:
git用户公钥
ssh-keygen -t rsa -C "[email protected]"
# 然后一直回车就行
# 生成的文件通常是 /root/.ssh/id_rsa,如果非root用户请查看提示上的路径
1
2
3
ssh-keygen -t rsa -C "[email protected]"
# 然后一直回车就行
# 生成的文件通常是 /root/.ssh/id_rsa,如果非root用户请查看提示上的路径
部署公钥
sudo -Hu www ssh-keygen -t rsa # 请选择 “no passphrase”,一直回车下去
2. 准备钩子文件
创建和修改目录权限:
mkdir /home/wwwroot/website.com/hook
chown -R www:www /home/wwwroot/website.com/hook
1
2
mkdir /home/wwwroot/website.com/hook
chown -R www:www /home/wwwroot/website.com/hook
写入钩子文件:
sudo -Hu www touch /home/wwwroot/website.com/hook/index.php
1
sudo -Hu www touch /home/wwwroot/website.com/hook/index.php
<?php
error_reporting(1);
$target = '/home/wwwroot/website.com'; // 生产环境web目录
$token = '您在coding填写的hook令牌';
$wwwUser = 'www';
$wwwGroup = 'www';
$json = json_decode(file_get_contents('php://input'), true);
if (empty($json['token']) || $json['token'] !== $token) {
exit('error request');
}
$repo = $json['repository']['name'];
// $cmds = array(
// "cd $target && git pull",
// "chown -R {$wwwUser}:{$wwwGroup} $target/",
// );
// foreach ($cmds as $cmd) {
// shell_exec($cmd);
// }
// 感谢@墨迹凡指正,可以直接用www用户拉取代码而不用每次拉取后再修改用户组
$cmd = "sudo -Hu www cd $target && git pull";
shell_exec($cmd);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
error_reporting(1);
$target = '/home/wwwroot/website.com'; // 生产环境web目录
$token = '您在coding填写的hook令牌';
$wwwUser = 'www';
$wwwGroup = 'www';
$json = json_decode(file_get_contents('php://input'), true);
if (empty($json['token']) || $json['token'] !== $token) {
exit('error request');
}
$repo = $json['repository']['name'];
// $cmds = array(
// "cd $target && git pull",
// "chown -R {$wwwUser}:{$wwwGroup} $target/",
// );
// foreach ($cmds as $cmd) {
// shell_exec($cmd);
// }
// 感谢@墨迹凡指正,可以直接用www用户拉取代码而不用每次拉取后再修改用户组
$cmd = "sudo -Hu www cd $target && git pull";
shell_exec($cmd);
确保你的hook文件可以访问:http://example.com/hook/index.php,钩子准备完成。
3.修改git配置和保存git用户名密码
sudo -Hu www git config --global credential.helper store # 永久保存
sudo -Hu www git config --global user.name "Bantes"
sudo -Hu www git config --global user.email "[email protected]" # 邮箱请与conding上一致
1
2
3
sudo -Hu www git config --global credential.helper store # 永久保存
sudo -Hu www git config --global user.name "Bantes"
sudo -Hu www git config --global user.email "[email protected]" # 邮箱请与conding上一致
在Coding网站
1.添加用户公钥
复制/root/.ssh/id_rsa.pub内容到个人设置页的SSH公钥里添加即可(https://coding.net/user/account/setting/keys)
2.添加部署公钥
复制/home/www/.ssh/id_rsa.pub的内容并添加到部署公钥:
选择项目 > 设置 > 部署公钥 > 新建 > 粘贴到下面框并确认
3.添加hook
选择项目 > 设置 > WebHook > 新建hook > 粘贴你的hook/index.php所在的网址。比如:http://example.com/hook/index.php, 令牌可选,但是建议写上。
稍过几秒刷新页面查看hook状态,显示为绿色勾就OK了。
初始化
1.我们需要先在服务器上clone一次,以后都可以实现自动部署了:
sudo -Hu www git clone https://git.coding.net/yourname/yourgit.git /home/wwwroot/website.com/ --depth=1
1
sudo -Hu www git clone https://git.coding.net/yourname/yourgit.git /home/wwwroot/website.com/ --depth=1
这个时候应该会要求你输入一次Coding的帐号和密码,因为上面我们设置了永久保存用户名和密码,所以之后再执行git就不会要求输入用户名和密码了。
**!!注意,这里初始化clone必须要用www用户**
2.往Coding.net提交一次代码测试:
在本地clone的仓库执行:
git commit -am "test hook" --allow-empty
git push
1
2
git commit -am "test hook" --allow-empty
git push
OK,稍过几秒,正常的话你在配置的项目目录里就会有你的项目文件了。
初始化Laravel框架
1. 下载Composer
在项目目录下执行:
sudo -Hu www curl -sS https://getcomposer.org/installer | php
sudo -Hu www php composer.phar install
1
2
sudo -Hu www curl -sS https://getcomposer.org/installer | php
sudo -Hu www php composer.phar install
**!!记得在本地提交的时候在.gitignore中加上composer.phar**