什么是npm系列二install-的十八般武艺

本文同步发表于作者博客: 什么是npm系列:二、install 的十八般武艺我们平时使用npm install只是用来安装npm上的包,其实它比我们想象的更强大,不仅仅是安装npmjs上的包,还能够从git、gitlab直接安装,我们先看下install命令的参数列表: // 从npm源安装npm install npm install [<@scope>/]<name>npm install [<@scope>/]<name>@<tag>npm install [<@scope>/]<name>@<version>npm install [<@scope>/]<name>@<version range>// 从git源、tar包、本地目录安装npm install <git-host>:<git-user>/<repo-name>npm install <git repo url>npm install <tarball file or url>npm install <folder>1. npm install默认情况下,执行命令后会安装package.json中罗列的所有模块。 如果添加--production标记,或者环境变量NODE_ENV被设置为production,npm就不会安装devDependencies中的模块。 1.1 npm install <folder>通过symlink的形式,把包目录连接到项目中。 1.2 npm install <tarball file or url>从tar包装有两种方式: file : 本地tar文件npm install ./package.tgzurl : 远程tar的地址npm install https://github.com/indexzero/forever/tarball/v0.5.61.3 npm install <git remote url>另一个比较常见的方式是从git地址安装npm包,不过使用的时候需要注意仓库是否太大,以及源地址是否在外国,这些都会影响安装速度。 协议地址的格式如下: <protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish> | #semver:<semver>]<protocol> 可以是 git, git+ssh, git+http, git+https, 或者 git+file. ...

August 19, 2019 · 1 min · jiezi

如何在-Linux-MacOS-上优雅的发布-Go-程序

这两天又写了一个开源小工具,时间戳转换与对比工具:ts,主要是在公司运维时使用。程序写完了发现安装过程不够自动化,特别是对于个人使用 MacOS 系统,日常运维是 Linux 操作系统。虽然 Go 语言支持跨平台编译,但是拿着个二进制程序拷贝来拷贝去,总归不像样。本文记录一下如何优雅在 Linux & MacOS 上发布 Go 程序的过程。 必备工具在实操之前,请首先确认成功安装以下工具: brewgoreleasergodownloader操作步骤首先当然是完成项目的编码工作。程序能够正常的编译执行。以ts项目为例。 $: git clone https://github.com/liujianping/ts$: cd$: ├── LICENSE├── README.md├── cmd│   ├── main.go│   ├── main_test.go│   └── root.go├── **dist**│   ├── CHANGELOG.md│   ├── checksums.txt│   ├── config.yaml│   ├── darwin_386│   │   └── ts│   ├── darwin_amd64│   │   └── ts│   ├── linux_386│   │   └── ts│   ├── linux_amd64│   │   └── ts│   ├── ts_0.0.6_Darwin_i386.tar.gz│   ├── ts_0.0.6_Darwin_x86_64.tar.gz│   ├── ts_0.0.6_Linux_i386.tar.gz│   └── ts_0.0.6_Linux_x86_64.tar.gz├── go.mod├── go.sum├── **install.sh**├── main.go...Shell 脚本安装该项目非常简单,代码也很少。以上目录展示了两个关键目录或文件, 分别是: ...

June 27, 2019 · 1 min · jiezi

CentOS-7-中安装-Oracle11g-R2

准备修改用户的 SHELL 限制: vim /etc/security/limits.conf添加如下内容: oracle soft nproc 2047oracle hard nproc 16384oracle soft nofile 1024oracle hard nofile 65536修改 /etc/pam.d/login 文件 vim /etc/pam.d/login添加如下内容: session required /lib/security/pam_limits.sosession required pam_limits.so修改 Linux 内核配置 vim /etc/sysctl.conf添加如下内容: fs.file-max = 6815744fs.aio-max-nr = 1048576kernel.shmall = 2097152kernel.shmmax = 2147483648kernel.shmmni = 4096kernel.sem = 250 32000 100 128net.ipv4.ip_local_port_range = 9000 65500net.core.rmem_default = 4194304net.core.rmem_max = 4194304net.core.wmem_default = 262144net.core.wmem_max = 1048576source /etc/sysctl.conf# 使修改立即生效,我当时键入如下命令时报没有找到命令,所以重启了centos修改 /etc/profile 文件 vim /etc/profile添加如下内容: if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fifi创建用户和组 ...

May 27, 2019 · 3 min · jiezi

npm-install-save-和-savedev-等常用命令的区别S-和D

