CentOS 8 上的 Web 服务器,带有 php7、node.js 和 redis

前言

CentOS操作系统的新版本,即CentOS 2发布已经过去两天了。到目前为止,网上已经有不少关于它是如何完成工作的文章,所以我决定填补这个空白。 此外,我不仅会告诉您如何安装这对程序,还会告诉您我通常如何在现代世界的虚拟环境中安装 Linux 来执行典型任务,包括磁盘分区等。

但首先,我想简单谈谈为什么值得从之前的所有版本切换到这个版本,原因有两个:

  1. php7! 在之前版本的CentOS中,安装的是“正统”的php5.4...

    好吧,说得更严肃一点,很多包一起跳过了几个版本。 我们(类红帽操作系统的粉丝)终于进入了,如果不是进入未来,那么至少进入了现在。 Ubuntu 支持者将不再嘲笑我们并指责我们,嗯……至少在一段时间内;)。

  2. 从 yum 过渡到 dnf。 主要区别在于,现在正式支持同时使用多个版本的软件包。 就在八个中,我从未发现这有用,但听起来很有希望。

创建虚拟机

有不同的虚拟机管理程序,我没有目标为读者量身定制特定的虚拟机管理程序,我将告诉您一般原则。

Память

首先...要安装从 7 开始的 CentOS 系统,在我看来,6 中也是如此(“但这还不确定”),你需要 最低限度 2 GB 内存。 所以我建议你先捐出这么多。

但如果有的话,安装后内存大小可以减少。 我查了一下,在 1 GB 的情况下,裸系统运行得很好。

磁盘

对于正常安装,您应该创建一个容量为 20-30 GB 的虚拟磁盘。 这对于系统来说已经足够了。 还有第二个数据磁盘。 它可以在创建虚拟机阶段和之后添加。 我通常会稍后添加。

处理器

在一个核心上,裸系统不会减慢速度。 而且由于资源是可以自由扩展的,所以我认为在安装阶段提供更多资源没有任何意义(除非您完全了解需求并且懒得再次进入配置器)

其余的通常可以保留为默认值。

实际安装

那么...让我们启动安装程序...就我个人而言,我很长一段时间以来都只是以虚拟机的形式安装此类服务,所以我不会描述闪存驱动器上的各种分发记录 - 我只是挂载ISO 作为我最喜欢的虚拟机管理程序中的 CD,下载后即可使用。

基本安装非常典型,我只详细介绍几点。

来源选择

自从第八个版本发布以来,Yandex 的镜像已经闲置了好几天。 嗯,也就是说,它周期性地上升,然后再次开始显示错误。 我确信这是由于服务负载过大造成的。 因此,为了表明来源,我个人不得不输入通常的地址,而不是输入 这里,在那里选择我喜欢的镜像并在安装程序窗口中手动输入地址。 这里需要记住的是,需要指定目录所在文件夹的路径 存储库数据。 例如, mirror.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os.

磁盘分区

在我看来,这个问题颇具宗教色彩。 每个管理员在这个问题上都有自己的立场。 但我仍然会分享我对这个问题的看法。

是的,原则上,您可以将整个空间分配给根目录,并且它会起作用,大多数情况下甚至效果很好。 那么为什么要用不同的部分围住花园呢? ——我认为主要有两个原因:配额和可移植性。

例如,如果出现问题并且主数据分区出现错误,您希望仍然能够启动系统并执行复苏措施。 因此,我个人给/boot分配了一个单独的分区。 有一个内核和一个引导加载程序。 通常 500 MB 就足够了,但在极少数情况下可能需要更多,并且考虑到我们已经习惯以 TB 为单位测量空间,我为此部分分配 2GB。 而且这里重要的是不能用lvm来做。

接下来是系统的根。 对于正常安装,每个系统从来不需要超过 4 GB,但在计划的事件期间,我经常使用 /tmp 目录来解压发行版,而且我认为在现代系统中将其专用于单独的分区没有任何意义它是自动清洁的,因此不会被填充。 所以我为root分配了8GB。

交换...总的来说,它几乎没有实际用途。 如果您开始在服务器上使用交换,那么在现实世界中,这仅意味着服务器需要添加更多 RAM。 否则,肯定会出现性能问题(或者某些程序“泄漏”内存)。 因此,本节仅用于诊断目的。 因此,2 GB 是一个非常好的数字。 是的,无论服务器上有多少内存。 是的,我读过所有关于内存容量与交换容量比率的文章......恕我直言,它们已经过时了。 在十年的实践中我从来没有需要过这个。 10 年前我用过它们,是的。

恕我直言,每个人都可以自己决定是否将 /home 分配到单独的分区中。 如果服务器上有人会主动使用这个目录,最好分配它。 如果没有人,就没有必要。

接下来,/var。 在我看来,绝对应该强调这一点。 首先,您可以将自己限制为 4 GB,然后看看效果如何。 是的,我所说的“进展如何”是指

  1. 首先,您始终可以在 /var 子目录中挂载另一个磁盘(稍后我将通过示例进行展示)
  2. 其次,我们有 lvm - 您可以随时添加它。 当太多日志开始涌入其中时,您通常必须添加它。 但我从来没能提前预测到这个数字,所以我从 2 GB 开始,然后观看。

未分配的空间将在卷组中保持空闲状态,并且以后始终可以使用。

LVM

