作者存档: Eagle - 第2页

centos的ipv4突然没有了

在CentOS系统中,如果发现IPV4地址突然丢失,通常有以下几种原因和解决方法:

1. **动态IP配置失效**:

   – 如果您的系统配置的是DHCP动态获取IP地址,有可能是DHCP服务出现问题或者租约过期未续订导致的。

   -检查DHICP客户端服务状态:`systemctl status dhclient`(对于较新的CentOS版本)

或`service NetworkManager status`(如果使用NetworkManager)。

   – 重新获取P地址:`sudo dhclient` 或者 `nmcli con down <connection-name>;

 nmcli con up <connection-name>` (针对NetworkManager)。

2. **网络配置文件问题**:

   – 检查网络接口配置文件 `/etc/sysconfig/network-scripts/ifcfg-<interface_name>`,

确保`BOOTPROTO`字段设置为`dhcp`(动态获取IP)或`static`(静态IP),并且配置正确。

   – 如果是静态IP配置,请检查IP地址、子网掩码、网关、DNS等设置是否正确。

3. **网络服务未启动**:

   – 确认网络服务是否启动:`systemctl status network` 或 `systemctl status NetworkManager`。

   – 如未启动,尝试启动服务:`sudo systemctl start network` 或 `sudo systemctl start NetworkManager`。

4. **网络设备状态**:

   – 检查网络接口是否启用:`ip link show` 或 `ifconfig`(旧版系统)。

   – 如接口未激活,尝试启用:`sudo ip link set dev <interface_name> up` 或 `sudo ifup <interface_name>`。

5. **防火墙或SELinux限制**:

   – 检查防火墙是否允许相关服务流量,如使用firewalld:`firewall-cmd –permanent –add-service=network`,

然后`firewall-cmd –reload`。

   – 检查SELinux策略是否影响网络服务,可通过`sestatus`查看SELinux状态,

必要时临时禁用SELinux以诊断问题。

6. **硬件或虚拟化平台问题**:

   – 如果是在虚拟机环境下,检查宿主机的网络配置,确保虚拟网络适配器工作正常。

   – 检查物理网线连接或无线信号是否稳定。

7. **系统升级或配置更改**:

   – 确认最近是否有进行系统升级或网络配置的改动,回滚或重新配置可能造成问题的变更。

8. **系统日志分析**:

   – 查看系统日志,例如 `/var/log/messages` 或 `/var/log/dmesg`,查找关于网络或DHCP

相关的错误信息。


针对不同的原因,采取相应的解决措施,一般可以解决CentOS系统IPV4地址丢失的问题。

如果问题复杂,请进一步检查系统日志以获取更多线索。

rsync 873 端口如何通过Linux服务器防火墙

为了允许通过防火墙使用rsync的默认端口873,你需要在服务器和/或客户端上配置防火墙规则以允许873端口的通信。以下是不同操作系统下的基本步骤:

# 允许873端口的入站连接(假设你正在使用rsync守护进程模式)
sudo ufw allow 873/tcp
# 如果需要同时允许出站连接
sudo ufw allow out 873/tcp
# 检查规则是否生效
sudo ufw status verbose

在iptables防火墙中手动配置(适用于大多数Linux发行版):

# 允许873端口的入站连接
sudo iptables -A INPUT -p tcp --dport 873 -j ACCEPT
# 可能还需要允许出站连接(如果服务器需要发起连接)
sudo iptables -A OUTPUT -p tcp --dport 873 -j ACCEPT
# 如果有防火墙策略保存机制(如firewalld或systemd-networkd),记得保存规则
sudo iptables-save

文件增量同步rsync中delete和exclude参数的使用

实例需求:

3台主机,host1和host3之间文件的单向同步和双向同步问题。

1.同步脚本:

#!/bin/bash

HOST1="172.31.29.221"
USER1="w1"
PASSWORD1="Server123"

