MAGESH MARUTHAMUTHU 发布的文章

如果你的 LVM 不再需要使用某个设备,你可以使用 vgreduce 命令从卷组中删除物理卷。

vgreduce 命令可以通过删除物理卷来缩小卷组的容量。但要确保该物理卷没有被任何逻辑卷使用,请使用 pvdisplay 命令查看。如果物理卷仍在使用,你必须使用 pvmove 命令将数据转移到另一个物理卷。

数据转移后,它就可以从卷组中删除。

最后使用 pvremove 命令删除空物理卷上的 LVM 标签和 LVM 元数据。

将扩展块移动到现有物理卷上

使用 pvs 命令检查是否使用了所需的物理卷(我们计划删除 LVM 中的 /dev/sdc 磁盘)。

# pvs -o+pv_used

PV VG Fmt Attr PSize PFree Used
/dev/sda myvg lvm2 a- 75.00G 14.00G 61.00G
/dev/sdb myvg lvm2 a- 50.00G 45.00G 5.00G
/dev/sdc myvg lvm2 a- 17.15G 12.15G 5.00G

如果使用了,请检查卷组中的其他物理卷是否有足够的空闲 扩展块 extent

如果有的话,你可以在需要删除的设备上运行 pvmove 命令。扩展块将被分配到其他设备上。

# pvmove /dev/sdc

/dev/sdc: Moved: 2.0%
…
/dev/sdc: Moved: 79.2%
…
/dev/sdc: Moved: 100.0%

pvmove 命令完成后。再次使用 pvs 命令检查物理卷是否有空闲。

# pvs -o+pv_used

PV VG Fmt Attr PSize PFree Used
/dev/sda myvg lvm2 a- 75.00G  1.85G 73.15G
/dev/sdb myvg lvm2 a- 50.00G 45.00G 5.00G
/dev/sdc myvg lvm2 a- 17.15G 17.15G 0

如果它是空闲的,使用 vgreduce 命令从卷组中删除物理卷 /dev/sdc

# vgreduce myvg /dev/sdc
Removed "/dev/sdc" from volume group "vg01"

最后,运行 pvremove 命令从 LVM 配置中删除磁盘。现在,磁盘已经完全从 LVM 中移除,可以用于其他用途。

# pvremove /dev/sdc
Labels on physical volume "/dev/sdc" successfully wiped.

移动扩展块到新磁盘

如果你在卷组中的其他物理卷上没有足够的可用扩展。使用以下步骤添加新的物理卷。

向存储组申请新的 LUN。分配完毕后,运行以下命令来在 Linux 中发现新添加的 LUN 或磁盘

# ls /sys/class/scsi_host
host0
# echo "- - -" > /sys/class/scsi_host/host0/scan
# fdisk -l

操作系统中检测到磁盘后,使用 pvcreate 命令创建物理卷。

# pvcreate /dev/sdd
Physical volume "/dev/sdd" successfully created

使用以下命令将新的物理卷 /dev/sdd 添加到现有卷组 vg01 中。

# vgextend vg01 /dev/sdd
Volume group "vg01" successfully extended

现在,使用 pvs 命令查看你添加的新磁盘 /dev/sdd

# pvs -o+pv_used

PV VG Fmt Attr PSize PFree Used
/dev/sda myvg lvm2 a- 75.00G 14.00G 61.00G
/dev/sdb myvg lvm2 a- 50.00G 45.00G 5.00G
/dev/sdc myvg lvm2 a- 17.15G 12.15G 5.00G
/dev/sdd myvg lvm2 a- 60.00G 60.00G 0

使用 pvmove 命令将数据从 /dev/sdc 移动到 /dev/sdd

# pvmove /dev/sdc /dev/sdd

/dev/sdc: Moved: 10.0%
…
/dev/sdc: Moved: 79.7%
…
/dev/sdc: Moved: 100.0%

数据移动到新磁盘后。再次使用 pvs 命令检查物理卷是否空闲。

# pvs -o+pv_used

PV VG Fmt Attr PSize PFree Used
/dev/sda myvg lvm2 a- 75.00G 14.00G 61.00G
/dev/sdb myvg lvm2 a- 50.00G 45.00G 5.00G
/dev/sdc myvg lvm2 a- 17.15G 17.15G 0
/dev/sdd myvg lvm2 a- 60.00G 47.85G 12.15G

如果空闲,使用 vgreduce 命令从卷组中删除物理卷 /dev/sdc

# vgreduce myvg /dev/sdc
Removed "/dev/sdc" from volume group "vg01"

