工作中 CentOS 的一些笔记 01

工作中 CentOS 的一些笔记 01

工作中 CentOS 的一些笔记,其实大部分都是 Linux 通用。

[TOC]

安装与配置

CentOS 7

![image-20200707102445214](\阶段 1.assets\image-20200707102445214.png)

创建用户:

image-20200707102520379

CentOS 6

进行 Basic Server 安装:

image-20200707103349531

更新系统

1
sudo yum update

关闭 SELinux

使用 /usr/sbin/sestatus -v 查看 SELinux 启用状态:

![image-20200707110244291](\阶段 1.assets\image-20200707110244291.png)

从上图可知 SELinux 是开启状态,SELinux 可能会造成 SSH 自定义端口无法生效等问题,以下将其关闭:

1
sudo vi /etc/selinux/config

将以下字段修改为 disabled 并重启。

image-20200707112704057

此外,暂时关闭 SELinux:

1
2
setenforce 0 # 设置 SELinux 成为 permissive 模式
setenforce 1 # 设置SELinux 成为 enforcing 模式

配置防火墙

设置防火墙,允许 2424 端口的 TCP 连接:

1
sudo firewall-cmd --permanent --zone=public --add-port=2424/tcp

开启 SSH 服务

编辑 SSH 服务配置文件:

1
sudo vi /etc/ssh/sshd_config

将端口行取消注释,设置 SSH 端口为 2424:

![image-20200707113624552](\阶段 1.assets\image-20200707113624552.png)

启动 SSH 服务:

1
sudo systemctl start sshd

设置 SSH 服务自动启动:

1
sudo systemctl enable sshd

通过 Windows SSH 客户端进行连接:

1
ssh bolitao@192.168.188.128 -p 2424

image-20200707114731298

安装 VMware Tools

挂载虚拟光驱:

1
2
sudo mkdir /mnt/tmp # 创建暂存挂载目录
sudo mount -t iso9660 /dev/cdrom /mnt/tmp #以光盘格式将光驱挂载至 /mnt/tmp 目录

此外,挂载 ISO 镜像:

1
mount -o loop xxx xxx

将挂载内容拷贝至用户目录

1
2
3
cd /mnt/tmp
mkdir ~/tmp
cp * ~/tmp

安装编译软件:

1
sudo yum install perl gcc make kernel-headers kernel-devel

安装 VMware Tools:

1
2
3
4
cd ~/tmp
tar xzvf VMwareTools-10.3.21-14772444.tar.gz # 解压缩
cd vmware-tools-distrib
sudo ./vmware-install.pl

![image-20200707112444415](\阶段 1.assets\image-20200707112444415.png)

取消挂载 tmp 目录:

1
sudo umount -v /mnt/tmp

JDK

安装 JDK

从主机下载准备的 Oracle JDK:

1
wget http://192.168.188.1:8000/jdk-8u251-linux-x64.tar.gz

解压缩 JDK:

1
tar xzf jdk-8u251-linux-x64.tar.gz

/usr/lib 下新建 jvm 文件夹,并把解压的 JDK 移至此处:

1
2
sudo mkdir /usr/local/jvm
sudo mv ~/jdk1.8.0_251 /usr/local/jvm

使用 update-alternatives 注册 javajavac 命令:

1
2
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_251/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.8.0_251/bin/javac 300 # 最后一个参数表示优先级,数字越大优先级越高

检查是否生效:

1
2
3
4
5
6
➜  jdk1.8.0_251 java -version
java version "1.8.0_251"
Java(TM) SE Runtime Environment (build 1.8.0_251-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.251-b08, mixed mode)
➜  jdk1.8.0_251 javac -version
javac 1.8.0_251

配置多个 JDK

新增一个 JDK 11:

1
2
3
wget http://192.168.188.1:8000/jdk-11.0.7_linux-x64_bin.tar.gz # 下载
tar xzf jdk-11.0.7_linux-x64_bin.tar.gz # 解压
sudo mv jdk-11.0.7 /usr/lib/jvm # 移动至 /usr/lib/jvm 目录

通过 update-alternatives 注册新的 JDK 11:

1
2
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-11.0.7/bin/java 200
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk-11.0.7/bin/javac 200

使用 update-alternatives 切换 JDK:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
➜  ~ sudo update-alternatives --config java

共有 2 个提供“java”的程序。

  选项    命令
-----------------------------------------------
*+ 1           /usr/lib/jvm/jdk1.8.0_251/bin/java
   2           /usr/lib/jvm/jdk-11.0.7/bin/java

