sinopia搭建

这里默认你已经有node环境了,执行下面命令,全局安装 sinopia

npm install -g sinopia

安装好后,执行下面命令启动 sinopia

sinopia

你会看到下面两行提示:

warn  --- config file - /root/.config/sinopia/htpassw
warn --- http address - http://localhost:4873/

上面一行是 sinopia 的配置文件所在路径,下面一行是 sinopia 服务的域名和端口号

然后打开 http://localhost:4873/,如果能正常访问,说明安装成功

node服务非常脆弱,一般在实际中使用都会配合守护进程。这里我用的是 pm2 做守护进程

首先全局安装 PM2,执行下面语句:

npm install -g pm2

再执行下面语句,通过 PM2 启动 sinopia:

pm2 start `which sinopia`

默认情况下,sinopia 的配置是不适合直接使用的,所以我们需要对它的配置文件按需酌情修改

我们找到上面提到的配置文件目录,打开配置文件进行编辑:

#
# 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.npm.taobao.org/ #默认为npm的官网,由于国情,修改 url 让sinopia使用 淘宝的npm镜像地址 packages: #配置权限管理
'@*/*':
# scoped packages
access: $all #表示哪一类用户可以对匹配的项目进行安装 【$all 表示所有人都可以执行对应的操作,$authenticated 表示只有通过验证的人可以执行对应操作,$anonymous 表示只有匿名者可以进行对应操作(通常无用)】
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 #如其名,这里的值是对应于 uplinks # 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: 0.0.0.0:4873 #默认没有,只能在本机访问,添加后可以通过外网访问

