使用 satis 搭建一個私有的 Composer 包倉庫

在我們的日常php開發(fā)中可能需要使用大量的composer包髓废,大部份都可以直接使用巷懈,但在公司內(nèi)部總有一小部份包是不能公開的,這時候我們就需要搭建一個公司內(nèi)部使用的composer倉庫慌洪,好在composer官方有提供這樣的工具satistoran proxy,satis搭建相對簡單一些顶燕,我們今天就選用satis進(jìn)行。

安裝

cd /data/www/
composer create-project composer/satis --stability=dev --keep-vcs
mv satis packages.dev.com
cd packages.dev.com

配置

satis的配置是通過satis.json進(jìn)行的冈爹,我們在當(dāng)前目錄新建一個satis.json涌攻。

{
    "name": "My Repository",
    "homepage": "http://packages.dev.com",
    "repositories": [
        {"type": "vcs", "url": "http://git.dev.com/xxxx/package1.git"},
        {"type": "vcs", "url": "http://git.dev.com/xxxx/package2.git"},
    ],
    "require": {
        "xxxx/package1": "*",
        "xxxx/package2": "*",
    }
}

我們簡單解釋一下這個json文件

  • name:倉庫的名字,可以隨便定義
  • homepage:倉庫建立之后的的主頁地址
  • repositories:指定去哪獲取包频伤,url中需要帶.git
  • require:指定獲取哪些包恳谎,如果想獲取所有包,使用require-all: true,

生成

使用命令:php bin/satis build satis.json

我們生成的時候一般會生成html和paceages.json文件

php bin/satis build satis.json public/

如果只需要生成某幾個包憋肖,則可以在后面增加包的名字

php bin/satis build satis.json public/ package1 package2

使用上面的命令不出意久的會就會在public目錄下生成相應(yīng)的文件因痛。

注:
1、composer的 repo.packagist 配置項(xiàng)如果采用的是國內(nèi)的鏡像地址岸更,可能上面的 build 語句會失敗鸵膏,需要暫時去掉鏡像配置,Linux 下可直接編輯 ~/.config/composer/config.json 文件去掉怎炊,Windows 下的操作同理谭企;
2廓译、由于自建的 composer 私有庫使用的是 HTTP 協(xié)議,而默認(rèn) composer 要求必須使用 HTTPS 協(xié)議债查,故 composer create-project 時非区,必須指定 no-secure-http 參數(shù),或者在配置項(xiàng)指定參數(shù) "secure-http": false攀操;具體為:
composer config secure-http false或者composer config -g secure-http false

配置nginx

為了使我們的生成的內(nèi)容可以訪問院仿,我們可以簡單的使用php內(nèi)置的服務(wù)器啟動一個簡單的服務(wù)器。

php -S 0.0.0.0:8088 -t public/

這樣通過127.0.0.1:8088就可以進(jìn)行訪問了,大概會看到類似下面這樣的畫面


image

不過我們是為了穩(wěn)定使用的速和,所以使用nginx做為我們的web服務(wù)器歹垫,配置如下:

server {
    listen  80;
    server_name packages.dev.com;
    root /data/www/packages.dev.com/public;
    index index.php index.html;
    access_log /var/log/nginx/packages.dev.com.log main;
    rewrite_log on;

    location ~* \.php$ {
        try_files $uri /index.php =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location = /favicon.ico {
            log_not_found off;
            access_log off;
    }
}

修改Host packages.dev.com至127.0.0.1之后,我們就可以通過packages.dev.com進(jìn)行訪問了颠放。

使用

通過上面的配置后排惨,我們就可以在項(xiàng)目中使用了,只需簡單的修改composer.json文件

{
    "repositories": [
      { "type": "composer", "url": "http://packages.dev.com/" }
    ],
    "require": {
        "company/package": "1.2.0",
        "company/package2": "1.5.2",
        "company/package3": "dev-master"
    }
}

然后執(zhí)行composer update即可

下載

通過上面的例子你會發(fā)現(xiàn)composer update的時候會去我們的git中clone碰凶,有時候會比較慢暮芭,我們并不希望每次都clone,其實(shí)我們也可以緩存在我們的倉庫中欲低,這樣每次update的時候就只用下載了辕宏。

在satis.json中增加

{
    "archive": {
        "directory": "dist",
        "format": "tar",
        "prefix-url": "http://packages.dev.com/",
        "skip-dev": true
    }
}

參數(shù)說明:

  • directory: 必需要的,表示生成的壓縮包存放的目錄砾莱,會在我們build時的目錄中
  • format: 壓縮包格式, zip(默認(rèn)) tar
  • prefix-url: 下載鏈接的前綴的Url,默認(rèn)會從homepage中取
  • skip-dev: 默認(rèn)為假瑞筐,是否跳過開發(fā)分支
  • absolute-directory: 絕對目錄
  • whitelist: 白名單,只下載哪些
  • blacklist: 黑名單腊瑟,不下載哪些
  • checksum: 可選聚假,是否驗(yàn)證sha1

再次生成

php bin/satis build satis.json public/

會發(fā)現(xiàn)public目錄多了一個dist目錄,里面有很多tar的壓縮包闰非,這就是我們的package膘格。

之后再執(zhí)行composer update就會發(fā)現(xiàn)快了很多。

一個公司內(nèi)部的composer倉庫就完成了财松。

參考

https://getcomposer.org/doc/articles/handling-private-packages-with-satis.md
http://www.netfoucs.com/article/qq280948982/99039.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瘪贱,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子辆毡,更是在濱河造成了極大的恐慌政敢,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胚迫,死亡現(xiàn)場離奇詭異,居然都是意外死亡唾那,警方通過查閱死者的電腦和手機(jī)访锻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門褪尝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人期犬,你說我怎么就攤上這事河哑。” “怎么了龟虎?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵璃谨,是天一觀的道長。 經(jīng)常有香客問我鲤妥,道長佳吞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任棉安,我火速辦了婚禮底扳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘贡耽。我一直安慰自己衷模,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布蒲赂。 她就那樣靜靜地躺著阱冶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪滥嘴。 梳的紋絲不亂的頭發(fā)上木蹬,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天,我揣著相機(jī)與錄音氏涩,去河邊找鬼届囚。 笑死,一個胖子當(dāng)著我的面吹牛是尖,可吹牛的內(nèi)容都是我干的意系。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼饺汹,長吁一口氣:“原來是場噩夢啊……” “哼蛔添!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起兜辞,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤迎瞧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后逸吵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體凶硅,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年扫皱,在試婚紗的時候發(fā)現(xiàn)自己被綠了足绅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捷绑。...
    茶點(diǎn)故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖氢妈,靈堂內(nèi)的尸體忽然破棺而出粹污,到底是詐尸還是另有隱情,我是刑警寧澤首量,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布壮吩,位于F島的核電站,受9級特大地震影響加缘,放射性物質(zhì)發(fā)生泄漏鸭叙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一生百、第九天 我趴在偏房一處隱蔽的房頂上張望递雀。 院中可真熱鬧,春花似錦蚀浆、人聲如沸缀程。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽杨凑。三九已至,卻和暖如春摆昧,著一層夾襖步出監(jiān)牢的瞬間撩满,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工绅你, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留伺帘,地道東北人。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓忌锯,卻偏偏與公主長得像伪嫁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子偶垮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容