• 在centos7开启SSH服务


    1、查看是否已安装了SSH服务

      # rpm -qa | grep ssh

       

      该系统中没有安装SSH服务

    2、安装SSH服务

      # yum install openssh-server

         

     安装成功

     3、启动SSH服务

      1)、修改配置文件

      # vi /etc/ssh/sshd_config

      

     esc+:wq 保存退出

      2)、启动服务

      # /bin/systemctl start sshd.service  (该命令没有回显说明成功了)

      3)、在docker会提示错误:Failed to get D-Bus connection: Operation not permitted

    报这个错的原因是dbus-daemon没能启动。systemctl并不是不能使用。将CMD或者entrypoint设置为/usr/sbin/init即可。docker容器会自动将dbus等服务启动起来。

      a)、退出docker

      b)、重新创建容器

        docker run -d -it --privileged aipeli/node:v1 /usr/sbin/init

        在创建容器时一定要把端口映射带!

        docker run -d -it -p 3000:3000 --privileged aipeli/node:v1 /usr/sbin/init

      c)、进入容器

        docker exec -it 91 /bin/bash

     4、查看Openssl-server版本号

      # sshd -v

    5、生成公钥

      1)、进行 cd ~/.ssh,如果不存在,说明没有创建公钥

      2)、生成公钥、私钥

      # ssh-keygen -t rsa -C "xxx@163.com"

      3)、查看公钥

      # cat ~/.ssh/id_rsa.pub

      

    6、将公钥拷贝到gitee里配置

      1)、先创建一个仓库

      2)、在这个仓库里增加公钥

      

    7、在docker可centos服务器上时行测试

      # ssh -T git@gitee.com

      1)、在docker里黙认没有ssh客户端工具

      # yum install openssh-clients

      2)、继续进行测试(3次回车)

      

       3)、测试成功

       4)、在docker中创建存放代码的目录,如:/www

       5)、在www目录中git clone 仓库,一定要用ssh协议,如果仓库为私有时需要输入用户名密码

      # git clone git@gitee.com:aipeli/webhook.git

      6)、查看远程仓库连接,进入/www/webhook目录(/www目录应该从宿主机上挂载,数据与容器分离更于自动化布署)

    如果要挂载目录,创建容器的命令则改为:

      # docker run -d -it -p 3000:3000 -v /wwwroot:/www --privileged aipeli/node:v1 /usr/sbin/init

        /wwwroot:为宿主的目录

        /www:为docker容器的目录

      # git remote -v

        

     到这里,gitee仓库、SSH配置、docker的目录结构配置完成了!

    8、在docker /opt目录中布署文件

      1)、创建目录  mkdir webhook

      # npm init

      # npm install  gitee-webhook-handler --save

      2)、修改package.json

      "start": "node index.js"

      3)、创建deploy.sh文件

     #! /bin/bash
    
    
    git reset --hard origin/master
    git clean -f
    git pull origin master
    npm install
    npm run test
    npm run start

      4)、创建index.js文件

     var http = require('http')
    
    var createHandler = require('gitee-webhook-handler')
    var handler = createHandler({ path: '/webhooks_push', secret: '123456' })# post 所需要用到的秘钥
    
    function run_cmd(cmd, args, callback) {
      var spawn = require('child_process').spawn;
      var child = spawn(cmd, args);
      var resp = "";
      child.stdout.on('data', function(buffer) { resp += buffer.toString(); });
      child.stdout.on('end', function() { callback (resp) });
    }
    handler.on('error', function (err) {
      console.error('Error:', err.message)
    })
    handler.on('Push Hook', function (event) {  # 这个地方就是GitHub 和 Gitee 不一样的地方,需要注意
      console.log('Received a push event for %s to %s',
        event.payload.repository.name,
        event.payload.ref);
        run_cmd('sh', ['./deploy.sh'], function(text){ console.log(text) });# 需要执行的脚本位置
    })
    try {
      http.createServer(function (req, res) {
        handler(req, res, function (err) {
          res.statusCode = 404
          res.end('no such location')
        })
      }).listen(3000) # 服务监听的端口,可以自行修改
    }catch(err){
      console.error('Error:', err.message)
    }

      5)、运行node index.js

    9、配置nginx端口转发

      1)、查看docker端口状态,docker ps

        

       2)、在/www/server/panel/vhost/nginx下创建webhook.aipeli.com.conf配置文件

    server
    {
      listen 80 default_server;
      server_name webhook.aipeli.com;
      location / {
      proxy_pass http://172.17.0.2:3000;
      }
    }

      3)、在宝塔控制面板上打开3000端口(很重要!!!

    查看端口是否开启

    5、映射端口到docker

  • 相关阅读:
    回眸
    随想
    小序,良感
    润思
    网络爬虫的 “ 黑洞 ”
    Python——文件操作详解
    RandomAccessFile详解
    JSON数据解析及gson.jar包
    BigInteger详解
    Java爬虫——B站弹幕爬取
  • 原文地址:https://www.cnblogs.com/aipeli/p/12337735.html
Copyright © 2020-2023  润新知