HOST2="172.31.28.61"
USER2="w2"
PASSWORD2="Server123"

HOST3="172.31.19.244"
USER3="w3"

# 如果 rsync 守护进程需要此密码文件
RSYNC_OPTS="--password-file=/etc/rsyncd/w.secrets"

#host3向host1单向同步/www/wwwroot/test.com/文件夹,
#同时子目录public/不同步
REMOTE_SOURCE="$USER3@$HOST3::rsync_test"
LOCAL_DIR="/www/wwwroot/test.com/"
rsync -avz --delete --exclude="public/" --exclude="runtime/" \
 $RSYNC_OPTS "$REMOTE_SOURCE" "$LOCAL_DIR"
# 可选:记录日志
echo "$(date): Sync completed from $HOST3 to local server." \
 >> /var/log/sync_from_host3.log

#host1和host3的/www/wwwroot/test.com/public/uploads/
#文件夹双向同步
SOURCE_DIR="$USER3@$HOST3::rsync_test_uploads"
DES_DIR="/www/wwwroot/test.com/public/uploads/"
rsync $RSYNC_OPTS -avz  "$SOURCE_DIR"  "$DES_DIR"
rsync $RSYNC_OPTS -avz  "$DES_DIR"  "$SOURCE_DIR"
# 可选:记录日志
echo "$(date): Sync completed." >> /var/log/sync_to_host3.log

#host3向host1单向同步/www/wwwroot/test.com/public/文件夹,
#同时子目录uploads/不同步
REM_SOURCE="$USER3@$HOST3::rsync_test_public"
LOL_DIR="/www/wwwroot/test.com/public/"
rsync -avz --delete --exclude="uploads/" \
 $RSYNC_OPTS "$REM_SOURCE" "$LOL_DIR"
# 可选:记录日志
echo "$(date): Sync completed from $HOST3 to local server." \ 
 >> /var/log/sync_from_host3.log

2.host3的rsyncd.conf配置文件:

# sample rsyncd.conf configuration file
# GLOBAL OPTIONS
#motd file=/etc/motd
#log file=/var/log/rsyncd
# for pid file, do not use /var/run/rsync.pid if
# you are going to run rsync out of the init.d script.
# The init.d script does its own pid file handling,
# so omit the "pid file" line completely in that case.
# pid file=/var/run/rsyncd.pid
#syslog facility=daemon
#socket options=

# MODULE OPTIONS
address = 172.31.19.244
port = 873
uid = user1_myrsync
gid = myrsync
use chroot = no
max connections=10
timeout = 600

# motd file=/etc/rsyncd/rsyncd.motd
pid file=/var/run/rsyncd.pid
lock file = /var/lock/rsyncd
log file=/var/log/rsync.log
log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.
dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz

