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**