Linux教程

Linux - 系统配置

本文主要是介绍Linux - 系统配置,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

下载

CentOS7为例,下载地址

http://mirrors.aliyun.com/centos/7/isos/x86_64/

安装

不赘述,网络设置桥接模式

配置网络

vi /etc/sysconfig/network-scripts/ifcfg-ens32

ifcfg-ens32

# 网络类型为以太网
TYPE=Ethernet
# 设置固定ip,dhcp 改为 static
# BOOTPROTU=dhcp
BOOTPROTU=static
# 网卡设备名,一定要跟文件名一致
DEVICE=ens32
# 网卡设备名,一定要跟文件名一致
NAME=ens32
# 设定网卡随网络服务启动
# ONBOOT=no
ONBOOT=yes
# 固定ip
IPADDR=192.168.40.26
# 网关
GATEWAY=192.168.40.254
# 子网掩码
NETMASK=255.255.255.0
# DNS地址
DNS1=8.8.8.8
DNS2=114.114.114.114

重启网络服务,使生效

# 重启网络服务
service network restart

配置国内yum源

查看所有的yum源

yum repolist all

查看可用的yum源

yum repolist enabled

阿里镜像仓库配置

根据官网的说明,我们详细说说每步骤的意思。

(1)备份,将 CentOS-Base.repoCentOS-Base.repo.bak

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

(2)下载新的 http://mirrors.aliyun.com/repo/Centos-7.repo,并命名为CentOS-Base.repo

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

或者

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

(3)清除缓存

yum clean all     # 清除系统所有的yum缓存
yum makecache     # 生成yum缓存

防火墙

firewalld跟iptables比起来至少有两大好处:

  1. firewalld可以动态修改单条规则,而不需要像iptables那样,在修改了规则后必须得全部刷新才可以生效;
  2. firewalld在使用上要比iptables人性化很多,即使不明白“五张表五条链”而且对TCP/IP协议也不理解也可以实现大部分功能。

firewalld跟iptables比起来,不好的地方是每个服务都需要去设置才能放行,因为默认是拒绝。而iptables里默认是每个服务是允许,需要拒绝的才去限制。

centos7开始默认用的是firewalld,这个是基于iptables的,虽然有iptables的核心,但是iptables的服务是没安装的。

firewalld

# 安装防火墙
yum install firewalld firewall-config

# 开启防火墙
systemctl start firewalld

# 将接口添加到区域 --zone=public,默认接口都在public
# --permanent 永久加入,没有这个参数重启后失效
firewall-cmd --zone=public --add-interface=eth0

# 将端口添加到区域 --zone=public,默认接口都在public
# --permanent 永久加入,没有这个参数重启后失效
firewall-cmd --add-port=8080/tcp --permanent

# 刷新防火墙设置 
firewall-cmd --reload

# 查看防火墙中已放开的端口
firewall-cmd --list-ports

# 查看80端口是否开启
firewall-cmd --query-port=80/tcp

# 停止防火墙
systemctl stop firewalld

# 查看防火墙是否开机自启
systemctl is-enabled firewalld

# 禁用防火墙,开机自启关闭
systemctl disable firewalld

# 启用防火墙,开机自启
systemctl enable firewalld

iptables

# 关闭防火墙
service iptables stop

# 禁用防火墙,开机自启关闭
chkconfig iptables off

# 查看防火墙状态
service iptables status

# 查看开机自启列表
chkconfig --list iptables

免密运行sudo

/etc/sudoers文件中,默认打开的 authenticate 参数用于验证目的。如果设置了它,用户必须通过密码(或其他身份验证方法)进行身份验证,然后才能使用 sudo 运行命令。但是,可以使用 NOPASSWD (当用户调用 sudo 命令时不需要密码)标记来覆盖此默认值。

root用户/etc/sudoers 文件只有读的权限,需要给root用户写的权限

# 添加写权限
chmod +w /etc/sudoers

修改/etc/sudoers

# 用户 haung 可以不用密码使用sudo
huang    ALL=(ALL)    NOPASSWD: ALL

