Linux 服务器端口不可访问问题排查
问题描述
项目中使用的服务器是物理机,使用 centos 7.6 版本的操作系统, 4 个千兆网口,上架时间 23 年 8 月份。部署在内网机房,并且在内网机房分配的固定IP 是 172.87.7.249
,并在机器上部署了 docker,
项目中使用的服务器是物理机,使用 centos 7.6 版本的操作系统, 4 个千兆网口,上架时间 23 年 8 月份。部署在内网机房,并且在内网机房分配的固定IP 是 172.87.7.249
,并在机器上部署了 docker,
nohup 表示不挂断地运行命令,是 no hangup 的缩写,语法格式如下:
1 | nohup Command [ Arg ... ] [ & ] |
namespace 是 Linux 内核用来隔离内核资源的方式。通过 namespace 可以让一些进程只能看到与自己相关的一部分资源,而另外一些进程也只能看到与它们自己相关的资源,这两拨进程根本就感觉不到对方的存在。具体的实现方式是把一个或多个进程的相关资源指定在同一个 namespace 中。
Linux namespaces 是对全局系统资源的一种封装隔离,使得处于不同 namespace 的进程拥有独立的全局系统资源,改变一个 namespace 中的系统资源只会影响当前 namespace 里的进程,对其他 namespace 中的进程没有影响。
yum(Yellowdog Updater Modified):是一个基于 RPM 的软件包管理器,能够从指定服务器自动下载RPM包并且安装,可以处理软件之间的依赖关系,一次性安装所有依赖的软件包,无需一个个下载安装。
yum 客户端及服务器的工作原理如下图所示
top
命令允许用户监视 Linux 上的进程和系统资源使用情况,它是系统管理员工具箱中最有用的工具之一,并且在每个发行版中都预装了它。与 ps
等其他命令不同,它是交互式的,我们可以浏览进程列表、终止进程,等等。本文中,我们将了解如何使用 top
命令。
近期的一个项目,需要使用 MySQL 5.7,但是甲方所提供的机器是不能访问外网环境的,所以只能通过离线安装的方式来搞,这里大概记录一下,备忘。
选择 Linux - Generic
-> Compressed TAR Archive:(mysql-5.7.18-linux-glibc2.12-x86_64.tar.gz)
,版本按需下载即可;下面是具体的安装过程。
1 | rpm -qa | grep mariadb |
为了数据库管理,对于安装的 MySQL 数据库,生产上我们都会建立一个 mysql用户和mysql用户组。
1 | # 先检查mysql用户和用户组有没有被使用 |
如果甲方提供了 访问 VPN ,那么则通过 VPN 建立连接;或者通过甲方提供的方式将文件上传到指定的机器上
1 | # 解压安装包,解压后会有一个mysql-5.7.18-linux-glibc2.12-x86_64.tar.gz包 |
按照下面的操作执行
1 | cd /usr/local/ |
默认这个配置文件是不存在的,需要创建,并且填入配置信息;在 /usr/local/mysql/ 目录下创建文件并编辑
1 | cd /usr/local/mysql/ |
具体配置信息大致如下
1 | [mysql] |
进入 /usr/local/mysql/ 目录下,执行安装操作。
1 | # 执行安装命令 |
安装后,如下信息表示安装成功
2023-03-23 14:32:16 [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld –initialize
2023-03-23 14:32:20 [WARNING] The bootstrap log isn’t empty:
2023-03-23 14:32:20 [WARNING] 2023-03-23T06:32:16.437877Z 0 [Warning] –bootstrap is deprecated. Please consider using –initialize instead
2023-03-23T06:32:16.438432Z 0 [Warning] Changed limits: max_open_files: 1024 (requested 5000)
2023-03-23T06:32:16.438439Z 0 [Warning] Changed limits: table_open_cache: 431 (requested 2000)
安装成功后设置文件及目录权限:
1 | # 在 /usr/local/mysql 目录下执行 |
/etc/init.d/mysqld restart
我的机器上是出现了如下的报错
1 | ERROR! MySQL server PID file could not be found! |
如果 /usr/local/mysql/data/localhost.localdomain.err 这个文件存在,就进去看一下具体原因,如果没有就按照以下步骤执行。
1 | # 创建 /var/lib/mysql/ |
配置环境变量,在配置文件中 export PATH=$PATH:/usr/local/mysql/bin
1 | # 修改配置文件 /etc/profile |
然后重新启动即可。
1 | [root@localhost mysql]# cat /root/.mysql_secret |
1 | mysql -uroot -p |
解决方案:
1、首先保证在 my.cnf 文件中 socket 的配置如下:
1 | ... |
2、对 /tmp/mysql.sock 和 /var/lib/mysql/mysql.sock 建立软连接
1 | ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock |
1 | # 执行语句如下 |
1 | # 切换到 mysql 数据库 |
1 | # 将mysqld服务加入到系统服务 |
此时如果通过 远程访问还是访问不通,则可能是因为防火墙的问题;这里有两种解决办法
1 | systemctl stop firewalld |
1 | firewalld-cmd --zone=public --add-port=3306/tcp --permanent |
最近在搞 Apollo ,熟悉的同学应该知道,Apollo 需要依赖 Mysql。本以为很容易搞定,但是却踩了一路坑,眼高手低,也参考了网上很多博客,果然是残缺就是美!本篇就简单记录一下这个过程,以便后面参考。
| 软件 | 版本|
| ———— | ———— |
|linux | centOS 7|
| jdk | 8 |
| mysql| 5.7.24 |
目前 Curator 有 2.x.x 和 3.x.x 两个系列的版本,支持不同版本的 Zookeeper。其中 Curator 2.x.x 兼容 Zookeeper的 3.4.x 和 3.5.x。而 Curator 3.x.x 只兼容 Zookeeper 3.5.x。
Curator 2.x.x - compatible with both ZooKeeper 3.4.x and ZooKeeper 3.5.x
Curator 3.x.x - compatible only with ZooKeeper 3.5.x and includes support for new
OPTION | 解释 |
---|---|
[-a file] | 如果file存在则为真 ,也可以表示为 and: 条件与 if [ -z “condition1” -a -z “condition2” ] |
[-b file] | 如果file存在且是一个块特殊文件则为真 |
[-c file] | 如果file存在且是一个字特殊文件则为真 |
[-d file] | 如果 file 文件存在且是一个目录则为真,d前的!是逻辑非 #表示目录不存在,则执行后面的 then 操作 if [ ! -d lcd_path/par_date ] |
[-e file] | 如果 file文件存在则为真 |
[-f file] | 如果 file 存在且是一个普通文件则为真 |
[-g file] | 如果 file 存在且已经设置了SGID则为真(SUID 是 Set User ID, SGID 是 Set Group ID的意思) |
[-h file] | 如果 file 存在且是一个符号连接则为真 |
[-k file] | 如果 file 存在且已经设置粘制位则为真 |
[-p file] | 如果file存在且是一个名字管道(F如果O)则为真。管道是linux里面进程间通信的一种方式, 其他的还有像信号(signal)、信号量、消息队列、共享内存、套接字(socket)等 |
[-r file] | 如果file存在且是可读的则为真 |
[-s file] | 如果file存在且大小不为0则为真 |
[-t FD] | 如果文件描述符FD打开且指向一个终端则为真 |
[-u file] | 如果file存在且设置了SUID(set userID)则为真 |
[-w file | 如果file存在且是可写的则为真 |
[-x file] | 如果file存在且是可执行的则为真 |
[-O file] | 如果file存在且属有效用户ID则为真 |
[-G file] | 如果file存在且属有效用户组则为真 |
[-L file] | 如果file存在且是一个符号连接则为真 |
[-N file] | 如果file存在and has been mod如果ied since it was last read则为真 |
[-S file] | 如果file存在且是一个套接字则为真 |
[-o optionname] | 如果shell选项“optionname”开启则为真 |
[-z string] | “string”的长度为零则为真 |
[-n string] or [string] | “string”的长度为非零non-zero则为真 |