关于CentOS & 杂项的注意事项
如何在VirtualBox中安装CentOS。
引言
这是一篇关于 CentOS & 杂项的笔记。
背景
这是一篇关于流行的 Linux 发行版 CentOS & 杂项的笔记。在本笔记中,我将涵盖以下主题。
- 如何在 VirtualBox 中安装 CentOS 操作系统
- 如何在 CentOS 计算机上安装程序。我将讨论 YUM 工具。
- 如何在 CentOS 计算机上设置 Java 和 Tomcat。我将讨论如何使用 CHKCONFIG 工具在计算机启动时自动启动 Tomcat。
- 如何在 CentOS 计算机上安装 Apache Web 服务器。我将讨论如何使用 Apache 作为 Tomcat 服务器的反向代理。我还将讨论如何通过 SYSTEMD 工具启用 Apache 在计算机启动时自动启动。
- 以及可能的杂项主题,例如 SSH。
在 VirtualBox 中安装 CentOS
VirtualBox 是一个易于使用的虚拟主机系统。如果您不熟悉它,我建议您看看我之前的笔记 在 VirtualBox 中运行 Linux for Microsoft Windows - 2017,其中我展示了如何创建 Linux Mint VM (虚拟机)。如果您想按照这篇笔记创建自己的 CentOS VM,我有以下建议:
- 我建议选择较新版本的 VirtualBox。我注意到较早版本的 VirtualBox 在较新版本的操作系统发行版上存在困难;
- 我建议选择较新版本的 CentOS ISO,例如 CentOS 7;
- 我建议选择 20G 或更大的固定大小 DVI (VirtualBox Disk Image),以获得更好的性能。
CentOS 下载页面提供了多个 ISO 选项。在本笔记中,我选择了 DVD ISO 选项。
将 CentOS 安装到 VM
将 CentOS 安装到 VM 的过程很简单。如果您不熟悉 VirtualBox,可以参考我之前的笔记 在 VirtualBox 中运行 Linux for Microsoft Windows - 2017。CentOS ISO 提供了多种安装选项。我建议选择 **Server with GUI** 选项,它在大小和功能之间取得了很好的平衡。
默认情况下,安装后网络连接被禁用,我建议您启用它。
在安装过程中,您有机会设置 root
用户的密码并创建您自己的用户。我建议您这样做。我还建议您将您的用户设为管理员。
VirtualBox Guest Additions
为了获得更好的用户体验,您需要安装 Guest Additions。您可以点击 **Devices** - > **Insert Guest Additions CD image ...** 来安装 Guest Additions。根据 VirtualBox 的版本和您的 CentOS ISO,安装可能会失败,并出现类似以下的错误信息:
根据 此链接,您可以运行以下命令来安装 **Development Tools**。
yum update
yum groupinstall "Development Tools"
yum install kernel-devel
您可能还需要安装以下软件包:
yum install epel-release
yum install dkms
在安装完软件包后,您应该能够成功安装 VirtualBox Guest Additions。
VirtualBox VM 过度占用 CPU
根据 VirtualBox 和主机计算机操作系统的版本,您的 VM 可能会偶尔冻结。我在 Mac 主机计算机上观察到 VirtualBox VM 过度占用 CPU。在这种情况下,您可以更改 VM 的默认设置 -> System -> Acceleration,取消选中 Enable Nested Paging。
如果问题仍未解决,您可以将 **Paravirtualization Interface** 设置为 **NONE**。
软件包安装 & YUM
Google Chrome 不是 CentOS 计算机上的默认安装。您可以通过以下命令双重检查 Google Chrome 是否已安装:
which google-chrome
我们可以借此机会安装 Google Chrome 并熟悉软件包管理工具 YUM。
使用 YUM 安装 Google Chrome
Google Chrome 不在默认的 YUM 存储库中。要 在 Centos 7 上安装 Google Chrome,我们需要在文件 /etc/yum.repos.d/google-chrome.repo 中添加存储库。
[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
添加 google-chrome.repo 文件后,我们可以检查 Google Chrome 是否可供安装。
yum list available | grep google-chrome
如果它在可用列表中,我们可以使用以下命令进行安装:
yum install google-chrome-stable
要卸载软件包,我们可以发出以下命令:
yum remove google-chrome-stable
YUM 命令摘要
总结一下,以下是最常用的 YUM 命令。
yum clean all
yum update
yum repolist
yum repolist enabled
yum check-update
yum list available
yum list installed
yum install package-name
yum remove package-name
yum-config-manager --add-repo repository_url
yum-config-manager --enable repository…
yum-config-manager --disable repository…
如果您想禁用某些软件包的更新,可以查看 本文档。
Tomcat 服务器 & JAVA & CHKCONFIG
Tomcat 在 Java 上运行。默认情况下,CentOS 已安装 OpenJDK。
如果您想使用其他 Java 实现,可以卸载 OpenJDK。但这并非必需。计算机通常会安装多个 Java 运行时环境。如果您确实想卸载 OpenJDK,可以发出以下命令:
yum remove java-1.8.0-openjdk-headless
在本笔记中,我将使用 apache-tomcat-8.5.31
和 Oracle jdk-8u172-linux-x64
。您可以将 Java 和 Tomcat 解压到任何目录。在本笔记中,我只是将它们放在 /apps 目录中。
Tomcat 作为 CHKCONFIG 服务
在服务器环境中,您可能希望在计算机启动时自动将 Tomcat 作为服务启动。我们可以使用 CHKCONFIG 工具来实现这一点。但首先,我们需要在 /etc/init.d 目录中创建一个名为 tomcat
的 bash 文件。
#!/bin/bash
# description: Tomcat start/stop/restart
# processname: tomcat
# chkconfig: 234 20 80
export JAVA_HOME=/apps/jdk1.8.0_172/
CATALINA_HOME=/apps/apache-tomcat-8.5.31
case $1 in
start)
sh $CATALINA_HOME/bin/startup.sh
;;
stop)
sh $CATALINA_HOME/bin/shutdown.sh
;;
restart)
sh $CATALINA_HOME/bin/shutdown.sh
sh $CATALINA_HOME/bin/startup.sh
;;
esac
exit 0
我们还需要使 bash 文件可执行。
chmod +x tomcat
要使 Tomcat 在计算机启动时启动,我们可以发出以下命令:
chkconfig --add tomcat
chkconfig tomcat on
默认情况下,Tomcat 监听端口 8080。如果您现在重启 VM 并访问 https://:8080,您会发现 Tomcat 已启动。您也可以通过以下命令手动启动/停止/重启 Tomcat:
service tomcat start
service tomcat stop
service tomcat restart
CHKCONFIG 命令摘要
总结一下,以下是最常用的 CHKCONFIG 命令:
chkconfig --list
chkconfig --add service-name
chkconfig --del service-name
systemctl daemon-reload
chkconfig tomcat on
chkconfig tomcat off
service tomcat start
service tomcat stop
service tomcat restart
Apache Web 服务器 & 反向代理 & SYSTEMD
Apache Web 服务器是除了 Tomcat 之外另一个流行的 Web 服务器。在 CentOS 中,您可以通过以下命令安装 Apache:
yum install httpd.x86_64
默认情况下,Apache 配置为监听端口 80。您可以通过以下命令启用它在计算机启动时启动:
systemctl enable httpd
您可以使用 apachectl
工具手动控制其状态。
apachectl start/stop/restart/status
反向代理到 Tomcat
Apache 服务器的一个典型用途是作为 Tomcat 服务器的反向代理。为了让 Apache 作为反向代理服务器,我们可以添加一个文件 /etc/httpd/conf.d/default-site.conf。
<VirtualHost *:80>
ProxyPreserveHost On
ProxyPass / http://0.0.0.0:8080/
ProxyPassReverse / http://0.0.0.0:8080/
</VirtualHost>
我们还需要运行以下命令来启用 Apache 和 Tomcat 之间的连接。
setsebool -P httpd_can_network_connect 1
您可以通过以下命令查找与 Apache 相关的所有 setsebool
属性:
getsebool -a | grep httpd
如果您重启 Apache 并确保 Tomcat 正在运行,然后访问 https://,您会发现它实际上加载了默认的 Tomcat 网页。
SYSTEMD 命令摘要
Apache (httpd) 服务的状态由 SYSTEMD 管理。总结一下,以下是最常用的 SYSTEMCTL 命令。
systemctl start service-name
systemctl stop service-name
systemctl restart service-name
systemctl reload service-name
systemctl reload-or-restart service-name
systemctl enable service-name
systemctl disable service-name
systemctl status service-name
systemctl is-active service-name
systemctl is-enabled service-name
systemctl is-failed service-name
systemctl list-units
systemctl list-units --all
systemctl list-unit-files
systemctl cat service-name
systemctl list-dependencies service-name
systemctl show service-name
systemctl mask service-name
SSH 到 CentOS VM
SSH 在大多数 Linux 系统上默认启用。您可以通过在 CentOS 中运行以下命令来检查 SSH 是否正在运行:
systemctl status sshd
由于我们是在 VirtualBox VM 中运行 CentOS,我们需要启用主机和 VM 之间的网络通信。根据您主机计算机的网络配置,您可以在 VirtualBox VM 设置中选择 **Bridged Adapter**,并将 VM 的网络连接连接到您的一个网卡。在您的 VM 中,您可以使用 ifconfig
来查找 VM 的 IP 地址。
默认情况下,所有 Linux 计算机都有一个 SSH 客户端。您可以从您的主机计算机开始一个 SSH 会话到您的 VM,输入您的密码。
"CronTab"
cron 软件实用程序是类 Unix 计算机操作系统中的一个基于时间的作业调度程序。您可以通过以下命令列出属于您的所有 cron 作业。
crontab -l
我添加了一个 cron 作业,它向文件 A 添加行。如果您查看文件 A 的内容,您会发现每分钟都添加了一行。
如果您想添加/编辑/删除属于您的 cron 作业,您可以使用以下命令。
crontab -e
cron 作业的调度由下表定义:
"/var/spool/cron" 目录
所有 cron 作业都存储在 /var/spool/cron 目录中。拥有一个或多个 cron 作业的每个用户在此目录中都有一个文件。
在我的 VM 中,我是唯一创建过 cron 作业的用户,所以只有一个名为 song 的文件。cron 作业以其所有者的权限运行。如果您是 sudoer,您可以代表其他所有者查看/创建/编辑/删除 cron 作业。
sudo -u song crontab -l
sudo -u song crontab -e
所有 cron 作业都依赖于 crond。您可以通过以下命令检查 crond 的状态。
service crond status
关注点
- 这是一篇关于 CentOS & 杂项的笔记。
- 希望您喜欢我的帖子,并希望这篇说明能对您有所帮助。
历史
- 2018年5月6日:初次修订