最后,运行 pvremove 命令从 LVM 配置中删除磁盘。现在,磁盘已经完全从 LVM 中移除,可以用于其他用途。

# pvremove /dev/sdc
Labels on physical volume "/dev/sdc" successfully wiped.

via: https://www.2daygeek.com/linux-remove-delete-physical-volume-pv-from-volume-group-vg-in-lvm/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

减少/缩小逻辑卷是数据损坏的最高风险。

所以,如果可能的话,尽量避免这种情况,但如果没有其他选择的话,那就继续。

缩减 LVM 之前,建议先做一个备份。

当你在 LVM 中的磁盘空间耗尽时,你可以通过缩小现有的没有使用全部空间的 LVM,而不是增加一个新的物理磁盘,在卷组上腾出一些空闲空间。

需要注意的是: 在 GFS2 或者 XFS 文件系统上不支持缩小。

如果你是逻辑卷管理 (LVM) 的新手,我建议你从我们之前的文章开始学习。

减少逻辑卷涉及以下步骤:

  • 卸载文件系统
  • 检查文件系统是否有任何错误
  • 缩小文件系统的大小
  • 缩小逻辑卷的大小
  • 重新检查文件系统是否存在错误(可选)
  • 挂载文件系统
  • 检查减少后的文件系统大小

比如: 你有一个 100GB 的没有使用全部空间的 LVM,你想把它减少到 80GB,这样 20GB 可以用于其他用途。

# df -h /testlvm1

Filesystem              Size Used Avail Use% Mounted on
/dev/mapper/vg01-lv002  100G 15G  85G   12%  /testlvm1

卸载文件系统

使用 umount 命令卸载文件系统:

# umount /testlvm1

检查文件系统是否有任何错误

使用 e2fsck 命令检查文件系统是否有错误:

# e2fsck -f /dev/mapper/vg01-lv002

e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/mapper/vg01-lv002: 13/6553600 files (0.0% non-contiguous), 12231854/26212352 blocks

缩小文件系统

下面的命令将把 testlvm1 文件系统从 100GB 缩小到 80GB

