工作中 CentOS 的一些笔记,其实大部分都是 Linux 通用。
[TOC]
安装与配置
CentOS 7
![image-20200707102445214](\阶段 1.assets\image-20200707102445214.png)
创建用户:
CentOS 6
进行 Basic Server 安装:
更新系统
sudo yum update
关闭 SELinux
使用 /usr/sbin/sestatus -v
查看 SELinux 启用状态:
![image-20200707110244291](\阶段 1.assets\image-20200707110244291.png)
从上图可知 SELinux 是开启状态,SELinux 可能会造成 SSH 自定义端口无法生效等问题,以下将其关闭:
sudo vi /etc/selinux/config
将以下字段修改为 disabled
并重启。
此外,暂时关闭 SELinux:
setenforce 0 # 设置 SELinux 成为 permissive 模式 setenforce 1 # 设置SELinux 成为 enforcing 模式
配置防火墙
设置防火墙,允许 2424 端口的 TCP 连接:
sudo firewall-cmd --permanent --zone=public --add-port=2424/tcp
开启 SSH 服务
编辑 SSH 服务配置文件:
sudo vi /etc/ssh/sshd_config
将端口行取消注释,设置 SSH 端口为 2424:
![image-20200707113624552](\阶段 1.assets\image-20200707113624552.png)
启动 SSH 服务:
sudo systemctl start sshd
设置 SSH 服务自动启动:
sudo systemctl enable sshd
通过 Windows SSH 客户端进行连接:
ssh bolitao@192.168.188.128 -p 2424
安装 VMware Tools
挂载虚拟光驱:
sudo mkdir /mnt/tmp # 创建暂存挂载目录
sudo mount -t iso9660 /dev/cdrom /mnt/tmp #以光盘格式将光驱挂载至 /mnt/tmp 目录
此外,挂载 ISO 镜像:
mount -o loop xxx xxx
将挂载内容拷贝至用户目录:
cd /mnt/tmp
mkdir ~/tmp
cp * ~/tmp
安装编译软件:
sudo yum install perl gcc make kernel-headers kernel-devel
安装 VMware Tools:
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
目录:
sudo umount -v /mnt/tmp
JDK
安装 JDK
从主机下载准备的 Oracle JDK:
wget http://192.168.188.1:8000/jdk-8u251-linux-x64.tar.gz
解压缩 JDK:
tar xzf jdk-8u251-linux-x64.tar.gz
在 /usr/lib
下新建 jvm
文件夹,并把解压的 JDK 移至此处:
sudo mkdir /usr/local/jvm
sudo mv ~/jdk1.8.0_251 /usr/local/jvm
使用 update-alternatives
注册 java
和 javac
命令:
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 # 最后一个参数表示优先级,数字越大优先级越高
检查是否生效:
➜ 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:
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:
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:
➜ ~ 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 的几个方法
- 通过 rpm 包进行安装
- 通过 yum 包管理器进行安装(该方法安装的 JDK 会自动配置环境变量,但 yum 只提供 openjdk)
- 通过压缩文件(.tar.gz、.zip)解压缩安装
切换 JDK 环境变量的几个方法
-
使用
update-alternatives
进行管理”配置多个 JDK“有说明。
-
手动切换
.bashrc
中JAVA_HOME
变量的值使用
vim ~/.zshrc
或者vim ~/.bashrc
命令修改 shell 配置文件:export JAVA_HOME=/usr/local/java/jdk1.8.0_251 export PATH=$PATH:$JAVA_HOME/bin
刷新 shell,使刚才配置的环境变量生效:
source ~/.zshrc
检查环境变量无误:
![image-20200707141502676](\阶段 1.assets\image-20200707141502676.png)
Tomcat
安装 tomcat
下载并解压 Tomcat:
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
目录:
sudo mkdir /opt/tomcat
sudo mv ~/apache-tomcat-9.0.37 /opt/tomcat
将 tomcat 注册为服务
使用 systemd 进行服务管理,创建 tomcat systemd 配置文件:
sudo vim /etc/systemd/system/tomcat.service
配置内容如下:
[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:
sudo systemctl daemon-reload
启动 tomcat:
sudo systemctl start tomcat.service
使用 sudo systemctl status tomcat
命令查看 tomcat 作为 systemd 服务的运行状态:
➜ 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
发现可以正常访问:
其他
CentOS 6 与 7 的差别
- 初始化和服务管理:6 使用 Sysvinit,7 使用 systemd
- 日志:6 使用 syslog,7 更多使用 systemd-journalctl
- 包管理:6 的 yum 默认从官方源下载软件包,需手动更改 yum 源;7 更加智能,会自动选择速度最好的yum 镜像地址
防火墙
允许某个端口:
sudo firewall-cmd --permanent --add-port=aaaa/bbb
其中 aaaa
为放行的端口号,bbb
为 UDP
或者 TCP
。
允许 HTTP 服务:
sudo firewall-cmd --permanent --add-service=http
允许 HTTPS 服务:
sudo firewall-cmd --permanent --add-service=https
查看其它可被防火墙允许访问/禁止访问的服务:
sudo firewall-cmd --get-services
防火墙的额外操作:
sudo systemctl stop firewalld # 停止防火墙 sudo systemctl disable firewalld # 禁止防火墙自动启动 sudo systemctl mask --now firewalld # 屏蔽防火墙服务,其他应用也不能启用防火墙 sudo firewall-cmd --zone=public --list-ports # 查看 zone 为 public 的开放的端口
SELinux
暂时关闭:
setenforce 0 # 设置 SELinux 成为 permissive 模式
setenforce 1 # 设置SELinux 成为 enforcing 模式
永久关闭:将 SELinux 配置文件 /etc/selinux/config
中的 SELINUX
字段修改为 disable
。
挂载
挂载光驱:
mount -t iso9660 xxx xxx
挂载 ISO 文件:
mount -o loop xxx xxx
取消挂载:
umount -v /mnt/xxx
挂载光驱,配置本地yum源,实现yum源安装
新建文件夹 /mnt/tmp
,将 /dev/cdrom
挂载至新建文件夹:
sudo mkdir /mnt/tmp
mount -t iso9660 /dev/cdrom /mnt/tmp
新建一个 yum 配置源:
sudo vim //etc/yum.repos.d/local.repo
配置内容如下:
[local]
name=local
baseurl=file:///mnt/tmp
enabled=1
gpgcheck=0
源配置完成后,清除 yum 缓存:
sudo yum clean all
之后便可使用 yum 常用命令:
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 配置模板如下:
[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 才能生效:
sudo systemctl daemon-reload
启动某服务:
sudo systemctl start xxx.service
停止某服务:
sudo systemctl stop xxx.service
屏蔽某服务(其他应用也不能调起该服务):
sudo systemctl mask --now xxx
开机自动启动:
sudo systemctl enable xxx.service
查看服务的运行状态:
sudo systemctl status xxx.service
查看某服务的运行日志:
journalctl -u xxx.service
删除某个由 systemd 管理的服务:
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
:列出管理的服务:
➜ ~ 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:关
其他用法:
chkconfig --add xxx # 添加 xxx 服务
chkconfig --del xxx # 删除
chkconfig xxx on # 开机启动
chkconfig xxx off # 取消开机启动
常用的几个等级:
等级1:单用户模式/救援模式
等级2:无网络连接的多用户命令行模式
等级3:有网络连接的多用户命令行模式
等级5:带图形界面的多用户模式
其他
-
怎样查看指定进程或者查看指定端口
查看某进程:
ps aux | grep xxx # xxx 为进程名
查看某端口:
netstat -ntulp |grep xx # xx 为端口号
-
怎样进行当前服务器上的文件移动,以及服务器之间的文件移动
当前服务器移动文件:
mv
服务器之间的文件移动(
scp
):# 从本机拷贝文件到另一机器: 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
-
怎样挂载光驱,在离线环境安装插件,以及在服务器上查找某个已经安装的插件
新建文件夹
/mnt/tmp
,将/dev/cdrom
挂载至新建文件夹:sudo mkdir /mnt/tmp mount -t iso9660 /dev/cdrom /mnt/tmp
新建一个 yum 配置源:
sudo vim //etc/yum.repos.d/local.repo
配置内容如下:
[local] name=local baseurl=file:///mnt/tmp enabled=1 gpgcheck=0
源配置完成后,清除 yum 缓存:
sudo yum clean all
之后便可使用 yum 常用命令:
sudo yum search xxx # 搜索软件包 sudo yum info xxx # 查看软件包信息 sudo yum list xxx # 列出软件包 sudo yum install xxx # 安装 sudo yum remove xxx # 删除
sudo yum list installed # 查看已安装的 sudo yum list updates # 查看可升级的
查找某个已经安装的软件包:
rpm -q xxx
-
服务的注册,删除和开机自启动配置修改 systemd 配置后,需要刷新 systemd 才能生效:
sudo systemctl daemon-reload
启动某服务:
sudo systemctl start xxx.service
停止某服务:
sudo systemctl stop xxx.service
屏蔽某服务(其他应用也不能调起该服务):
sudo systemctl mask --now xxx
开机自动启动:
sudo systemctl enable xxx.service
查看服务的运行状态:
sudo systemctl status xxx.service
查看某服务的运行日志:
journalctl -u xxx.service
删除某个由 systemd 管理的服务:
sudo systemctl stop 服务名 sudo systemctl disable 服务名 sudo rm /etc/systemd/system/服务名 sudo systemctl daemon-reload sudo systemctl reset-failed
-
查看服务器信息的一些命令,怎么看IP,看服务器版本号
看 IP:
ifconfig ip addr
查看服务器信息:
lsb_release uname -r uname -a screenfetch
-
运行权限和用户权限
运行权限:标识为 x 或者 1,比如:
--x
表示某文件有运行权限,用数字表示为 1rwx
表示有读、写、运行权限,数字表示为 7(4+2+1)。
用户权限:分为普通用户和超级用户,普通用户可使用
sudo
命令暂时提升为管理员权限。 -
怎么查看某个进程的线程
ps -T -p <pid>
top -H # 或者 top -H -p <pid>
-
光驱或镜像的挂载和卸载的命令
挂载光驱:
mount -t iso9660 xxx xxx
挂载 ISO 文件:
mount -o loop xxx xxx
取消挂载:
umount /mnt/xxx