所有 在 LVM 中创建 /boot 以外的分区是有意义的。 是的,包括交换。 是的,根据所有建议,交换区应该位于磁盘的开头,但对于 LVM 来说,原则上无法确定其位置。 但正如我上面所写,你的系统 不应该 完全使用交换。 因此,他在哪里并不重要。 好吧,老实说,我们不是生活在 95 年!

此外,在 LVM 中,您需要能够使用几个基本实体:

  • 物理体积
  • 卷组
  • 逻辑卷

物理卷被组合成组,每个物理卷只能属于一个组,一个组可以同时位于多个物理卷上。
并且每个逻辑卷都在一组中。

但是……妈的,又是21世纪了。 服务器是虚拟的。 将应用于物理机制的相同机制应用于它们是没有意义的。 对于虚拟系统来说,将数据与系统分开非常重要! 这非常重要,特别是对于快速将数据切换到另一个虚拟机的能力(例如,切换到新操作系统时)以及一般来说对于各种有用的功能(例如,使用虚拟机管理程序工具按分区进行单独备份) 。 因此,一个卷组用于系统,而另一个卷组则必然用于数据! 这种逻辑划分对生活有很大帮助!

如果创建虚拟机时只创建了一个虚拟硬盘,则配置到此结束。 如果有两个,那么就不要标记第二个。

让我们开始安装吧。

安装后

至此,新安装的系统终于启动了。 您需要检查的第一件事是互联网。

ping ya.ru

有答案吗? - 太好了,请按 Ctrl-C。
如果没有,那就建立一个网络,没有这个就没有生活,但这不是我文章的主题。

现在,如果我们还没有在 root 下,请进入 root 下,因为输入 sudo 的命令数量个人让我崩溃了(愿偏执的管理员原谅我):

sudo -i

现在我们要做的第一件事就是输入

dnf -y update

如果你在 2019 年阅读这篇文章,很可能不会发生任何事情,但值得一试。

现在让我们配置剩余的磁盘

假设系统分区是xvda,那么数据盘就是xvdb。 好的。

大多数建议都会以“运行 fdisk 并创建分区...”开始

所以这是 不正确!

我再说一遍,因为它太重要了! 在这种情况下,要使用占用整个虚拟磁盘的LVM,在其上创建分区是有害的! 这句话中的每个词都很重要。 如果我们在没有 LVM 的情况下工作,我们就需要这样做。 如果我们的磁盘上有系统和数据,我们就需要它。 如果由于某种原因我们需要将一半的​​磁盘留空,我们也应该这样做。 但通常所有这些假设都是纯粹理论上的。 因为如果我们决定向现有分区添加空间,那么最简单的方法就是使用此配置。 易于管理比许多其他事情更重要,因此我们有目的地转向这种配置。

而且方便的是,如果要扩展数据分区,只需向虚拟分区添加空间,然后使用 vgextend 扩展组即可! 在极少数情况下,可能还需要其他东西,但至少您不必在一开始就扩展逻辑卷,这已经很好了。 否则,要扩展这个卷,他们建议首先删除现有的卷,然后在上面创建一个新的...这看起来不太好并且无法实时完成,但是根据我指出的场景进行扩展可以是“即时”执行,甚至无需卸载分区。

因此,我们创建一个物理卷,然后创建一个包含它的卷组,然后为我们的服务器创建一个分区:

pvcreate /dev/xvdb
vgcreate data /dev/xvdb
lvcreate -n www -L40G data
mke2fs -t ext4 /dev/mapper/data-www

在这里,您可以指定一个小字母,而不是大写字母“L”(以及 GB 大小),然后指定相对大小,而不是绝对大小,例如,使用当前可用空间的一半卷组,需要指定“-l +50%FREE”

最后一个命令格式化 ext4 文件系统中的分区(到目前为止,根据我的经验,在一切损坏的情况下,它显示出最大的稳定性,所以我更喜欢它)。

现在我们将分区安装在正确的位置。 为此,请将正确的行添加到 /etc/fstab:

/dev/mapper/data-www    /var/www                ext4    defaults        1 2

我们拨打

mount /var/www

如果出现错误,请发出警报! 因为这意味着 /etc/fstab 中有错误。 下次重新启动时我们将遇到很大的问题。 系统可能根本无法启动,这对于云服务来说往往是非常可悲的。 因此,有必要要么紧急更正最后添加的一行,要么干脆将其删除! 这就是为什么我们没有手动编写挂载命令 - 那么我们就没有这么好的机会立即检查配置。

现在我们实际上安装了我们想要的一切并打开网络端口:

dnf groupinstall "Development Tools"
dnf -y install httpd @nodejs @redis php
firewall-cmd --add-service http --permanent
firewall-cmd --add-service https --permanent

如果您愿意,您也可以在此处放置一个数据库,但我个人尝试将其与 Web 服务器分开。 虽然让她靠近更快,是的。 虚拟网络适配器的速度通常在千兆左右,在同一台机器上工作时,呼叫几乎立即发生。 但它不太安全。 什么对谁来说更重要?

现在我们将参数添加到配置文件中(我们创建一个新的,CentOS的现代思想是这样的)

echo "vm.overcommit_memory = 1"> /etc/sysctl.d/98-sysctl.conf

我们重新启动服务器。
在评论中,我因为建议我关闭SeLinux而被骂,所以我会纠正自己并写下这样的事实:此后你需要记住配置SeLinux。
其实就是盈利! 🙂

来源: habr.com

添加评论