文件系统大小调整的常用语法(resize2fs

resize2fs [现有逻辑卷名] [新的文件系统大小]

实际命令如下:

# resize2fs /dev/mapper/vg01-lv002 80G

resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/mapper/vg01-lv002 to 28321400 (4k) blocks.
The filesystem on /dev/mapper/vg01-lv002 is now 28321400 blocks long.

减少逻辑卷 (LVM) 容量

现在使用 lvreduce 命令缩小逻辑卷(LVM) 的大小。通过下面的命令, /dev/mapper/vg01-lv002 将把逻辑卷 (LVM) 从 100GB 缩小到 80GB。

LVM 缩减 (lvreduce) 的常用语法

lvreduce [新的 LVM 大小] [现有逻辑卷名称]

实际命令如下:

# lvreduce -L 80G /dev/mapper/vg01-lv002

WARNING: Reducing active logical volume to 80.00 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv002? [y/n]: y
Reducing logical volume lv002 to 80.00 GiB
Logical volume lv002 successfully resized

可选:检查文件系统是否有错误

缩减 LVM 后再次检查文件系统是否有错误:

# e2fsck -f /dev/mapper/vg01-lv002

e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/mapper/vg01-lv002: 13/4853600 files (0.0% non-contiguous), 1023185/2021235 blocks

挂载文件系统并检查缩小后的大小

最后挂载文件系统,并检查缩小后的文件系统大小。

使用 mount 命令挂载逻辑卷

# mount /testlvm1

使用 df 命令检查挂载的卷。

# df -h /testlvm1

Filesystem              Size Used Avail Use% Mounted on
/dev/mapper/vg01-lv002  80G  15G  65G   18%  /testlvm1

via: https://www.2daygeek.com/reduce-shrink-decrease-resize-lvm-logical-volume-in-linux/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

扩展逻辑卷非常简单,只需要很少的步骤,而且不需要卸载某个逻辑卷就可以在线完成。

LVM 的主要目的是灵活的磁盘管理,当你需要的时候,可以很方便地调整、扩展和缩小逻辑卷的大小。

如果你是逻辑卷管理(LVM) 新手,我建议你从我们之前的文章开始学习。

扩展逻辑卷涉及到以下步骤:

  • 检查逻辑卷(LV)所在的卷组中是否有足够的未分配磁盘空间
  • 如果有,你可以使用这些空间来扩展逻辑卷
  • 如果没有,请向系统中添加新的磁盘或 LUN
  • 将物理磁盘转换为物理卷(PV)
  • 扩展卷组
  • 增加逻辑卷大小
  • 扩大文件系统
  • 检查扩展的文件系统大小

如何创建 LVM 物理卷?

使用 pvcreate 命令创建 LVM 物理卷。

当在操作系统中检测到磁盘,使用 pvcreate 命令初始化 LVM 物理卷:

# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created

请注意:

  • 上面的命令将删除磁盘 /dev/sdc 上的所有数据。
  • 物理磁盘可以直接添加到 LVM 物理卷中,而不是磁盘分区。

使用 pvdisplay 命令来显示你所创建的物理卷:

# pvdisplay /dev/sdc

"/dev/sdc" is a new physical volume of "10.00 GiB"
--- NEW Physical volume ---
PV Name               /dev/sdc
VG Name
PV Size               10.00 GiB
Allocatable           NO
PE Size               0
Total PE              0
Free PE               0
Allocated PE          0
PV UUID               69d9dd18-36be-4631-9ebb-78f05fe3217f

如何扩展卷组

使用以下命令在现有的卷组(VG)中添加一个新的物理卷:

# vgextend vg01 /dev/sdc
Volume group "vg01" successfully extended

使用 vgdisplay 命令来显示你所创建的物理卷:

# vgdisplay vg01
--- Volume group ---
VG Name              vg01
System ID
Format               lvm2
Metadata Areas       2
Metadata Sequence No 1
VG Access            read/write
VG Status            resizable
MAX LV               0
Cur LV               0
Open LV              0
Max PV               0
Cur PV               2
Act PV               2
VG Size              14.99 GiB
PE Size              4.00 MiB
Total PE             3840
Alloc PE / Size      1280 / 4.99
Free PE / Size       2560 / 9.99 GiB
VG UUID              d17e3c31-e2c9-4f11-809c-94a549bc43b7

如何扩展逻辑卷?

使用以下命令增加现有逻辑卷大小。

逻辑卷扩展(lvextend)的常用语法:

lvextend [要增加的额外空间] [现有逻辑卷名称]

使用下面的命令将现有的逻辑卷增加 10GB:

# lvextend -L +10G /dev/mapper/vg01-lv002
Rounding size to boundary between physical extents: 5.90 GiB
Size of logical volume vg01/lv002 changed from 5.00 GiB (1280 extents) to 15.00 GiB (3840 extents).
Logical volume var successfully resized

使用 PE 大小来扩展逻辑卷:

# lvextend -l +2560 /dev/mapper/vg01-lv002

要使用百分比(%)扩展逻辑卷,请使用以下命令:

# lvextend -l +40%FREE /dev/mapper/vg01-lv002

现在,逻辑卷已经扩展,你需要调整文件系统的大小以扩展逻辑卷内的空间:

对于基于 ext3 和 ext4 的文件系统,运行以下命令:

# resize2fs /dev/mapper/vg01-lv002

对于 xfs 文件系统,使用以下命令:

# xfs_growfs /dev/mapper/vg01-lv002

使用 df 命令查看文件系统大小:

# df -h /lvmtest1
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg01-lv002 15360M 34M 15326M 4% /lvmtest1

via: https://www.2daygeek.com/extend-increase-resize-lvm-logical-volume-in-linux/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

逻辑卷管理 Logical Volume Management (LVM)在 Linux 系统中扮演着重要的角色,它可以提高可用性、磁盘 I/O、性能和磁盘管理的能力。

LVM 是一种被广泛使用的技术,对于磁盘管理来说,它是非常灵活的。

它在物理磁盘和文件系统之间增加了一个额外的层,允许你创建一个逻辑卷而不是物理磁盘。

LVM 允许你在需要的时候轻松地调整、扩展和减少逻辑卷的大小。

如何创建 LVM 物理卷?

你可以使用任何磁盘、RAID 阵列、SAN 磁盘或分区作为 LVM 物理卷 Physical Volume (PV)。

让我们想象一下,你已经添加了三个磁盘,它们是 /dev/sdb/dev/sdc/dev/sdd

运行以下命令来发现 Linux 中新添加的 LUN 或磁盘

# ls /sys/class/scsi_host
host0
# echo "- - -" > /sys/class/scsi_host/host0/scan
# fdisk -l

创建物理卷 (pvcreate) 的一般语法:

pvcreate [物理卷名]

当在系统中检测到磁盘,使用 pvcreate 命令初始化 LVM PV:

# pvcreate /dev/sdb /dev/sdc /dev/sdd
Physical volume "/dev/sdb" successfully created
Physical volume "/dev/sdc" successfully created
Physical volume "/dev/sdd" successfully created

请注意:

  • 上面的命令将删除给定磁盘 /dev/sdb/dev/sdc/dev/sdd 上的所有数据。
  • 物理磁盘可以直接添加到 LVM PV 中,而不必是磁盘分区。

使用 pvdisplaypvs 命令来显示你创建的 PV。pvs 命令显示的是摘要输出,pvdisplay 显示的是 PV 的详细输出:

# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb lvm2 a-- 15.00g 15.00g
/dev/sdc lvm2 a-- 15.00g 15.00g
/dev/sdd lvm2 a-- 15.00g 15.00g
# pvdisplay

"/dev/sdb" is a new physical volume of "15.00 GiB"
--- NEW Physical volume ---
PV Name               /dev/sdb
VG Name
PV Size               15.00 GiB
Allocatable           NO
PE Size               0
Total PE              0
Free PE               0
Allocated PE          0
PV UUID               69d9dd18-36be-4631-9ebb-78f05fe3217f

"/dev/sdc" is a new physical volume of "15.00 GiB"
--- NEW Physical volume ---
PV Name               /dev/sdc
VG Name
PV Size               15.00 GiB
Allocatable           NO
PE Size               0
Total PE              0
Free PE               0
Allocated PE          0
PV UUID               a2092b92-af29-4760-8e68-7a201922573b

"/dev/sdd" is a new physical volume of "15.00 GiB"
--- NEW Physical volume ---
PV Name               /dev/sdd
VG Name
PV Size               15.00 GiB
Allocatable           NO
PE Size               0
Total PE              0
Free PE               0
Allocated PE          0
PV UUID               d92fa769-e00f-4fd7-b6ed-ecf7224af7faS

如何创建一个卷组

卷组 Volume Group (VG)是 LVM 结构中的另一层。基本上,卷组由你创建的 LVM 物理卷组成,你可以将物理卷添加到现有的卷组中,或者根据需要为物理卷创建新的卷组。

创建卷组 (vgcreate) 的一般语法:

vgcreate [卷组名] [物理卷名]

使用以下命令将一个新的物理卷添加到新的卷组中:

# vgcreate vg01 /dev/sdb /dev/sdc /dev/sdd
Volume group "vg01" successfully created

请注意:默认情况下,它使用 4MB 的 物理范围 Physical Extent (PE),但你可以根据你的需要改变它。

使用 vgsvgdisplay 命令来显示你创建的 VG 的信息:

# vgs vg01
VG #PV #LV #SN Attr VSize VFree
vg01 3 0 0 wz--n- 44.99g 44.99g
# vgdisplay vg01
--- Volume group ---
VG Name              vg01
System ID
Format               lvm2
Metadata Areas       3
Metadata Sequence No 1
VG Access            read/write
VG Status            resizable
MAX LV               0
Cur LV               0
Open LV              0
Max PV               0
Cur PV               3
Act PV               3
VG Size              44.99 GiB
PE Size              4.00 MiB
Total PE             11511
Alloc PE / Size      0 / 0
Free PE / Size       11511 / 44.99 GiB
VG UUID              d17e3c31-e2c9-4f11-809c-94a549bc43b7

如何扩展卷组

如果 VG 没有空间,请使用以下命令将新的物理卷添加到现有卷组中。

卷组扩展 (vgextend)的一般语法:

vgextend [已有卷组名] [物理卷名]
# vgextend vg01 /dev/sde
    Volume group "vg01" successfully extended

如何以 GB 为单位创建逻辑卷?

逻辑卷 Logical Volume (LV)是 LVM 结构中的顶层。逻辑卷是由卷组创建的块设备。它作为一个虚拟磁盘分区,可以使用 LVM 命令轻松管理。

你可以使用 lvcreate 命令创建一个新的逻辑卷。

创建逻辑卷(lvcreate) 的一般语法:

lvcreate –n [逻辑卷名] –L [逻辑卷大小] [要创建的 LV 所在的卷组名称]

运行下面的命令,创建一个大小为 10GB 的逻辑卷 lv001

# lvcreate -n lv001 -L 10G vg01
Logical volume "lv001" created

使用 lvslvdisplay 命令来显示你所创建的 LV 的信息:

# lvs /dev/vg01/lvol01
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv001 vg01 mwi-a-m-- 10.00g lv001_mlog 100.00
# lvdisplay /dev/vg01/lv001
--- Logical volume ---
LV Path                /dev/vg01/lv001
LV Name                lv001
VG Name                vg01
LV UUID                ca307aa4-0866-49b1-8184-004025789e63
LV Write Access        read/write
LV Creation host, time localhost.localdomain, 2020-09-10 11:43:05 -0700
LV Status              available
# open                 0
LV Size                10.00 GiB
Current LE             2560
Segments               1
Allocation             inherit
Read ahead sectors     auto
- currently set to     256
Block device           253:4

如何以 PE 大小创建逻辑卷?

或者,你可以使用物理范围(PE)大小创建逻辑卷。

如何计算 PE 值?

很简单,例如,如果你有一个 10GB 的卷组,那么 PE 大小是多少?

默认情况下,它使用 4MB 的物理范围,但可以通过运行 vgdisplay 命令来检查正确的 PE 大小,因为这可以根据需求进行更改。

10GB = 10240MB / 4MB (PE 大小) = 2560 PE

用 PE 大小创建逻辑卷 (lvcreate) 的一般语法:

lvcreate –n [逻辑卷名] –l [物理扩展 (PE) 大小] [要创建的 LV 所在的卷组名称]

要使用 PE 大小创建 10GB 的逻辑卷,命令如下:

# lvcreate -n lv001 -l 2560 vg01

如何创建文件系统

在创建有效的文件系统之前,你不能使用逻辑卷。

创建文件系统的一般语法:

mkfs –t [文件系统类型] /dev/[LV 所在的卷组名称]/[LV 名称]

使用以下命令将逻辑卷 lv001 格式化为 ext4 文件系统:

# mkfs -t ext4 /dev/vg01/lv001

对于 xfs 文件系统:

# mkfs -t xfs /dev/vg01/lv001

挂载逻辑卷

最后,你需要挂载逻辑卷来使用它。确保在 /etc/fstab 中添加一个条目,以便系统启动时自动加载。

创建一个目录来挂载逻辑卷:

# mkdir /lvmtest

使用挂载命令挂载逻辑卷

# mount /dev/vg01/lv001 /lvmtest

/etc/fstab 文件中添加新的逻辑卷详细信息,以便系统启动时自动挂载:

# vi /etc/fstab
/dev/vg01/lv001 /lvmtest xfs defaults 0 0

使用 df 命令检查新挂载的卷:

# df -h /lvmtest
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg01-lv001 15360M 34M 15326M 4% /lvmtest

via: https://www.2daygeek.com/create-lvm-storage-logical-volume-manager-in-linux/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:geekpi 校对:校对者ID

本文由 LCTT 原创编译,Linux中国 荣誉推出

PHP 是最流行的开源通用脚本语言,被广泛用于 Web 开发。它是 LAMP 栈应用程序套件的一部分,用于创建动态网站。流行的 CMS 应用程序 WordPress,Joomla 和 Drupal 都是用 PHP 语言开发的。这些应用程序的安装和配置都需要 PHP 7。PHP 7 可以更快地加载你的 Web 应用程序,并消耗更少的服务器资源。

在默认情况下,CentOS/RHEL 6 操作系统在其官方存储库中提供 PHP 5.3,而 CentOS/RHEL 7 则提供 PHP 5.4。

在本文中,我们将向你展示如何在 CentOS/RHEL 7 和 CentOS/RHEL 6 系统上安装最新版本的 PHP。

这可以通过在系统中添加必要的 附加第三方 RPM 存储库 来完成。

方法-1:如何使用软件集合存储库(SCL)在 CentOS 6/7 上安装 PHP 7

现在,SCL 存储库由 CentOS SIG 维护,该组织不仅重新构建了 Red Hat Software Collections,还提供了自己的一些其他软件包。

它包含各种程序的较新版本,这些程序可以与现有的旧软件包一起安装,并可以使用 scl 命令调用。

要想在 CentOS 上安装软件集合存储库(SCL),请运行以下 yum 命令

# yum install centos-release-scl

运行以下命令可以验证 SCL 存储库中可用的 PHP 7 版本:

# yum --disablerepo="*" --enablerepo="centos-sclo-rh" list *php

Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
centos-sclo-rh: centos.mirrors.estointernet.in
Available Packages
php54-php.x86_64                    5.4.40-4.el7                 centos-sclo-rh
php55-php.x86_64                    5.5.21-5.el7                 centos-sclo-rh
rh-php70-php.x86_64                 7.0.27-2.el7                 centos-sclo-rh
rh-php71-php.x86_64                 7.1.30-2.el7                 centos-sclo-rh
rh-php72-php.x86_64                 7.2.24-1.el7                 centos-sclo-rh

运行以下命令可以从 SCL 中安装 PHP 7.2 到你的系统中:

# yum --disablerepo="*" --enablerepo="centos-sclo-rh" install rh-php72-php

如果需要为 PHP 7.2 安装其他模块,则可以通过运行以下命令格式来安装它们。 例如,你可以通过执行以下命令来安装 gdpdo 软件包:

# yum --disablerepo="*" --enablerepo="centos-sclo-rh" install rh-php72-php-gd rh-php72-php-pdo

方法-1a:如何使用软件集合存储库(SCL)在 RHEL 7 上安装 PHP 7

对于 Red Hat 7,启用以下存储库以安装最新的 PHP 7 软件包:

# sudo subscription-manager repos --enable rhel-7-server-extras-rpms
# sudo subscription-manager repos --enable rhel-7-server-optional-rpms
# sudo subscription-manager repos --enable rhel-server-rhscl-7-rpms

运行以下命令从 RHSCL 库中搜索可用的 PHP 7 版本:

# yum search rh-php*

运行以下命令,你可以轻松地从 RHSCL 存储库中把 PHP7.3 安装到你的 RHEL 7 计算机上:

# yum install rh-php73

方法-2:如何使用 Remi 存储库在 CentOS 6/7 上安装 PHP 7

Remi 存储库 存储和维护着最新版本的 PHP 软件包,其中包含大量的库,扩展和工具。 有一些是从 Fedora 和 EPEL 反向移植的。

这是 CentOS 社区认可的存储库,它不会修改或影响任何基础软件包。

作为前提条件,如果你的系统上尚未安装 EPEL 存储库,该操作会首先安装它。

你可以轻松地从 Remi 存储库中找到可用的 PHP 7 软件包版本,因为它会为每个版本添加一个单独的存储库。 你可以使用 ls 命令 查看它们:

# ls -lh /etc/yum.repos.d/remi-php*

-rw-r--r--. 1 root root  456 Sep  6 01:31 /etc/yum.repos.d/remi-php54.repo
-rw-r--r--. 1 root root 1.3K Sep  6 01:31 /etc/yum.repos.d/remi-php70.repo
-rw-r--r--. 1 root root 1.3K Sep  6 01:31 /etc/yum.repos.d/remi-php71.repo
-rw-r--r--. 1 root root 1.3K Sep  6 01:31 /etc/yum.repos.d/remi-php72.repo
-rw-r--r--. 1 root root 1.3K Sep  6 01:31 /etc/yum.repos.d/remi-php73.repo
-rw-r--r--. 1 root root 1.3K Sep  6 01:31 /etc/yum.repos.d/remi-php74.repo

运行以下命令,你可以轻松地从 Remi 存储库中把 PHP7.4 安装到你的 CentOS 6/7 计算机上:

# yum --disablerepo="*" --enablerepo="remi-php74" install php php-mcrypt php-cli php-gd php-curl php-mysql php-ldap php-zip php-fileinfo

方法-2a:如何使用 Remi 存储库在 RHEL 7 上安装 PHP 7

对于 Red Hat 7,请安装以下存储库以安装最新的 PHP 7 软件包。

在 RHEL 7 上安装 EPEL 存储库:

# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

在 RHEL 7 上安装 Remi 存储库:

# yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

启用可选的 RPMS 存储库:

# subscription-manager repos --enable=rhel-7-server-optional-rpms

运行以下命令,可以轻松地从 remi 存储库中,把 PHP 7.4 安装在 RHEL 7 系统上:

# yum --disablerepo="*" --enablerepo="remi-php74" install php php-mcrypt php-cli php-gd php-curl php-mysql php-ldap php-zip php-fileinfo

要验证 PHP 7 的安装版本,请运行以下命令:

# php -v

PHP 7.4.1 (cli) (built: Dec 17 2019 16:35:58) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

方法-3:如何使用 IUS 社区存储库在 CentOS 6/7 上安装 PHP 7

IUS 社区存储库是 CentOS 社区批准的第三方 RPM 存储库,其中包含 PHP、Python、MySQL 等软件的最新上游版本,以及用于 Enterprise Linux(RHEL 和 CentOS)5、6 和 7 的软件包。

IUS 社区存储库 与 EPEL 存储库具有依赖性,因此我们必须在安装 IUS 存储库之前先安装 EPEL 存储库。 请按照以下步骤将 EPEL 和 IUS 社区存储库安装并启用到 RPM 系统,然后再安装软件包。

EPEL软件包包含在 CentOS Extras 存储库中,并默认启用,因此,我们可以通过运行以下命令来安装它:

# yum install epel-release

下载 IUS 社区存储库的 Shell 脚本如下:

# curl 'https://setup.ius.io/' -o setup-ius.sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1914  100  1914    0     0   6563      0 --:--:-- --:--:-- --:--:--  133k

安装/启用 IUS 社区存储库:

# sh setup-ius.sh

运行如下命来检查 IUS 存储库中可用的 PHP 7 版本:

# yum --disablerepo="*" --enablerepo="ius" list *php7*

Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Available Packages
mod_php71u.x86_64                                    7.1.33-1.el7.ius                       ius
mod_php72u.x86_64                                    7.2.26-1.el7.ius                       ius
mod_php73.x86_64                                     7.3.13-1.el7.ius                       ius
php71u-bcmath.x86_64                                 7.1.33-1.el7.ius                       ius
php71u-cli.x86_64                                    7.1.33-1.el7.ius                       ius
php71u-common.x86_64                                 7.1.33-1.el7.ius                       ius
php71u-dba.x86_64                                    7.1.33-1.el7.ius                       ius
php71u-dbg.x86_64                                    7.1.33-1.el7.ius                       ius
php71u-devel.x86_64                                  7.1.33-1.el7.ius                       ius
php71u-embedded.x86_64                               7.1.33-1.el7.ius                       ius

运行以下命令你可以轻松地从 IUS 存储库中安装 PHP 7.3 到你 CentOS 6/7 系统上:

# yum --disablerepo="*" --enablerepo="ius" install php73-common php73-cli php73-gd php73-gd php73-mysqlnd php73-ldap php73-soap php73-mbstring

via: https://www.2daygeek.com/install-php-7-on-centos-6-centos-7-rhel-7-redhat-7/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:gxlct008 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

作为一名 Linux 管理员,你可能已经注意到了一些开发者请求将文件从 DOS 格式转换为 Unix 格式,反之亦然。

这是因为这些文件是在 Windows 系统上创建的,并由于某种原因被复制到 Linux 系统上。

这本身没什么问题,但 Linux 系统上的一些应用可能不能理解这些新的换行符,所以在使用之前,你需要转换它们。

DOS 文本文件带有回车(CR\r)和换行(LF\n)一对字符作为它们的换行符,而 Unix 文本只有换行(LF)符。

有很多方法可以将 DOS 文本文件转换为 Unix 格式。

但我推荐使用一个名为 dos2unix / unix2dos 的特殊工具将文本在 DOS 和 Unix 格式之间转换。

  • dos2unix :将文本文件从 DOS 格式转换为 Unix 格式。
  • unix2dos :将文本文件从 Unix 格式转换为 DOS 格式。
  • trawksed 命令:这些可以用于相同的目的。

使用 od 八进制转储 octal dump )命令可以很容易地识别文件是 DOS 格式还是 Unix 格式,如下图所示:

