kob项目docker部署

yuanheci 2023年01月14日 355次浏览

  原先的域名yuanheci.top用于博客项目的部署了,今天想把原先的kob项目用二级域名部署一下,查了下发现有了一级域名就不用重新申请二级域名,美滋滋啊,腾讯云上一级域名可以免费解析两个二级域名,立马解析了一个kob.yuanheci.top,并且申请了新的ssl证书(腾讯云上一次性可以申请20张~ 签发也很快,大概5分钟不到就完成了)
  kob项目部署到docker后启动nginx访问,一直提示服务器内部错误如下:

image-20230114111540008

nginx小整理:(可能有出入,后续慢慢完善)

  nginx分为启动文件夹和配置文件夹

  配置文件夹路径:/etc/nginx

  启动文件夹:通过which nginx查找,一般为usr/sbin/nginx或者/usr/nginx/sbin

  此外还可以通过/etc/init.d/nginx启动

  更常用的启动方式service nginx restart

  如果出现错误,检查一下nginx配置文件是否语法有误。。。

  检测配置文件语法:nginx -t

  加载主配置文件并检测配置文件语法:nginx -t -c /etc/nginx/nginx.conf

  重新加载配置文件并启动:sudo nginx -s reload

  nginx排查问题可以看错误日志,日志的路径可以在nginx.conf文件中查看,本服务器上,error_log /var/log/nginx/error.log这个就是路径啦。

  排查了好久才发现这是因为我们nginx是装在宿主机中的,而前端项目是在docker中,所以nginx中配置的index.html路径按照之前的方式直接索引找的是docker中的路径是不对的,需要修改,加上docker本身在宿主机中的路径。

  查看某个容器在宿主机中的位置:

  通过 docker inspect + 容器名/ID 来查看容器的信息,我们需要找到的字段是:GraphDriver

  我们需要关注这里的UpperDir,这里面就是该容器的路径。

  注意:从宿主机直接访问容器内某个文件夹的时候,要一次性用完整路径访问,而不能进入容器后,逐级访问。

   思考与启发: 本次部署是将nginx配置在宿主机,然后进行代理转发,因此需要带上容器路径。如果将nginx部署在各个容器内部是否是一种更好的方式呢?


  之后出现了本地直连kobdocker无法登陆的问题,报错ssh_exchange_identification: read: Connection reset by peer。并且发现宿主机myserver和博客项目blog都是可以ssh登录上的,到这里我还没有意识到问题所在。

  直到尝试重启kob dockerssh服务,service ssh restart,出现关键提示:**Permissions 0755 for /etc/ssh/ssh_host_rsa_key are too open**

  我才意识到这个755权限不是之前为了宿主机中访问kob docker中的前端项目,需要进入/docker,而递归修改了docker中的文件权限吗,这时我发现递归修改导致/docker中所有的文件夹内容都变成了755权限。。。不知道后面还会不会出现鬼问题,先这么用着吧。

  这个提示信息的意思是ssh相关文件的权限开放太大了,需要缩小,经过测试,修改权限chmod 700 ...后,再重启ssh服务service ssh restart后,可以用ssh直连docker了。


  PS: 不行了不行了呜呜呜,改了文件权限后各种鬼问题,只好狠下心删掉了容器,重新部署了一遍~~

  在此记录一下: 宿主机中引用docker容器路径会出现权限问题无法访问,那么根据路径文件夹逐级测试过去,需要加权限的就单独sudo chmod 755 XXX,不要递归修改!!!否则容器中的文件都会被修改权限,会出各种权限问题。


  最后再记一下:ubuntu下安装mysql后直接使用sudo mysql -uroot,即可不用密码进入mysql,然后设置密码即可。有时普通用户会出现无法通过套接字socket进入mysql,可以用sudo登录,或者改成用mysql -uroot -h 127.0.0.1 -p ,即建立TCP/IP连接来登录。

  又是一顿操作过后,终于成功!完结撒花❀!!!

1-1673683965047

2