原先的域名yuanheci.top
用于博客项目的部署了,今天想把原先的kob
项目用二级域名部署一下,查了下发现有了一级域名就不用重新申请二级域名,美滋滋啊,腾讯云上一级域名可以免费解析两个二级域名,立马解析了一个kob.yuanheci.top
,并且申请了新的ssl
证书(腾讯云上一次性可以申请20张~ 签发也很快,大概5分钟不到就完成了)
kob
项目部署到docker
后启动nginx
访问,一直提示服务器内部错误如下:
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
部署在各个容器内部是否是一种更好的方式呢?
之后出现了本地直连kob
的docker
无法登陆的问题,报错ssh_exchange_identification: read: Connection reset by peer
。并且发现宿主机myserver
和博客项目blog
都是可以ssh
登录上的,到这里我还没有意识到问题所在。
直到尝试重启kob docker
的ssh
服务,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
连接来登录。
又是一顿操作过后,终于成功!完结撒花❀!!!