# od -bc windows.txt
0000000 125 156 151 170 040 151 163 040 141 040 146 162 145 145 040 157
U n i x i s a f r e e o
0000020 160 145 156 163 157 165 162 143 145 040 157 160 145 162 141 164
p e n s o u r c e o p e r a t
0000040 151 156 147 040 163 171 163 164 145 155 015 012 123 165 160 145
i n g s y s t e m \r \n S u p e
0000060 162 040 143 157 155 160 165 164 145 162 163 040 141 162 145 040
r c o m p u t e r s a r e
0000100 162 165 156 156 151 156 147 040 157 156 040 125 116 111 130 015
r u n n i n g o n U N I X \r
0000120 012 071 065 045 040 157 146 040 167 145 142 163 151 164 145 163
\n 9 5 % o f w e b s i t e s
0000140 040 141 162 145 040 162 165 156 156 151 156 147 040 157 156 040
a r e r u n n i n g o n
0000160 114 151 156 165 170 040 117 123 015 012 101 156 171 164 150 151
L i n u x O S \r \n A n y t h i
0000200 156 147 040 143 141 156 040 142 145 040 144 157 156 145 040 157
n g c a n b e d o n e o
0000220 156 040 114 151 156 165 170 015 012
n L i n u x \r \n
0000231