上面配置文件的绿色字体是官方注释,红色字体是网上找到的注释(原文参考:https://segmentfault.com/a/1190000005790827)

OK,修改完配置文件后,重启下 sinopia。万事具备,接下来就是用本机尝试访问虚拟机上的 sinopia 服务了

我的虚拟机 IP 是 192.168.2.18。所以我在本机上输入 192.168.2.18:4873

神奇的事情发生了,啥都木有...纳尼,啥情况,哪里出错了么?

这个时候切莫抓急,否则就会像我一样,倒腾半天弄不出个所以然来

我一度怀疑上面的安装方法是错误的,但打从一开始我怀疑的方向就错了。因为虚拟机上明明能通过  http://localhost:4873/ 访问的,说明服务肯定没问题

那么到底是什么原因使得外网无法访问呢?(网段什么的原因已排除...)最后我找到根源所在了,虚拟机是 centOS 的,默认情况下,防火墙没有开放 4873 端口,外部当然访问不到了...

当时发现原因后这是老血都吐了几斤,服务器运维菜鸟的伤不起啊...

所以如果使用了 linux 虚拟机做服务器,搭好 web 服务后记得开放相应端口,这要上升为一个常识呀...

输入命令:

vim /etc/sysconfig/iptables

进入编辑防火墙配置文件(修改 OUTPUT ACCEPT 下的内容)

然后加上下面这句:

-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

作用是作用是防止防火墙占用80端口

然后再加上下面这一句:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 4873 -j ACCEPT

开放 4873 端口

最后记得重启一下防火墙:

/etc/init.d/iptables restart

好了,再试一次,用本机访问 192.168.2.18:4873 ,成功访问,nice!

sinopia用户配置

Linux 下经常会出现 sinopia 服务 npm adduser 时报错

最好的办法是先在 Windows 下部署一套 sinopia 服务,然后执行 npm adduser,成功添加用户(用户名:admin;密码:123456;邮箱:admin@qq.com

然后找到 htpasswd 文件 (该文件和 config.yaml 在同一目录下,我的文件所在路径为 C:\Users\Administrator\AppData\Roaming\sinopia\htpasswd

打开 htpasswd 文件,发现里面有这么一行:

admin:{SHA}fEqNCco3Yq9h5ZUglD3CZJT4lBs=:autocreated 2017-03-21T03:15:14.332Z

然后到 Linux 下直接执行下面命令:

vim /root/.config/sinopia/htpassw

编辑用户列表文件,将上面找到的一行代码 copy 到里面,然后保存

这样就成功在 Linux 的 sinopia 服务上创建用户了

然后在执行 npm login 登录

就可以发布包到 Linux 服务器上了

在 sinopia 服务上安装包 and 发布

环境和用户问题已经解决,那么接下来我们试试在我们的服务商发布自己的包

这里推荐用 nrm 来管理 npm 的镜像地址,非常方便

首先全局安装 nrm:

npm install -g nrm

然后添加虚拟机npm 服务镜像地址:

nrm add my http://192.168.2.18:4873

使用虚拟机镜像:

nrm use my

其他常用的 nrm 命令:

nrm --help  #查看 nrm 命令帮助
nrm list #列出可用的 npm 镜像地址
nrm use taobao #使用'淘宝npm'镜像地址

上面我们把本机的 npm 切换到虚拟机镜像后吗,用它来安装 gulp:

npm install gulp

当然,我们的服务是刚刚建好的,上面还没发布任何包,但我们依然能成功安装

因为 sinopia 发现服务中没有你要下载的包,就会到 taobao 镜像去下载

安装包没问题,然后就是发布我们自己的包了

上面已经提到如何创建用户,这里就不再细说

发布之前要用下面命令登录:

npm login

进入我们要发布的包根目录,然后执行初始化命令创建 package.json (已经初始化的话,跳过这步):

npm init

根据提示输入包信息,初始化完成后就可以发布了

然后在根目录执行下面命令:

npm publish

发布成功后,你就可以像安装别的包那样安装自己发布的包了

用sinopia搭建内部npm服务的更多相关文章

  1. 使用Sinopia搭建私有npm仓库

    使用Sinopia搭建私有npm仓库 在用npm装包的时候,每次都要下载一大堆,慢且不说,npm还老被墙,所以就想到在公司内部搭建npm仓库镜像.大概看了几个,觉得Sinopia最简单也好用,所以就使 ...

  2. 【玩转树莓派】使用 sinopia 搭建私有 npm 服务器

    简介 使用 sinopia 的好处是,node系的工程师,内部协作时,使用自有 npm 包,会非常方便:另外,sinopia,会缓存已经下载过的包,可以在相当程度上,加速 npm install 相关 ...

  3. 搭建内部NuGet服务

    简介 NuGet相当于Python中的pip,nodejs中的npm,用来管理.net/.net core的程序集版本,也叫包管理器.在框架化.模块化开发中使用nuget服务必不可少,尤其是在abp开 ...

  4. 使用BIND搭建内部DNS服务

    ​​‌‌​​​‌‌​‌​​‌‌‍​‌​‌‌‌​​‌‌‌‌​‌​‍​‌​​‌​​​‌​​​‌‌​‍​‌ ...

  5. 利用Sinopia搭建私有npm包

    1.安装sinopia包 npm install -g sinopia 如果是Windows系统用上面的方式安装sinopia很有可能报错,推荐使用下面方式安装: npm install sinopi ...

  6. 与你相遇好幸运,用sinopia搭建npm私服

    需求: >在企业内部搭建私有npm服务器,企业开发人员上传下载自己开发的npm包 >私有npm服务器包不存在时,找npm或者taobao的镜像站点 >服务器硬盘有限,希望只缓存下载过 ...

  7. 用sinopia搭建npm私服

    需求(这段话是摘抄参考文档的,因为作者也想这么说): 公司出于自身隐私保护需要,不想把自己的代码开源到包管理区,但是又急需一套完整包管工具,来管理越来越多的组件.模块和项目.对于前端,最熟悉的莫过于n ...

  8. 手把手搭建一套私有 npm 服务

    手把手搭建一套私有 npm 服务 gnpm xnpm pnpm lnpm refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!

  9. 搭建私有npm私库(使用verdaccio)

    搭建 npm 离线服务器 为什么要搭建npm 服务器 原因: 公司内部开发的私有包,统一管理,方便开发和使用 安全性,由于公司内部开发的模块和一些内容并不希望其他无关人员能够看到,但是又希望内部能方便 ...

随机推荐

  1. MSDN Webcast 跟我一起从零开始学WCF系列课程

    系列课程 >跟我一起从零开始学WCF系列课程   跟我一起从零开始学WCF系列课程(1):WCF概述 (Level 200)   讲 师:徐长龙    课程简介:从 本堂课开始我们将开启一个新的 ...

  2. 《Forward团队-爬虫豆瓣top250项目-设计文档》

    成员:马壮,李志宇,刘子轩,年光宇,邢云淇,张良 设计方案: 1.能分析HTML语言: 2.提取重要数据,并保存为文本文档: 3.用PY代码调取文本文档的数据: 4.编写提取部分数据的python代码 ...

  3. (并查集 建立关系)Parity game -- POJ -1733

    链接: http://poj.org/problem?id=1733 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82830#probl ...

  4. TFS实战培训 - 博时基金公司 (2016年8月)

    博时基金管理有限公司是中国内地首批成立的五家基金管理公司之一, 是目前我国资产管理规模最大的基金公司. 博时信息技术部的的软件研发团队是负责公司信息化的核心技术部门,为提升软件产品的研发效率和质量,计 ...

  5. S11 day 93 RestFramework 之 序列化

    1. 表建模 from django.db import models # Create your models here. #文章表 class Article(models.Model): tit ...

  6. openvswitch BFD 简介

    为了保护关键应用,网络中会设计有一定的冗余备份链路,网络发生故障时就要求网络设备能够快速检测出故障并将流量切换至备份链路以加快网络收敛速度.目前有些链路(如POS)通过硬件检测机制来实现快速故障检测. ...

  7. leetcode 121. 买卖股票的最佳时机 JAVA

    题目: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润. 注意你不能在买入股票前卖出股票 ...

  8. jzoj5913

    這道題我們可以套路的設置f[i]為當前節點為根的滿足條件方案數,然後枚舉根,計算必須包含當前根的方案 但是似乎很難計算 所以我們可以搞一個前綴和,將聯通塊的最大數和最小數相減<=k的方案和< ...

  9. 关于Kafka部署优化的一点建议

    网络和IO线程配置优化 配置参数 num.network.threads:Broker处理消息的最大线程数 num.io.threads:Broker处理磁盘IO的线程数 优化建议 一般num.net ...

  10. MyEclipse配置Hibernate具体步骤

    工具: MyEclipse,MySQL 步骤: 1.打开MyEclipse,新建一个Java Project(取名:h1) 2.创建MySQL数据库 3.找到MyEclipse下的MyEclipse ...