sinopiaを使用したプライベートnpmサービスの構築
5480 ワード
テキストアドレスhttps://github.com/jindada/blog/issues/1
なぜプライベートnpmを構築する必要があるのか私有のバッグは内部でしか使いたくないしgit+sshの方式を使いたくないし、優雅さが足りないし、対応する権限 を配置したいと思っています. npm上のパケットのダウンロードが遅いので、ダウンロードしたパケットをサーバ上に猶予したいのですが、次回のダウンロード時にまず更新をチェックし、更新しなければ直接キャッシュ を歩きます.ダウンロード希望の場合、パブリックパッケージはパブリックウェアハウス、プライベートパッケージは内部サーバのプライベートウェアハウス どうしてこの文章を書いたのですか.
こちらの文章を书く时、すでに大神达が书いたいくつかのいい文章を见て、ここで集中してまとめたいと思って、しかもすでに文章が言及していない穴の下で感じの良い文章を列挙します: Sinopiaを使用してプライベートnpm倉庫 を構築 Sinopia|ゼロからnpm倉庫 の構築を開始
紹介する
sinopiaの紹介と長所と短所は詳しく紹介しません上の2つの文章はすべてとても詳しい説明があります
インストールと使用の導入
sinopiaのインストールと起動(node環境をインストールしたと仮定)
次に、ブラウザアクセスアドレス
npmエージェントの構成
sinopiaが起動したら、まず
ユーザーとログインの追加
ログインに成功すると、
注意する必要があります:あなたは1つのパケット名+バージョン番号がすでに公共倉庫の中に存在するパケットを発表することができなくて、発表する時、sinopiaはまずあなたの配置した公共倉庫(
コンフィギュレーション
Sinopiaの特徴は、どのディレクトリで実行するかで、対応するディレクトリの下に自分のファイルが作成されることです.
ディレクトリの下にはデフォルトで2つのファイルがあります:config.yamlとstorage,htpasswdはユーザを追加した後に自動的に作成される.
config.yaml---アクセス権、エージェント、ファイル格納パスなどのすべての構成情報を構成するstorage---npmパッケージディレクトリhtpasswdをキャッシュする---ユーザーのアカウントパスワードなどの情報を保存する
パスワードが暗号化されているのは明らかですが、暗号化アルゴリズムは簡単で、簡単なSHA 1が薄くなってからBase 64に変換し、タイムスタンプを付けます.それでも、私たちはまだ愚かで、どのようにユーザーを追加するか分かりません.怖がらないで!ここでは皆さんに使いやすいプラグインhtpasswd-for-sinopiaをあげます.間違いなく、作者本人が書いたものです.いいと思います.
構成は大きく2つの部分に分けられ、1つは@weflex/*で始まり、もう1つはワイルドカード*です.
これはもちろんpackageです.jsonのnameフィールドは、@weflex/appが最初の構成に一致し、expressが2番目に一致します.
ここでこのような構成の意味は、一般的なチームや会社のプライベートプロジェクトでは、異なる権限制御が採用されるため、ここではNPMのscoped nameである@companyの形式を借りています.例えば、@weflex/appはWeFlex傘下のappプロジェクトを表しています.
次に、各ネーミングフィルタ(filter)の下に3つの基本設定があります.
アクセス:一致するアイテムをインストールできるユーザー(install)publishのクラスを表します.一致するアイテムをパブリッシュできるユーザー(publish)proxyのクラスを表します.名前の通り、ここの値はuplinksの1と2に対応する値です.通常、次のオプションの構成があります.
$allはすべての人が対応する操作を実行できることを示します$authenticatedは検証された人だけが対応する操作を実行できることを示します$anonymousは匿名者だけが対応する操作を行うことができることを示します(通常は不要)または、以前に構成したユーザーテーブルhtpasswdに対応する1人以上のユーザーを指定して、一致する操作構成が完了したユーザーを明確に指定してから実行することもできます.
sinopiaとの併用
その他のアクションリファレンスhttps://wohugb.gitbooks.io/pm2/content/
セキュリティ
プライベートnpm倉庫を保証するために、フロントエンドにNginxを追加し、SSHを2層検証として構成できます.
なぜプライベートnpmを構築する必要があるのか
こちらの文章を书く时、すでに大神达が书いたいくつかのいい文章を见て、ここで集中してまとめたいと思って、しかもすでに文章が言及していない穴の下で感じの良い文章を列挙します:
紹介する
sinopiaの紹介と長所と短所は詳しく紹介しません上の2つの文章はすべてとても詳しい説明があります
インストールと使用の導入
sinopiaのインストールと起動(node環境をインストールしたと仮定)
$ npm install sinopia -g
$ sinopia
次に、ブラウザアクセスアドレス
http://localhost:4873/
が正常に表示されると成功し、4873
がデフォルトポートになります.npmエージェントの構成
sinopiaが起動したら、まず
npm set registry http://localhost:4873/
でクライアントが使用するnpmエージェントを設定し、正常に使用できます.ユーザーとログインの追加
$ npm adduser --registry http://localhost:4873 //
$ npm login //
ログインに成功すると、
npm publish
を実行してこのプライベートnpmに公開することができます.http://localhost:4873/
をリフレッシュすると、アップロードしたばかりのパッケージが表示されます.注意する必要があります:あなたは1つのパケット名+バージョン番号がすでに公共倉庫の中に存在するパケットを発表することができなくて、発表する時、sinopiaはまずあなたの配置した公共倉庫(
, http://registry.npmjs.org
)に行ってcheckに行って、checkは通過してからやっとsinopiaにパケットをアップロードすることを許可しますコンフィギュレーション
Sinopiaの特徴は、どのディレクトリで実行するかで、対応するディレクトリの下に自分のファイルが作成されることです.
, sinopia -c path/config.yaml
ディレクトリの下にはデフォルトで2つのファイルがあります:config.yamlとstorage,htpasswdはユーザを追加した後に自動的に作成される.
config.yaml---アクセス権、エージェント、ファイル格納パスなどのすべての構成情報を構成するstorage---npmパッケージディレクトリhtpasswdをキャッシュする---ユーザーのアカウントパスワードなどの情報を保存する
config.yaml
:アクセス権、エージェント、ファイルストレージパスなどのすべての構成情報を構成する# This is the default config file. It allows all users to do anything,
# so don't use it on production systems.
#
# Look here for more config file examples:
# https://github.com/rlidwka/sinopia/tree/master/conf
#
# path to a directory with all packages
storage: ./storage // npm
auth:
htpasswd:
file: ./htpasswd //
# Maximum amount of users allowed to register, defaults to "+inf".
# You can set this to -1 to disable registration.
max_users: -1 // 1000, -1,
# a list of other known repositories we can talk to
uplinks:
npmjs:
url: http://registry.npmjs.org/ // npm
packages: //
'@*/*':
# scoped packages
access: $all
publish: $authenticated
'*':
# allow all users (including non-authenticated users) to read and
# publish all packages
#
# you can specify usernames/groupnames (depending on your auth plugin)
# and three keywords: "$all", "$anonymous", "$authenticated"
access: $all
# allow all known users to publish packages
# (anyone can register by default, remember?)
publish: $authenticated
# if package is not available locally, proxy requests to 'npmjs' registry
proxy: npmjs
# log settings
logs:
- {type: stdout, format: pretty, level: http}
#- {type: file, path: sinopia.log, level: info}
# you can specify listen address (or simply a port)
listen: localhost:4873 // , , localhost 0.0.0.0
htpasswd
config.yaml max_users: -1
は、npm adduserコマンドを無効にしてユーザーを作成する最大ユーザー数を-1に設定したことを示しますが、ディレクトリの下のhtpasswdファイルでユーザーを初期化し、htpasswdファイルを開くことができます.zhangsan:{SHA}?????????????????=:autocreated 2016-02-05T15:33:46.238Z
lisi:{SHA}????????????????=:autocreated 2016-02-05T15:39:19.960Z
wangwu:{SHA}????????????????=:autocreated 2016-02-05T17:59:05.041Z
パスワードが暗号化されているのは明らかですが、暗号化アルゴリズムは簡単で、簡単なSHA 1が薄くなってからBase 64に変換し、タイムスタンプを付けます.それでも、私たちはまだ愚かで、どのようにユーザーを追加するか分かりません.怖がらないで!ここでは皆さんに使いやすいプラグインhtpasswd-for-sinopiaをあげます.間違いなく、作者本人が書いたものです.いいと思います.
star
をください.htpasswd-for-sinopiaの使い方を簡単に紹介します.$ npm install htpasswd-for-sinopia -g //
$ sinopia-adduser // sinopia ,
$ vim htpasswd // htpasswd ,
packages ( , copy )
構成は大きく2つの部分に分けられ、1つは@weflex/*で始まり、もう1つはワイルドカード*です.
これはもちろんpackageです.jsonのnameフィールドは、@weflex/appが最初の構成に一致し、expressが2番目に一致します.
ここでこのような構成の意味は、一般的なチームや会社のプライベートプロジェクトでは、異なる権限制御が採用されるため、ここではNPMのscoped nameである@companyの形式を借りています.例えば、@weflex/appはWeFlex傘下のappプロジェクトを表しています.
次に、各ネーミングフィルタ(filter)の下に3つの基本設定があります.
アクセス:一致するアイテムをインストールできるユーザー(install)publishのクラスを表します.一致するアイテムをパブリッシュできるユーザー(publish)proxyのクラスを表します.名前の通り、ここの値はuplinksの1と2に対応する値です.通常、次のオプションの構成があります.
$allはすべての人が対応する操作を実行できることを示します$authenticatedは検証された人だけが対応する操作を実行できることを示します$anonymousは匿名者だけが対応する操作を行うことができることを示します(通常は不要)または、以前に構成したユーザーテーブルhtpasswdに対応する1人以上のユーザーを指定して、一致する操作構成が完了したユーザーを明確に指定してから実行することもできます.
$ sinopia -c config.yml
sinopiaとの併用
pm2:
$ npm install -g pm2
$ pm2 start `which sinopia`
その他のアクションリファレンスhttps://wohugb.gitbooks.io/pm2/content/
nrm:npm
$ // nrm
$ npm install -g nrm
$ //
$ nrm ls
$ // sinopia
$ nrm add sinopia http://localhost:4873
$ //
$ nrm ls
$ // sinopia
$ nrm use sinopia
セキュリティ
プライベートnpm倉庫を保証するために、フロントエンドにNginxを追加し、SSHを2層検証として構成できます.