# 对于组而言,在组名前面使用 % 字符;这意味着 sys 组的所有成员都可以不用密码使用sudo
%sys    ALL=(ALL)    NOPASSWD: ALL

# sys 组的所有成员都可以不用密码使用sudo运行命令 /bin/kill
%sys    ALL=(ALL)    NOPASSWD: /bin/kill

# sys 组的所有成员都可以不用密码使用sudo运行命令 /bin/kill、/bin/rm
%sys    ALL=(ALL)    NOPASSWD: /bin/kill,/bin/rm

操作完成之后记得收回root的权限

# 收回写权限
chmod -w /etc/sudoers

当然,也不用添加权限、收回权限这么麻烦,可以在root用户修改完后强制保存

# ESC后,:wq! 强制保存
:wq!

SSH免密登录

原理:

https://www.cnblogs.com/haojun/p/11131432.html

工作原理如下图所示:

ssh免密登录

生成公钥和私钥:

[hisign@hadoop91 /]$ ssh-keygen -t rsa

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

[hisign@hadoop91 /]$ cd ~/.ssh/
[hisign@hadoop91 .ssh]$ ll

显示

总用量 12
-rw-------. 1 hisign hisign 1675 11月  9 09:58 id_rsa
-rw-r--r--. 1 hisign hisign  397 11月  9 09:58 id_rsa.pub
-rw-r--r--. 1 hisign hisign  372 11月  9 09:15 known_hosts

将公钥拷贝到要免密登录的目标机器上

ssh-copy-id可以把本地主机的公钥复制到远程主机的authorized_keys文件上,ssh-copy-id命令也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限。

# 给用户hisign配置免密登录
[hisign@hadoop91 .ssh]$ ssh-copy-id hadoop91
[hisign@hadoop91 .ssh]$ ssh-copy-id hadoop92
[hisign@hadoop91 .ssh]$ ssh-copy-id hadoop93

注意:在hadoop92hadoop93上把上面的操作都再执行一遍,三台服务器就能互相之间进行免密登录了。如果想要其他用户也能进行免密登录,切换到其他用户执行上操作即可。

用户密码

# 添加用户huang
useradd huang

# 给用户huang设置密码
passwd huang

# 删除用户huang的密码
passwd -d huang

修改语言

vim /etc/locale.conf

# LANG="en_US.UTF-8"
LANG="zh_CN.UTF-8"

重新加载配置文件

source /etc/locale.conf

可视化桌面

首先安装X(X Window System)

yum groupinstall "X Window System"

安装可视化桌面

yum groupinstall "GNOME Desktop"

启动(如果启动失败,重启reboot)

startx

分发文件

scp 安全拷贝

  • 定义:

scp可以实现服务器与服务器之间的数据拷贝。(from server1 to server2)

基本语法

#命令 递归  要拷贝的文件路径/名称  目的用户@主机:目的路径/名称
scp   -r   $pdir/$fname          $user@hadoop$host:$pdir/$fname
  • 案例

1、在hadoop91上,将hadoop91中/opt/module目录下的软件拷贝到远程服务器hadoop92上。

[hisign@hadoop91 /]$ scp -r /opt/module root@hadoop92:/opt/module

2、在hadoop93上,将远程服务器hadoop91服务器上的/opt/module目录下的软件拷贝到本地。

[hisign@hadoop93 opt]$sudo scp -r hisign@hadoop91:/opt/module /opt/module

3、在hadoop93上操作将hadoop91中/opt/module目录下的软件拷贝到hadoop104上。

[hisign@hadoop93 opt]$ scp -r hisign@hadoop91:/opt/module root@hadoop104:/opt/module

注意:拷贝过来的/opt/module目录,别忘了在hadoop92、hadoop93、hadoop104上修改所有文件的,所有者和所有者组。

sudo chown hisign:hisign -R /opt/module

4、将hadoop91中/etc/profile文件拷贝到hadoop92的/etc/profile上。

[hisign@hadoop91 ~]$ sudo scp /etc/profile root@hadoop92:/etc/profile