上面的输出清楚地表明这是一个 DOS 格式的文件,因为它包含了转义序列 `
`。

同时,当你在终端上打印文件输出时,你会得到下面的输出:

# cat windows.txt
Unix is a free opensource operating system
Super computers are running on UNIX
95% of websites are running on Linux OS
Anything can be done on Linux

如何在 Linux 上安装 dos2unix?

dos2unix 可以很容易地从发行版的官方仓库中安装。

对于 RHEL/CentOS 6/7 系统,使用 yum 命令 安装 dos2unix

$ sudo yum install -y dos2unix

对于 RHEL/CentOS 8 和 Fedora 系统,使用 dnf 命令 安装 dos2unix

$ sudo yum install -y dos2unix

对于基于 Debian 的系统,使用 apt 命令apt-get 命令 来安装 dos2unix

$ sudo apt-get update
$ sudo apt-get install dos2unix

对于 openSUSE 系统,使用 zypper命令 安装 dos2unix

$ sudo zypper install -y dos2unix

1)如何将 DOS 文件转换为 UNIX 格式?

以下命令将 windows.txt 文件从 DOS 转换为 Unix 格式。

对该文件的修改是删除文件每行的 \r

# dos2unix windows.txt
dos2unix: converting file windows.txt to Unix format …
# cat windows.txt
0000000 125 156 151 170 040 151 163 040 141 040 146 162 145 145 040 157
U n i x i s a f r e e o
0000020 160 145 156 163 157 165 162 143 145 040 157 160 145 162 141 164
p e n s o u r c e o p e r a t
0000040 151 156 147 040 163 171 163 164 145 155 012 123 165 160 145 162
i n g s y s t e m \n S u p e r
0000060 040 143 157 155 160 165 164 145 162 163 040 141 162 145 040 162
c o m p u t e r s a r e r
0000100 165 156 156 151 156 147 040 157 156 040 125 116 111 130 012 071
u n n i n g o n U N I X \n 9
0000120 065 045 040 157 146 040 167 145 142 163 151 164 145 163 040 141
5 % o f w e b s i t e s a
0000140 162 145 040 162 165 156 156 151 156 147 040 157 156 040 114 151
r e r u n n i n g o n L i
0000160 156 165 170 040 117 123 012 101 156 171 164 150 151 156 147 040
n u x O S \n A n y t h i n g
0000200 143 141 156 040 142 145 040 144 157 156 145 040 157 156 040 114
c a n b e d o n e o n L
0000220 151 156 165 170 012
i n u x \n
0000225

