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. python logging 实现的进程安全的文件回滚日志类

    python标准库中的logging模块在记录日志时经常会用到,但在实际使用发现它自带的用于本地日志回滚的类 logging.handlers.RotatingFileHandler 在多进程环境下会 ...

  2. 系统目录APK更新——权限问题

    package com.example.wx; import java.io.File;import java.io.FileOutputStream;import java.io.IOExcepti ...

  3. Hdu1361&&Poj1068 Parencodings 2017-01-18 17:17 45人阅读 评论(0) 收藏

    Parencodings Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total ...

  4. C++ 中的运算符的优先级

    C++ 中的运算符的优先级 直接看图

  5. centos7 磁盘管理—— lvm的使用

    Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间.普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不 ...

  6. 逆着得最长路POJ1797

    POJ1797点击打开链接 这个题很是不错我感觉 很容易把这个题和上一个青蛙跳的题联系起来做,我也确实联系起来了,可还是没能完整得Ac,是因为我的算法思路还是最短路,这里错了 这个题目得要求是,从1到 ...

  7. Paul and Joyce are going to a movie(More listening of Unit 2)

      Paul: Hurry up, Joyce. We need to leave now if we're going to get to the theater a half hour befor ...

  8. Configure Pi as simulation hardware for Simulink

    1. Only version not older than R2013 supports Raspberry Pi. First, download support package in Matla ...

  9. 设计模式之代理模式(Proxy Pattern)_远程代理解析

    一.什么是代理模式? 顾名思义,代理就是第三方,比如明星的经纪人,明星的事务都交给经纪人来处理,明星只要告诉经纪人去做什么,经纪人自然会想办法去做,做完之后再把结果告诉明星就好了 本来是调用者与被调用 ...

  10. 使用node_redis进行redis数据库crud操作

    正在学习使用pomelo开发游戏服务器,碰到node.js操作redis,记录一下 假设应用场景是操作一个用户表的数据 引入node_redis库,创建客户端 var redis = require( ...