美文网首页
搭建私人npm仓库并配置域名使用nginx代理

搭建私人npm仓库并配置域名使用nginx代理

作者: 无心之水 | 来源:发表于2021-07-08 10:46 被阅读0次

    搭建

    搭建使用verdaccio插件

    以下环境:centOS 7

    1、安装node+npm

    sudo yum -y install nodejs
    

    或者官网直接下载包,解压之后软链bin下的执行文件到 /usr/bin下(比较靠谱)

    # 在你想放node的地方创建文件夹nodejs,比如 /opt/nodejs
    cd /opt/nodejs
    # 去https://nodejs.org/dist/找到你想安装的版本linux的tar.xz包,右键复制链接地址
    wget https://nodejs.org/dist/v16.4.2/node-v16.4.2-linux-x64.tar.xz
    
    # 解压
    xz -d node-v16.4.2-linux-x64.tar.xz
    tar -xvf node-v16.4.2-linux-x64.tar
        
    # 进入目录
    cd node-v16.4.2-linux-x64
        
    # 创建软连接
    ln -s /opt/nodejs/node-v16.4.2-linux-x64/bin/node /usr/bin/node
    ln -s /opt/nodejs/node-v16.4.2-linux-x64/bin/npm /usr/bin/npm
    ln -s /opt/nodejs/node-v16.4.2-linux-x64/bin/npx /usr/bin/npx
    
    # 测试
    node -v
    npm -v
    

    2、安装verdaccio

    npm i verdaccio -g
    

    安装成功之后可启动verdaccio

    verdaccio
    

    如果出现command not found的问题,可能是你的全局node_modules没有在配置进环境变量,输入以下命令即可解决。

    echo -e "export PATH=$(npm prefix -g)/bin:$PATH" >> ~/.bashrc && source ~/.bashrc
    

    启动verdaccio时可以看到配置文件所在位置,vim 配置文件
    底部加入listen:0.0.0.0:4873即可

    3、使用pm2守护verdaccio

    npm i pm2 -g
    

    使用pm2启动verdaccio时,需要找到verdaccio的全路径

    npm root -g # 获取全局node_modules位置  如:/opt/nodejs/node-v16.4.2-linux-x64/lib/node_modules
    
    pm2 start /opt/nodejs/node-v16.4.2-linux-x64/lib/node_modules/verdaccio/bin/verdaccio
    

    4、安装nginx

    sudo yum install -y nginx
    

    安装完成之后nginx -v测试是否成功
    开启机器的80端口,如果加https,则还需要开启443端口

    # 打开`nginx.conf`
    vim /etc/nginx/nginx.conf
    
    # 在http内最下面添加
    http{
      ...
      server {
      ...
      }
      include /conf.d/*.conf; # 添加这一行,切记要分号!
      ...
    }
    

    保存后进入conf.d文件夹

    vim /etc/nginx/conf.d/npm.xxxx.com.conf
    

    添加如下内容

    server {
            listen 80;
            listen 443 ssl;
            server_name npm.xxxx.com;
    
            # ssl配置与其他网站配置一样
            ssl_certificate /etc/nginx/ssl/xxxx.com_combined.crt;
            ssl_certificate_key /etc/nginx/ssl/xxxx.com.key;
            ssl_ciphers 'xxxxxxxxx';
            ssl_prefer_server_ciphers on;
    
            access_log /data/log/nginx/npm.xxxx.com.access.log;
            error_log /data/log/nginx/npm.xxxx.com.error.log;
    
            # 下面是重点
            location / {
                    # 真实发出请求的客户端IP
                    proxy_set_header X-Real-IP $remote_addr;
                    # 记录代理信息,每经过一级代理(匿名代理除外),代理服务器都会把这次请求的来源IP追加在X-Forwarded-For中
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    # $host变量的值按照如下优先级获得:
                    # 请求行中的host.
                    # 请求头中的Host头部.
                    # 与一条请求匹配的server name.
                    proxy_set_header Host $host;
                    # 用于识别协议(HTTP 或 HTTPS),其中使用的客户端连接到代理或负载平衡器一个真实的标准报头
                    proxy_set_header X-Forwarded-Proto $scheme;
                    proxy_pass http://0.0.0.0:4873;
                    # off参数取消proxy_redirect从先前配置级别继承的指令的效果
                    proxy_redirect off;
            }
    }
    

    最后,nginx -t没问题的话,直接nginx -s reload即可成功访问。(域名dns解析略过~)

    删除发布的包

    cd /home/**/verdaccio/storage
    rm -rf /要删除的包名
    

    刷新即可发现网页上已经没有了

    相关文章

      网友评论

          本文标题:搭建私人npm仓库并配置域名使用nginx代理

          本文链接:https://www.haomeiwen.com/subject/bsbzultx.html