近期公司搬迁新的办公环境,在网络层做了安全规则,多网断划分、内外网隔离,因此需要在内网构建私有 NPM、YUM、PIP、Maven、Docker 仓库。
主机 | IP | 系统信息 | 软件 |
---|---|---|---|
yum-repos.host.com | 192.168.1.250 | CentOS Linux release 7.8.2003 (Core) Kernel: 3.10.0-1127.el7.x86_64 | nginx version: nginx/1.20.0 cnmpjs.org 最新版 |
数据库选择
搭建 cnpm 服务是需要数据库支撑的,官方提供了 mysql、sqlite、postgres、mariadb 数据库的支持,在这里我们选用 mysql 来提供数据服务。
# 使用 docker 构建 Mysql 数据 # 安装docker 19.03.9 $ sudo yum install -y yum-utils $ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo $ sudo yum -y install docker-ce-19.03.9 docker-ce-cli-19.03.9 containerd.io # 构建数据库 $ sudo docker pull mysql:5.7.34 $ mkdir /data/mysql-data $ sudo docker run --name cnmp_mysql -v /data/mysql_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=cnmp -p 3306:3306 -d mysql:5.7.34 # 创建数据库并导入 sql $ mysql> create database cnmpjs; $ mysql> source docs/db.sql;
安装配置 CNMPJS.ORG
依赖安装
克隆 cnmpjs.org 项目并安装依赖
# 克隆项目, 使用最新版即可 $ git clone https://github.com/cnpm/cnpmjs.org.git # 安装node $ sudo yum install -y nodejs # 设置 npm 源 $ npm config set registry https://registry.npm.taobao.org # 安装依赖 $ npm install
cnmpjs.org 配置
registryPort: 7001, //registry 端口 webPort: 7002, // web 端口 bindingHost: '' // 所有人都可以访问 database: { db: 'cnpmjs', // 数据库名称 username: 'root', // 数据库用户 password: 'cnmp', // 数据库密码 dialect: 'mysql', // 数据库类型 host: '192.168.1.250', // 数据库主机 port: 3306, // 数据库端口 pool: { maxConnections: 10, minConnections: 0, maxIdleTime: 30000 }, dialectOptions: { trace: true, }, // storage: path.join(dataDir, 'data.sqlite'), logging: !!process.env.SQL_DEBUG, } enablePrivate: false, // 是否开启私有模式 scopes: [ '@cnpm', '@cnpmtest', '@cnpm-test' ], admins: { admin: 'admin@magic.com', // 管理员账号 }
项目启动
npm run start
配置 nginx
server{ listen 80; server_name cnmp-repos.magic.com; location / { proxy_pass http://127.0.0.1:7002/; proxy_set_header X-Real-IP $remote_addr; } location /registry/ { proxy_pass http://127.0.0.1:7001/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
访问: htttp://cnmp-repos.magic.com
测试
npm publish npm notice npm notice