成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

使用 Satis 搭建私有的 Composer 包倉(cāng)庫(kù)

lovXin / 1468人閱讀

摘要:說(shuō)明服務(wù)器環(huán)境代碼管理平臺(tái)碼云文章中盡量以一個(gè)真實(shí)的情況來(lái)撰寫,但是文章的倉(cāng)庫(kù)地址,網(wǎng)頁(yè)地址均是不可訪問(wèn)的,用虛擬信息替換了真實(shí)信息。比如碼云,是收費(fèi)的,對(duì)于一個(gè)公司來(lái)說(shuō)費(fèi)用不高,但是加上以上兩點(diǎn)原因后,所以未選擇。

簡(jiǎn)述

iBrand 產(chǎn)品立項(xiàng)時(shí)是商業(yè)性質(zhì)的項(xiàng)目,但是在搭建架構(gòu)時(shí)考慮后續(xù)的通用性,因此每個(gè)模塊都設(shè)計(jì)成一個(gè) Package,作為公司內(nèi)部用,因此這些包并不能提交到 packagist.org 上去。 所以就想是否能夠搭建私有的包倉(cāng)庫(kù),實(shí)現(xiàn)一個(gè)私有的 packagist 。

仔細(xì)翻閱 Composer 文檔,發(fā)現(xiàn)官方有相應(yīng)的解決方案:Handling private packages

這里推薦使用 Satis ,也正是我們目前使用的方案,目前運(yùn)行一切良好。

Satis 是一個(gè)靜態(tài)的 composer 資源庫(kù)生成器。它像是一個(gè)超輕量級(jí)的、基于靜態(tài)文件的 packagist 版本。

你給它一個(gè)包含 composer.json 的存儲(chǔ)庫(kù),定義好 VCS 和 資源庫(kù)。它會(huì)獲取所有你列出的包,并打印 packages.json 文件,作為 composer 類型的資源庫(kù)。

說(shuō)明

服務(wù)器環(huán)境

centos7.2

nginx

php7.1

代碼管理平臺(tái):碼云

文章中盡量以一個(gè)真實(shí)的情況來(lái)撰寫,但是文章的倉(cāng)庫(kù)地址,網(wǎng)頁(yè)地址均是不可訪問(wèn)的,用虛擬信息替換了真實(shí)信息。

Create Private Git Project

既然為公司內(nèi)部項(xiàng)目源碼是不公開(kāi)的,我們選擇了碼云,未選擇 github,主要有兩個(gè)原因:

github 因?yàn)槭菄?guó)外服務(wù)器,國(guó)內(nèi)偶爾會(huì)抽風(fēng)。

國(guó)內(nèi)也有比較優(yōu)秀的 git 代碼托管平臺(tái),免費(fèi)支持 Private Project。比如:碼云,Coding

github private project 是收費(fèi)的,對(duì)于一個(gè)公司來(lái)說(shuō)費(fèi)用不高,但是加上以上兩點(diǎn)原因后,所以未選擇。

假設(shè)我們已經(jīng)在碼云上建立好了私有項(xiàng)目,并且已經(jīng)編寫好了所有的代碼和單元測(cè)試。

ssh 地址: [email protected]:iBrand/test-private-composer.git

composer.json

{
  "name": "iBrand/test-private-composer",
  "type": "library",
  "description": "iBrand test private composer",
  "keywords": [
    "iBrand crop",
    "private composer",
  ],
  "license": "MIT",
  "authors": [
    {
      "name": "shjchen",
      "email": "[email protected]"
    }
  ],
  "require": {
    "php": "^5.6|^7.0",
  },
  "autoload": {
    "psr-4": {
       "iBrandPrviateComposer": "src/"
    }
  },

  "minimum-stability": "dev",
  "prefer-stable": true
}
Create Satis Server Install
$ cd /data/www/
$ composer create-project composer/satis company-private-composer --stability=dev --keep-vcs
Setup
$ cd /data/www/company-private-composer
$ vi satis.json
{
  "name": "iBrand Private Composer Repository", 
  "homepage": "http://packagist.iBrand.com",
  "repositories": [
    { "type": "vcs", "url": "[email protected]:iBrand/test-private-composer.git" }
    // more vcs url.
  ],
  "require": {
    "ibrand/test-private-composer": "*",
    // you more package.
    },
  "archive": {
        "directory": "dist",
        "format": "tar",
        "prefix-url": "http://packagist.iBrand.com"
    }
}

解釋下 satis.json 配置文件

name:倉(cāng)庫(kù)名稱,可以隨意定義

homepage:倉(cāng)庫(kù)主頁(yè)地址

repositories:指定包源

require:指定包源版本,* 代碼編譯所有版本,如果想獲取所有包,使用 require-all: true,

directory: required, the location of the dist files (inside the output-dir)

format: optional, zip (default) or tar

prefix-url: optional, location of the downloads, homepage (from satis.json) followed by directory by default

Authentication

在進(jìn)行 Build 前,我們需要解決代碼權(quán)限問(wèn)題,因?yàn)榍懊娴捻?xiàng)目源碼是私有的,所以服務(wù)器上需要有讀取源碼的權(quán)限,依然以碼云舉例:

生成ssh公鑰

你可以按如下命令來(lái)生成 sshkey:

$ ssh-keygen -t rsa -C "[email protected]" 
# Generating public/private rsa key pair...
# 三次回車即可生成 ssh key

查看你的 public key,并把他添加到碼云(Gitee.com) SSH key添加地址:https://gitee.com/profile/ssh...

$ cat ~/.ssh/id_rsa.pub
# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....
Build
php bin/satis build satis.json public/