几个常用命令# 安装模块到项目目录下npm install moduleName #-g 的意思是将模块安装到全局npm install moduleName -g #-save 的意思是将模块安装到项目目录下,并在package.json文件的dependencies节点写入依赖。npm install moduleName -save #--save-dev 的意思是将模块安装到项目目录下,并在package.json文件的devDependencies节点写入依赖。npm install moduleName --save-dev 注意: -g 、-save 、--save-dev 可以写在moduleName前面moduleName 可以是多个,空格隔开-save 可以简写为 -S--save-dev 可以简写为 -D 这四种命令对比npm install moduleName 安装模块到项目node_modules目录下。不会将模块依赖写入devDependencies或dependencies 节点。运行 npm install 初始化项目时不会下载模块。npm install moduleName -g 安装模块到项目node_modules目录下。不会将模块依赖写入devDependencies或dependencies 节点。运行 npm install 初始化项目时不会下载模块。npm install moduleName -save 安装模块到项目node_modules目录下。会将模块依赖写入dependencies 节点。运行 npm install 初始化项目时,会将模块下载到项目目录下。运行npm install --production或者注明NODE_ENV变量值为production时,会自动下载模块到node_modules目录中。npm install moduleName --save-dev 安装模块到项目node_modules目录下。会将模块依赖写入devDependencies 节点。运行 npm install 初始化项目时,会将模块下载到项目目录下。运行npm install --production或者注明NODE_ENV变量值为production时,不会自动下载模块到node_modules目录中。总结devDependencies 节点下的模块是在开发时需要用的,比如项目中使用的 gulp ,压缩css、js的模块。 这些模块在项目部署后是不需要的,所以我们可以使用 -save-dev 的形式安装。像 express 这些模块是项目运行必备的,应该安装在 dependencies 节点下,所以我们应该使用 -save 的形式安装。

April 30, 2019 · 1 min · jiezi

Linux安装Beego: cross-compiled与GOBIN出错

Linux下安装Beego出错问题:go install: cannot install cross-compiled binaries when GOBIN is set遇到这个问题一般是在环境变量中设置了 GOBIN 可以打开 /etc/profile 把这个变量注释掉就,执行 source /etc/profile生效即可同样安装完成之后需要在环境变量中追加bee的路径解决思路注释GOBIN选项,并在 /etc/profile 文件中设置GOPATH/bin(永久)export PATH=$GOPATH/bin:$PATH 重新生成配置source /etc/profile可能遇到的问题:添加之后执行bee不成功。查看bee的所在路径 : echo $GOPATH //获取GOPATH的路径 本人是在/data/www/go: find /home/chun/go -name “bee” //查找目录的含bee的文件夹输出:/data/www/go/bin/linux_386/bee/data/www/go/src/github.com/beego/bee/data/www/go/pkg/linux_386/github.com/beego/bee这里可以看到我的linux系统上bee的安装路径和正常不一样,在linux_386下面,接下来只需把/home/chun/go/bin/linux_386添加到环境变量就ok了。export PATH=$GOPATH/bin/linux_386:$PATHsource /etc/profile在GOPATH下删除GOBIN设置(暂时)cd $GOPATHunset GOBIN作者:子恒|haley出处:http://www.cnblogs.com/mylly/交流沟通:QQ群866437035

February 20, 2019 · 1 min · jiezi

使用Rook+Ceph在Kubernetes上作持久存储