[rsync_test]
    comment = abc.com phpcode rsync
    path = /www/wwwroot/test.com
    exclude = public/*** runtime/***
    lock file = /var/lock/rsyncd
# the default for read only is yes. ..
    read only = true
    write only = false
    list = yes

    auth users = user1_myrsync w1 w2 w3 w4
    secrets file = /etc/rsyncd/rsyncd.secrets
    strict modes = no
    hosts allow = 172.31.19.244 172.31.28.61 172.31.29.221 172.31.16.193 172.31.21.140
# hosts deny =
    ignore errors = no
    ignore nonreadable = yes
    transfer logging = no
# log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.
    timeout = 600
    refuse options = checksum dry-run
[rsync_test_uploads]
    comment = public archive is ok by yyyyyyy
    path = /www/wwwroot/test.com/public/uploads/
    lock file = /var/lock/rsyncd
# the default for read only is yes...
    read only = no
    write only = no
    list = yes

    auth users = user1_myrsync w1 w2 w3 w4
    secrets file = /etc/rsyncd/rsyncd.secrets
    strict modes = no
    hosts allow = 172.31.19.244 172.31.28.61 172.31.29.221 172.31.16.193 172.31.21.140
# hosts deny =
    ignore errors = no
    ignore nonreadable = yes
    transfer logging = no
# log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.
    timeout = 600
    refuse options = checksum dry-run
[rsync_test_public]
    comment = test.com phpcode rsync
    path = /www/wwwroot/test.com/public/
    exclude = uploads/*** 
    lock file = /var/lock/rsyncd
# the default for read only is yes. ..
    read only = true
    write only = false
    list = yes

    auth users = user1_myrsync w1 w2 w3 w4
    secrets file = /etc/rsyncd/rsyncd.secrets
    strict modes = no
    hosts allow = 172.31.19.244 172.31.28.61 172.31.29.221 172.31.16.193 172.31.21.140
# hosts deny =
    ignore errors = no
    ignore nonreadable = yes
    transfer logging = no
# log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.
    timeout = 600
    refuse options = checksum dry-run


三台服务器之间的文件增量同步实现方法

有以下三台服务器,用定时任务和rsync服务让他们保持文件增量同步

w1:172.31.29.221   3.21.230.211

w2:172.31.28.61  18.219.170.61

w3:172.31.19.244   18.118.115.101

一、三台服务器都安装rsync服务

1.确认 rsync daemon 是否已安装:

sudo apt update
sudo apt install rsync

2.检查 rsync 配置文件: 

检查是否已经配置了 rsync 守护进程的配置文件,一般位于 /etc/rsyncd.conf。

如果没有此文件或未正确配置,请根据需要创建并配置它:

# sample rsyncd.conf configuration file
# GLOBAL OPTIONS
#motd file=/etc/motd
#log file=/var/log/rsyncd
# for pid file, do not use /var/run/rsync.pid if
# you are going to run rsync out of the init.d script.
# The init.d script does its own pid file handling,
# so omit the "pid file" line completely in that case.
# pid file=/var/run/rsyncd.pid
#syslog facility=daemon
#socket options=
# MODULE OPTIONS
address = 172.31.29.221
port = 873
uid = root
gid = root
use chroot = yes
max connections=10
timeout = 600
# motd file=/etc/rsyncd/rsyncd.motd
pid file=/var/run/rsyncd.pid
lock file = /var/lock/rsyncd
log file=/var/log/rsync.log
log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.
dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
[ftp]
    comment = public archive
#  需要同步的目录
    path = /www/wwwroot/dirtest
    lock file = /var/lock/rsyncd
# the default for read only is yes...
    read only = no
    list = yes
    auth users = root
    secrets file = /etc/rsyncd/rsyncd.secrets
    strict modes = yes
    hosts allow = 172.31.19.244 172.31.28.61 172.31.29.221 
# hosts deny =
    ignore errors = no
    ignore nonreadable = yes
    transfer logging = no
# log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.
    timeout = 600
    refuse options = checksum dry-run

3.创建 systemd service 文件: 

如果系统没有提供预定义的 rsyncd.service 文件,则需要手动创建。

你可以参照其他系统的模板或者官方文档来编写一个符合 systemd 规范的服务文件。

例如,创建 /etc/systemd/system/rsyncd.service 文件,内容可能如下:

[Unit]
   Description=Rsync Daemon
   After=network.target

   [Service]
   ExecStart=/usr/bin/rsync --daemon --config=/etc/rsyncd.conf
   User=root
   Group=root
   PIDFile=/var/run/rsyncd.pid
   Restart=on-failure
   KillMode=process

   [Install]
   WantedBy=multi-user.target

4.重新加载 systemd manager configuration: 

创建好服务文件后,执行以下命令使新添加的服务生效:

sudo systemctl daemon-reload

5.启动和启用 rsyncd 服务:

现在应该能够启用和启动 rsyncd 服务了

sudo systemctl start rsyncd
sudo systemctl enable rsyncd

6.检查 rsyncd 服务是否成功启动

并查看任何可能的日志消息以排查潜在问题

sudo systemctl status rsyncd

二、三台机器上都新建用户组和用户:

addgroup myrsync
useradd -g myrsync -s /sbin/nologin -d /home/w1 w1
passwd w1
useradd -g myrsync -s /sbin/nologin -d /home/w2 w2
passwd w2
useradd -g myrsync -s /sbin/nologin -d /home/w3 w3
passwd w3

三、三台机器都新建一个md5加密了密码“Server123”的文件

vim w.secrets

写入“79f91f8f6fa88c707476af776ff383bd”保存

四、在其中的两台主机上编写同步文件的shell:

1.host 172.31.29.221 上的shell:

#!/bin/bash

HOST1="172.31.29.221"
USER1="w1"
PASSWORD1="Server123"

HOST2="172.31.28.61"
USER2="w2"
PASSWORD2="Server123"

HOST3="172.31.19.244"
USER3="w3"
PASSWORD3="Server123"

RSYNC_OPTS="--password-file=/etc/rsyncd/w.secrets"
# 文件夹名称
SOURCE_DIR="/www/wwwroot/www.abc.com/public/uploads/store/comment/"
DES_DIR="$USER1@$HOST3::ftp"

echo $DES_DIR

rsync $RSYNC_OPTS -avz   "$DES_DIR"   "$SOURCE_DIR"
rsync $RSYNC_OPTS -avz   "$SOURCE_DIR"  "$DES_DIR"
# 可选:记录日志
echo "$(date): Sync completed." >> /var/log/sync_to_host2.log

2.host 172.31.28.61 上的shell:

#!/bin/bash

HOST1="172.31.29.221"
USER1="w1"
PASSWORD1="Server123"

HOST2="172.31.28.61"
USER2="w2"
PASSWORD2="Server123"

HOST3="172.31.19.244"
USER3="w3"
PASSWORD3="Server123"

RSYNC_OPTS="--password-file=/etc/rsyncd/w.secrets"
# 文件夹名称
SOURCE_DIR="/www/wwwroot/ydev2.302010.com/public/uploads/store/comment/"
DES_DIR="$USER1@$HOST3::ftp"

echo $DES_DIR

rsync $RSYNC_OPTS -avz   "$DES_DIR"   "$SOURCE_DIR"
rsync $RSYNC_OPTS -avz   "$SOURCE_DIR"  "$DES_DIR"
# 可选:记录日志
echo "$(date): Sync completed." >> /var/log/sync_to_host2.log

五、添加定时任务,比如每分钟执行一次

Docker安装部署Java应用

安装tomcat

docker pull tomcat
# 提取镜像,生成容器,并命名容器为:mytomcat
docker run -p 8080:8080 --name mytomcat tomcat:latest

安装jdk

在Oracle 官网下载jdk,通过工具上传到centos 7中,然后拷贝到容器中,命令如下:

docker cp *****.gz mytomcat:/root

拷贝成功后,使用如下命令,进入容器mytomcat:

docker exec -it mytomcat bash

然后用cd ~切换到到root目录下,然后新建目录:/usr/local/java,并将jdk拷贝到此目录下,使用tar命令解压,解压完成后,配置系统路径:

exit
vim .bashrc

用vim生成.bashrc文件,并在其中添加如下两行:

export JAVA_HOME=/usr/local/java/jdk1.8.0_211
export PATH=$JAVA_HOME/bin:$PATH

保存 .bashrc,然后复制到容器root目录中,到容器中查看java版本:

docker cp .bashrc mytomcat:/root
docker exec -it mytomcat bash
source ~/.bashrc
java -version

部署web应用

上传war包,并传入mytomcat容器中。注意,拷贝命令是:docker cp xxx.war 97430ad8c4ba:/usr/local/tomcat/webapps,而非:docker cp xxx.war 97430ad8c4ba:/webapps

然后使用命令重启容器,以测试war包发布:

docker restart mytomcat