執(zhí)行后會(huì)在 /data/www/company-private-composer/public 生成倉(cāng)庫(kù)列表

Setup Nginx

上一步已經(jīng)生成了倉(cāng)庫(kù)列表,為了保證可訪問(wèn)需要通過(guò) nginx or apache 把服務(wù)暴露出去,我們使用的是 nginx ,因此以 nginx 舉例。

server {
    listen  80;
    server_name packagist.iBrand.com;
    root /data/www/company-private-composer/public;
    index index.php index.html;

    access_log /data/logs/packages-access.log;
    error_log  /data/logs/packages-error.log error;
    rewrite_log on;
    
    location ~* .php$ {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
    }

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

配置好后需要執(zhí)行 service nginx reload ,然后就可以通過(guò)訪問(wèn) http://packagist.iBrand.com 看到自己的倉(cāng)庫(kù)列表,如下圖:

Usage

接下來(lái)就可以在項(xiàng)目中使用這個(gè)私有的 Composer 包倉(cāng)庫(kù)。

添加如下配置到項(xiàng)目中的 composer.json 文件中

"require": {
    "iBrand/test-private-composer": "~1.0"
  }
"config": {
    "preferred-install": "dist",
    "secure-http": false
  },
  "repositories": [
    {
      "type": "composer",
      "url": "http://packagist.iBrand.com/"
    }
  ]
待續(xù)

實(shí)現(xiàn) webhooks 源碼更新時(shí)自動(dòng) Build

參考資料

Handling private packages

Hosting your own package

使用私有資源庫(kù)

討論交流

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/28253.html

相關(guān)文章

  • 使用 Satis 搭建私有倉(cāng)庫(kù)

    摘要:此時(shí)我們就需要一個(gè)工具,能夠搭建私有源,里面都是私有倉(cāng)庫(kù),對(duì)內(nèi)不對(duì)外。就是官方提供的建立私有源的工具。在其它項(xiàng)目中使用私有源只需要在項(xiàng)目的文件的根上添加倉(cāng)庫(kù)地址之后再通過(guò)或者想要的倉(cāng)庫(kù)就可以了。 現(xiàn)在我們常用 Composer 進(jìn)行依賴管理。和其它語(yǔ)言的包管理工具一樣,Composer 使用 GitHub 托管代碼,可以根據(jù)配置文件管理依賴,也可以建立各種腳本,執(zhí)行特定任務(wù)。總之好處很...

    gityuan 評(píng)論0 收藏0
  • composer私有倉(cāng)庫(kù)搭建

    摘要:安裝包添加配置文件添加類似如下內(nèi)容配置文件詳解倉(cāng)庫(kù)名字主頁(yè)地址包所在地址指定獲取哪些包及對(duì)應(yīng)的版本,獲取所有包使用,與包中中的名稱相同,不同會(huì)出現(xiàn)問(wèn)題必需要的,表示生成的壓縮包存放的目錄,會(huì)在時(shí)的目錄中壓縮包格式默認(rèn)和 安裝satis包 cd /home/wwwroot/ composer create-project composer/satis --stability=dev -...

    h9911 評(píng)論0 收藏0
  • 使用 satis 搭建 composer 本地倉(cāng)庫(kù)

    摘要:如果需要定時(shí)更新,則需要配置定時(shí)任務(wù)去定時(shí)更新設(shè)置本地倉(cāng)庫(kù)設(shè)置虛擬主機(jī)使用本地倉(cāng)庫(kù)中的包文件中添加以下拉取,即可獲取本地庫(kù)了如果本地倉(cāng)庫(kù)不存在且有網(wǎng)絡(luò)會(huì)去網(wǎng)絡(luò)中獲取。 環(huán)境 windows nginx php composer 安裝 拉取 satis 項(xiàng)目包,并拉取項(xiàng)目依賴 composer create-project composer/satis --stability=de...

    張率功 評(píng)論0 收藏0
  • 使用satis自建私有鏡像

    摘要:假設(shè)同一個(gè)包有多個(gè)開(kāi)發(fā)人員則將其他人員設(shè)置為組成員,在同一臺(tái)跳板機(jī)上部署項(xiàng)目,并且設(shè)置項(xiàng)目的為。這樣在開(kāi)發(fā)環(huán)境中通過(guò)登陸來(lái)判斷權(quán)限。在跳板機(jī)上則通過(guò)添加該機(jī)器的公鑰到來(lái)判斷權(quán)限這樣就算其他人有倉(cāng)庫(kù)地址也不能拉到代碼,目的基本達(dá)成。 建立目的 為了不讓代碼公開(kāi),能夠讓項(xiàng)目基于gitlab快速自動(dòng)化部署,簡(jiǎn)化單個(gè)composer.json文件配置內(nèi)容 安裝 使用composer compo...

    lscho 評(píng)論0 收藏0
  • 這兩年多我寫PHP業(yè)務(wù)代碼方式是如何進(jìn)化

    摘要:曾今誰(shuí)都有過(guò)迷茫期,下面是我開(kāi)始開(kāi)發(fā)中,不斷改變的代碼組織方式。 曾今 誰(shuí)都有過(guò)迷茫期,下面是我開(kāi)始PHP開(kāi)發(fā)中,不斷改變的代碼組織方式。 初期:所有代碼一股腦控制器controller 曾今只是簡(jiǎn)單的理解MVC 中期:業(yè)務(wù)代碼抽象一部分到模型層model 開(kāi)始覺(jué)得model層是否該做點(diǎn)什么了 后期:業(yè)務(wù)代碼控制器,模型層只寫db的curd方法 復(fù)雜的業(yè)務(wù)代碼使contro...

    qqlcbb 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<