5、将hadoop91中/etc/profile文件拷贝到hadoop93的/etc/profile上。

[hisign@hadoop91 ~]$ sudo scp /etc/profile root@hadoop93:/etc/profile

6、将hadoop91中/etc/profile文件拷贝到hadoop104的/etc/profile上。

[hisign@hadoop91 ~]$ sudo scp /etc/profile root@hadoop104:/etc/profile

注意:拷贝过来的配置文件别忘了 source /etc/profile 使生效。

rsync 远程同步工具

rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。

rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。

  • 安装
yum install rsync -y
  • 基本语法
# 命令 选项参数  要拷贝的文件路径/名称  目的用户@主机:目的路径/名称
rsync   -av     $pdir/$fname         $user@hadoop$host:$pdir/$fname
  • 案例

把hadoop91机器上的/opt/software目录同步到hadoop92服务器的root用户下的/opt/目录

rsync -av /opt/software/ hadoop92:/opt/software

xsync 集群分布脚本

1、需求:循环复制文件到所有节点的相同目录下

2、需求分析:

  • rsync命令原始拷贝:
rsync -av   /opt/module  root@hadoop93:/opt/
  • 期望脚本:
xsync 要同步的文件名称
  • 说明:在/home/hisign/bin这个目录下存放的脚本,hisign用户可以在系统任何地方直接执行。

3、脚本实现

/home/hisign目录下创建bin目录,并在bin目录下xsync创建文件,文件内容如下:

mkdir -p  /home/hisign/bin
cd /home/hisign/bin
# 新建脚本
vim xsync

在该文件中编写如下代码

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if ((pcount==0)); then
echo no args;
exit;
fi

#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 获取当前用户名称
user=`whoami`

#5 循环
for((host=91; host<94; host++)); do
    echo ------------------- hadoop$host --------------
    rsync -av $pdir/$fname $user@hadoop$host:$pdir
done
  • 修改脚本 xsync 具有执行权限
chmod 777 xsync
  • 调用脚本形式:xsync 文件名称
xsync /home/hisign/bin

注意:如果将xsync放到/home/hisign/bin目录下仍然不能实现全局使用,可以将xsync移动到/usr/local/bin目录下。

sudo mv /home/hisign/bin/xsync /usr/local/bin

插件推荐

上传下载工具lrzsz

XShell中支持,MobaXterm不支持

# 安装 lrzsz
yum install lrzsz -y

注意:该软件只是用于小文件,比较大的文件还是老老实实用ftp工具吧

lrzsz是Linux/Unix同Windows进行ZModem文件传输的命令行工具。优点就是不用再开一个sftp工具登录上去上传下载文件。
rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到Linux服务器
sz:将选定的文件发送(send)到本地机器

网络工具包net-tools

ifconfig不存在问题

# 安装 net-tools
yum install net-tools -y 

文本编辑器vim

# 安装 net-tools
yum install vim -y 

下载工具wget

# 安装 wget
yum install wget -y 

下载单个文件

wget http://www.linuxde.net/testfile.zip

以下的例子是从网络下载一个文件并保存在当前目录,在下载的过程中会显示进度条,包含(下载完成百分比,已经下载的字节,当前下载速度,剩余下载时间)。

下载另存为

wget -O wordpress.zip http://www.linuxde.net/download.aspx?id=1080

wget默认会以最后一个符合/的后面的字符来命名,对于动态链接的下载通常文件名会不正确。

错误:下面的例子会下载一个文件并以名称download.aspx?id=1080保存:

wget http://www.linuxde.net/download?id=1

即使下载的文件是zip格式,它仍然以download.php?id=1080命令。

正确:为了解决这个问题,我们可以使用参数-O来指定一个文件名:

wget -O wordpress.zip http://www.linuxde.net/download.aspx?id=1080

下载多个文件

wget -i filelist.txt

首先,保存一份下载链接文件:

cat > filelist.txt
url1
url2
url3
url4

接着使用这个文件和参数-i下载。

这篇关于Linux - 系统配置的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!