按 Enter 保留当前选项[+],或者键入选项编号:2
➜  ~ sudo update-alternatives --config javac

共有 2 个提供“javac”的程序。

  选项    命令
-----------------------------------------------
*+ 1           /usr/lib/jvm/jdk1.8.0_251/bin/javac
   2           /usr/lib/jvm/jdk-11.0.7/bin/javac

按 Enter 保留当前选项[+],或者键入选项编号:2

检查切换是否生效:

![image-20200707144206480](\阶段 1.assets\image-20200707144206480.png)

可以看到 JDK 版本已经由 1.8 切换为 11。

安装 JDK 的几个方法

  1. 通过 rpm 包进行安装
  2. 通过 yum 包管理器进行安装(该方法安装的 JDK 会自动配置环境变量,但 yum 只提供 openjdk
  3. 通过压缩文件(.tar.gz、.zip)解压缩安装

切换 JDK 环境变量的几个方法

  1. 使用 update-alternatives 进行管理

    ”配置多个 JDK“有说明。

  2. 手动切换 .bashrcJAVA_HOME 变量的值

    使用 vim ~/.zshrc 或者 vim ~/.bashrc 命令修改 shell 配置文件:

    1
    2
    
    export JAVA_HOME=/usr/local/java/jdk1.8.0_251
    export PATH=$PATH:$JAVA_HOME/bin
    

    刷新 shell,使刚才配置的环境变量生效:

    1
    
    source ~/.zshrc
    

    检查环境变量无误:

    ![image-20200707141502676](\阶段 1.assets\image-20200707141502676.png)

Tomcat

安装 tomcat

下载并解压 Tomcat:

1
2
wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.37/bin/apache-tomcat-9.0.37.tar.gz
tar xvf apache-tomcat-9.0.37.tar.gz

将 Tomcat 移动至 /opt/tomcat 目录:

1
2
sudo mkdir /opt/tomcat
sudo mv ~/apache-tomcat-9.0.37 /opt/tomcat

将 tomcat 注册为服务

使用 systemd 进行服务管理,创建 tomcat systemd 配置文件:

1
sudo vim /etc/systemd/system/tomcat.service

配置内容如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
[Unit]
Description=Apache Tomcat
After=syslog.target network.target

[Service]
Type=forking

Environment=JAVA_HOME=/usr/lib/jvm/jdk1.8.0_251
Environment=CATALINA_PID=/opt/tomcat/apache-tomcat-9.0.37/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat/apache-tomcat-9.0.37
Environment=CATALINA_BASE=/opt/tomcat/apache-tomcat-9.0.37
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'

ExecStart=/opt/tomcat/apache-tomcat-9.0.37/bin/startup.sh
ExecStop=/opt/tomcat/apache-tomcat-9.0.37/bin/shutdown.sh

[Install]
WantedBy=multi-user.target

重载 systemd:

1
sudo systemctl daemon-reload

启动 tomcat:

1
sudo systemctl start tomcat.service

使用 sudo systemctl status tomcat 命令查看 tomcat 作为 systemd 服务的运行状态:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
➜  apache-tomcat-9.0.37 sudo systemctl status tomcat
● tomcat.service - Apache Tomcat
   Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: disabled)
   Active: active (running) since 二 2020-07-07 15:20:28 CST; 1min 28s ago
  Process: 5983 ExecStart=/opt/tomcat/apache-tomcat-9.0.37/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 5990 (java)
   CGroup: /system.slice/tomcat.service
           └─5990 /usr/lib/jvm/jdk1.8.0_251/bin/java -Djava.util.logging.config.file=/opt/tomcat/apache-tomcat-9.0.37/conf/logging...

7月 07 15:20:28 localhost.localdomain systemd[1]: Starting Apache Tomcat...
7月 07 15:20:28 localhost.localdomain startup.sh[5983]: Tomcat started.
7月 07 15:20:28 localhost.localdomain systemd[1]: Started Apache Tomcat.

可以看到 systemctl status 显示该服务在后台正常运行。访问 ip:port 发现可以正常访问:

image-20200707152344966

其他

CentOS 6 与 7 的差别

  • 初始化和服务管理:6 使用 Sysvinit,7 使用 systemd
  • 日志:6 使用 syslog,7 更多使用 systemd-journalctl
  • 包管理:6 的 yum 默认从官方源下载软件包,需手动更改 yum 源;7 更加智能,会自动选择速度最好的yum 镜像地址