作者:Earl C. Ruby III我想在新的Kubernetes集群上安装Prometheus和Grafana,但为了使这些软件包能够工作,他们需要一些地方来存储持久数据。当我在Seagate担任云架构师时,我已经对Ceph进行了性能和规模测试,并且在过去的一年里玩过Rook,所以我决定安装Rook+Ceph,并将其用于Kubernetes集群的数据存储。Ceph是一个分布式存储系统,提供对象、文件和块存储。在每个存储节点上,您将找到Ceph存储对象的文件系统和Ceph OSD(对象存储守护程序)进程。在Ceph集群上,您还可以找到Ceph MON(监控)守护程序,它们确保Ceph集群保持高可用性。Rook充当Ceph在Kubernetes的业务流程层,将OSD和MON流程部署为POD副本集。来自Rook的README文件:Rook将存储软件转变为自我管理、自我扩展和自我修复的存储服务。它通过自动化部署,引导,准备,配置,扩展,升级,迁移,灾难恢复,监控和资源管理来实现此目的。 Rook使用底层云原生容器管理,调度和编排平台提供的工具来执行其职责。https://github.com/rook/rook/…当我创建集群时,我构建了具有40GB硬盘的VM,所以使用5个Kubernetes节点,在我的集群上提供了大约200GB的存储空间,其中大部分都将用于Ceph。安装Rook+Ceph安装Rook+Ceph非常简单。在我的个人群集上,我按照以下步骤安装了Rook+Ceph v0.9.0:git clone git@github.com:rook/rook.gitcd rookgit checkout v0.9.0cd cluster/examples/kubernetes/cephkubectl create -f operator.yamlkubectl create -f cluster.yamlRook将POD部署在两个命名空间中,即rook-ceph-system和rook-ceph。 在我的群集上,POD花了大约2分钟来部署,初始化并进入运行状态。当我等待一切都完成时,我检查了POD状态:$ kubectl -n rook-ceph-system get podNAME READY STATUS RESTARTS AGErook-ceph-agent-8tsq7 1/1 Running 0 2d20hrook-ceph-agent-b6mgs 1/1 Running 0 2d20hrook-ceph-agent-nff8n 1/1 Running 0 2d20hrook-ceph-agent-vl4zf 1/1 Running 0 2d20hrook-ceph-agent-vtpbj 1/1 Running 0 2d20hrook-ceph-agent-xq5dv 1/1 Running 0 2d20hrook-ceph-operator-85d64cfb99-hrnbs 1/1 Running 0 2d20hrook-discover-9nqrp 1/1 Running 0 2d20hrook-discover-b62ds 1/1 Running 0 2d20hrook-discover-k77gw 1/1 Running 0 2d20hrook-discover-kqknr 1/1 Running 0 2d20hrook-discover-v2hhb 1/1 Running 0 2d20hrook-discover-wbkkq 1/1 Running 0 2d20h$ kubectl -n rook-ceph get podNAME READY STATUS RESTARTS AGErook-ceph-mgr-a-7d884ddc8b-kfxt9 1/1 Running 0 2d20hrook-ceph-mon-a-77cbd865b8-ncg67 1/1 Running 0 2d20hrook-ceph-mon-b-7cd4b9774f-js8n9 1/1 Running 0 2d20hrook-ceph-mon-c-86778859c7-x2qg9 1/1 Running 0 2d20hrook-ceph-osd-0-67fff79666-fcrss 1/1 Running 0 35hrook-ceph-osd-1-58bd4ccbbf-lsxj9 1/1 Running 1 2d20hrook-ceph-osd-2-bf99864b5-n4q7v 1/1 Running 0 2d20hrook-ceph-osd-3-577466c968-j8gjr 1/1 Running 0 2d20hrook-ceph-osd-4-6856c5c6c9-92tb6 1/1 Running 0 2d20hrook-ceph-osd-5-8669577f6b-zqrq9 1/1 Running 0 2d20hrook-ceph-osd-prepare-node1-xfbs7 0/2 Completed 0 2d20hrook-ceph-osd-prepare-node2-c9f55 0/2 Completed 0 2d20hrook-ceph-osd-prepare-node3-5g4nc 0/2 Completed 0 2d20hrook-ceph-osd-prepare-node4-wj475 0/2 Completed 0 2d20hrook-ceph-osd-prepare-node5-tf5bt 0/2 Completed 0 2d20h最后工作现在我需要再做两件事,才能安装Prometheus和Grafana:我需要让Rook成为我的集群的默认存储提供程序。由于Prometheus Helm chart请求使用XFS文件系统格式化的卷,因此我需要在所有Ubuntu Kubernetes节点上安装XFS工具。(默认情况下,Kubespray尚未安装XFS,尽管目前有一个PR解决这个问题。)要使Rook成为默认存储提供程序,我只需运行kubectl命令:kubectl patch storageclass rook-ceph-block -p ‘{“metadata”: {“annotations”:{“storageclass.kubernetes.io/is-default-class”:“true”}}}‘这会更新rook-ceph-block存储类,并使其成为群集上存储的默认值。如果没有指定特定的存储类,我安装的任何应用程序都将使用Rook+Ceph进行数据存储。由于我使用Kubespray构建集群,而Kubespray使用Ansible,因此在所有主机上安装XFS工具的最简单方法之一,是使用Ansible“在所有主机上运行单个命令”功能:cd kubesprayexport ANSIBLE_REMOTE_USER=ansibleansible kube-node -i inventory/mycluster/hosts.ini \ –become –become-user root \ -a ‘apt-get install -y xfsprogs’现在已经安装了XFS,我可以使用Helm成功部署Prometheus和Grafana:helm install –name prometheus stable/prometheushelm install –name grafana stable/grafanaHelm chart安装Prometheus和Grafana,并在Rook+Ceph上为Prometheus Server和Prometheus Alert Manager(使用XFS格式化)创建持久存储卷。Prometheus仪表板Grafana仪表板Rook给Prometheus服务器的持久存储希望您觉得这个有帮助。 ...

December 19, 2018 · 1 min · jiezi