上面的命令将覆盖原始文件。

如果你想保留原始文件,请使用以下命令。这将把转换后的输出保存为一个新文件。

# dos2unix -n windows.txt unix.txt
dos2unix: converting file windows.txt to file unix.txt in Unix format …

1a)如何使用 tr 命令将 DOS 文件转换为 UNIX 格式。

正如文章开头所讨论的,你可以如下所示使用 tr 命令将 DOS 文件转换为 Unix 格式。

Syntax: tr -d '\r' < source_file > output_file

下面的 tr 命令将 DOS 格式的文件 windows.txt 转换为 Unix 格式文件 unix.txt

# tr -d '\r' < windows.txt >unix.txt

注意:不能使用 tr 命令将文件从 Unix 格式转换为 Windows(DOS)。

1b)如何使用 awk 命令将 DOS 文件转换为 UNIX 格式。

使用以下 awk 命令格式将 DOS 文件转换为 Unix 格式。

Syntax: awk '{ sub("\r$", ""); print }' source_file.txt > output_file.txt

以下 awk 命令将 DOS 文件 windows.txt 转换为 Unix 格式文件 unix.txt

# awk '{ sub("\r$", ""); print }' windows.txt > unix.txt

2)如何将 UNIX 文件转换为 DOS 格式?

当你把一个文件从 UNIX 转换为 DOS 格式时,它会在每一行中添加一个回车(CR\r)。

# unix2dos unix.txt
unix2dos: converting file unix.txt to DOS format …

该命令将保留原始文件。

# unix2dos -n unix.txt windows.txt
unix2dos: converting file unix.txt to file windows.txt in DOS format …

2a)如何使用 awk 命令将 UNIX 文件转换为 DOS 格式?

使用以下 awk 命令格式将 UNIX 文件转换为 DOS 格式。

Syntax: awk 'sub("$", "\r")' source_file.txt > output_file.txt

下面的 awk 命令将 unix.txt 文件转换为 DOS 格式文件 windows.txt

# awk 'sub("$", "\r")' unix.txt > windows.txt

via: https://www.2daygeek.com/how-to-convert-text-files-between-unix-and-dos-windows-formats/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出