防火墙

允许某个端口:

1
sudo firewall-cmd --permanent --add-port=aaaa/bbb

其中 aaaa 为放行的端口号,bbbUDP 或者 TCP

允许 HTTP 服务:

1
sudo firewall-cmd --permanent --add-service=http

允许 HTTPS 服务:

1
sudo firewall-cmd --permanent --add-service=https

查看其它可被防火墙允许访问/禁止访问的服务:

1
sudo firewall-cmd --get-services

防火墙的额外操作:

1
2
3
4
sudo systemctl stop firewalld # 停止防火墙
sudo systemctl disable firewalld # 禁止防火墙自动启动
sudo systemctl mask --now firewalld # 屏蔽防火墙服务,其他应用也不能启用防火墙
sudo firewall-cmd --zone=public --list-ports # 查看 zone 为 public 的开放的端口

SELinux

暂时关闭:

1
2
setenforce 0 # 设置 SELinux 成为 permissive 模式
setenforce 1 # 设置SELinux 成为 enforcing 模式

永久关闭:将 SELinux 配置文件 /etc/selinux/config 中的 SELINUX 字段修改为 disable

挂载

挂载光驱:

1
mount -t iso9660 xxx xxx

挂载 ISO 文件:

1
mount -o loop xxx xxx

取消挂载:

1
umount -v /mnt/xxx

挂载光驱,配置本地yum源,实现yum源安装

新建文件夹 /mnt/tmp,将 /dev/cdrom 挂载至新建文件夹:

1
2
sudo mkdir /mnt/tmp
mount -t iso9660 /dev/cdrom /mnt/tmp

新建一个 yum 配置源:

1
sudo vim //etc/yum.repos.d/local.repo

配置内容如下:

1
2
3
4
5
[local]
name=local
baseurl=file:///mnt/tmp
enabled=1                    
gpgcheck=0

源配置完成后,清除 yum 缓存:

1
sudo yum clean all

之后便可使用 yum 常用命令:

1
2
3
4
5
sudo yum search xxx # 搜索软件包
sudo yum info xxx # 查看软件包信息
sudo yum list xxx # 列出软件包
sudo yum install xxx # 安装
sudo yum remove xxx # 删除

注册服务

CentOS 7 后,启动方式换成了 systemd,对应的命令为 systemctl

将某个通过 SprnigBoot 打包的 Java jar/war 程序作为服务运行的 systemd 配置模板如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
[Unit]
Description=服务描述
Documentation=官网、文档等
After=network-online.target
Wants=network-online.target

[Service]
User=root# 运行的用户名
Type=simple
ExecStart=/usr/bin/java -server -Xms256m -Xmx512m -jar jar包路径
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandOutput=syslog

StandError=inherit

[Install]
WantedBy=multi-user.target

修改 systemd 配置后,需要刷新 systemd 才能生效:

1
sudo systemctl daemon-reload

启动某服务:

1
sudo systemctl start xxx.service

停止某服务:

1
sudo systemctl stop xxx.service

屏蔽某服务(其他应用也不能调起该服务):

1
sudo systemctl mask --now xxx

开机自动启动:

1
sudo systemctl enable xxx.service

查看服务的运行状态:

1
sudo systemctl status xxx.service

查看某服务的运行日志:

1
journalctl -u xxx.service

删除某个由 systemd 管理的服务:

1
2
3
4
5
sudo systemctl stop 服务名
sudo systemctl disable 服务名
sudo rm /etc/systemd/system/服务名
sudo systemctl daemon-reload
sudo systemctl reset-failed

chkconfig

chkconfig 是 centos6 时代使用比较多的服务管理程序,现在用得较多的是 systemd

使用 chkconfig 管理的服务,其配置文件保存在 /etc/init.d 目录下。

chkconfig --list:列出管理的服务:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
➜  ~ sudo chkconfig --list

注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。

      要列出 systemd 服务,请执行 'systemctl list-unit-files'。
      查看在具体 target 启用的服务请执行
      'systemctl list-dependencies [target]'。

netconsole      0:关    1:关    2:关    3:关    4:关    5:关    6:关
network         0:关    1:关    2:开    3:开    4:开    5:开    6:关
vmware-tools    0:关    1:关    2:开    3:开    4:开    5:开    6:关

其他用法:

1
2
3
4
chkconfig --add xxx # 添加 xxx 服务
chkconfig --del xxx # 删除
chkconfig xxx on # 开机启动
chkconfig xxx off # 取消开机启动

常用的几个等级:

等级1:单用户模式/救援模式

等级2:无网络连接的多用户命令行模式

等级3:有网络连接的多用户命令行模式

等级5:带图形界面的多用户模式

其他

  1. 怎样查看指定进程或者查看指定端口

    查看某进程:

    1
    
    ps aux | grep xxx # xxx 为进程名
    

    查看某端口:

    1
    
    netstat -ntulp |grep xx # xx 为端口号
    
  2. 怎样进行当前服务器上的文件移动,以及服务器之间的文件移动

    当前服务器移动文件:

    1
    
    mv
    

    服务器之间的文件移动(scp):

    1
    2
    3
    4
    5
    6
    7
    8
    
    # 从本机拷贝文件到另一机器:
    scp {{path/to/local_file}} {{remote_host}}:{{path/to/remote_file}}
    # 从其他机器拷贝文件到本机:
    scp {{remote_host}}:{{path/to/remote_file}} {{path/to/local_directory}}
    # 递归拷贝目录:
    scp -r
    # 指定用户名:
    scp localFile remote_username@remote_host:remote_directory
    
  3. 怎样挂载光驱,在离线环境安装插件,以及在服务器上查找某个已经安装的插件

    新建文件夹 /mnt/tmp,将 /dev/cdrom 挂载至新建文件夹:

    1
    2
    
    sudo mkdir /mnt/tmp
    mount -t iso9660 /dev/cdrom /mnt/tmp
    

    新建一个 yum 配置源:

    1
    
    sudo vim //etc/yum.repos.d/local.repo
    

    配置内容如下:

    1
    2
    3
    4
    5
    
    [local]
    name=local
    baseurl=file:///mnt/tmp
    enabled=1                    
    gpgcheck=0
    

    源配置完成后,清除 yum 缓存:

    1
    
    sudo yum clean all
    

    之后便可使用 yum 常用命令:

    1
    2
    3
    4
    5
    
    sudo yum search xxx # 搜索软件包
    sudo yum info xxx # 查看软件包信息
    sudo yum list xxx # 列出软件包
    sudo yum install xxx # 安装
    sudo yum remove xxx # 删除
    
    1
    2
    
    sudo yum list installed # 查看已安装的
    sudo yum list updates # 查看可升级的
    

    查找某个已经安装的软件包:

    1
    
    rpm -q xxx
    
  4. 服务的注册,删除和开机自启动配置修改 systemd 配置后,需要刷新 systemd 才能生效:

    1
    
    sudo systemctl daemon-reload
    

    启动某服务:

    1
    
    sudo systemctl start xxx.service
    

    停止某服务:

    1
    
    sudo systemctl stop xxx.service
    

    屏蔽某服务(其他应用也不能调起该服务):

    1
    
    sudo systemctl mask --now xxx
    

    开机自动启动:

    1
    
    sudo systemctl enable xxx.service
    

    查看服务的运行状态:

    1
    
    sudo systemctl status xxx.service
    

    查看某服务的运行日志:

    1
    
    journalctl -u xxx.service
    

    删除某个由 systemd 管理的服务:

    1
    2
    3
    4
    5
    
    sudo systemctl stop 服务名
    sudo systemctl disable 服务名
    sudo rm /etc/systemd/system/服务名
    sudo systemctl daemon-reload
    sudo systemctl reset-failed
    
  5. 查看服务器信息的一些命令,怎么看IP,看服务器版本号

    看 IP:

    1
    2
    
    ifconfig
    ip addr
    

    查看服务器信息:

    1
    2
    3
    4
    
    lsb_release
    uname -r
    uname -a
    screenfetch
    
  6. 运行权限和用户权限

    运行权限:标识为 x 或者 1,比如:

    • --x 表示某文件有运行权限,用数字表示为 1
    • rwx 表示有读、写、运行权限,数字表示为 7(4+2+1)。

    用户权限:分为普通用户和超级用户,普通用户可使用 sudo 命令暂时提升为管理员权限。

  7. 怎么查看某个进程的线程

    1
    
    ps -T -p <pid>
    
    1
    2
    3
    
    top -H
    # 或者
    top -H -p <pid>
    
  8. 光驱或镜像的挂载和卸载的命令

    挂载光驱:

    1
    
    mount -t iso9660 xxx xxx
    

    挂载 ISO 文件:

    1
    
    mount -o loop xxx xxx
    

    取消挂载:

    1
    
    umount /mnt/xxx
    
加载评论