CentOS7安装PHP8的方法

前置条件

在Centos7上安装PHP8之前,必须安装EPEL(企业Linux的额外软件包)存储库。你可以通过运行以下命令进行安装:

sudo yum install epel-release

在Centos7上安装PHP8

1.将Remi存储库添加到你的CentOS7的系统中。此存储库为各种Linux发行版提供了PHP的更新版本:

sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

2.通过运行以下命令禁用Remi存储库中的旧PHP版本的安装包:

sudo yum install yum-utils
sudo yum-config-manager --disable remi-php*
sudo yum-config-manager --disable php-5*

否则你运行sudo yum install php命令安装PHP时,可能找到的是PHP 5.x版本的安装包。

3.通过运行以下命令启用Remi存储库中的PHP 8.x版本的安装包:

sudo yum-config-manager --enable remi-php82

截至2023/09/22,Remi存储库中还没有php8.3版本的安装包,于是我们启用php8.2的安装包。

4.通过运行以下命令更新系统里的程序包列表:

sudo yum update

5.通过运行以下命令安装PHP:

sudo yum install php

如果yum说php8.2依赖httpd,但是系统里没有安装httpd。CentOS7系统的默认仓库/etc/yum.repos.d/CentOS-Base.repo里已经包含了httpd软件的安装包,执行以下命令安装:

sudo yum install httpd

成功安装httpd后,再次运行以下命令安装PHP:

sudo yum install php

可以看到yum找到的是PHP8.2版本的安装包:

键入y再按回车键,开始下载安装……

6.通过运行以下命令查看PHP是否安装成功:

php -v

如果输出如下信息,就表示我们成功安装PHP8.2了:

PHP 8.2.10 (cli) (built: Aug 29 2023 15:31:38) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.2.10, Copyright (c) Zend Technologies

7.通过运行以下命令安装常用PHP扩展库:

sudo yum install php-fpm php-mysqlnd

在yum解析依赖过程中的输出信息中,我们需要注意一下这些即将被安装的PHP扩展库的版本应该也是8.2,并且应该也是从remi-php82仓库里下载的。

可以通过运行以下命令查看目前安装了哪些PHP扩展库:

php -m

参考

https://baransel.dev/post/how-to-install-php8-on-centos/

https://www.tecmint.com/install-php-8-on-centos/

运行yum update更新系统时提示This system is not registered with an entitlement server. You can use subscription-manager to register

这一提示产生原因是什么?当系统安装了RHEL(RedHat)软件仓库时,可能会产生此提示。

如何禁止这一提示?有以下两种方法。

方法一,使用你喜欢的文本编辑器(nano、vi或vim)打开subscription-manager.conf配置文件:

sudo vim /etc/yum/pluginconf.d/subscription-manager.conf

设置enabled配置项的值为0:

enabled=0

保存文件并退出文本编辑器。

方法二,使用Red Hat Subscription Manager工具将RHEL系统注册并订阅到Red Hat客户的门户网站,怎么注册参考https://access.redhat.com/solutions/253273

参考

https://serverfault.com/questions/764900/how-to-remove-this-warning-this-system-is-not-registered-to-red-hat-subscriptio

CentOS7 yum安装MySql报错The GPG keys listed for the MySQL 8.0 Community Server repository are already installed but they are not correct for this package.的解决方法

在CentOS7中使用yum安装MySql8的时候,遇到这个问题。

原因是,MySQL GPG密钥已过期,无法从官方存储库安装或升级MySQL包。其他详细信息也可以在MySQL网站上找到:https://bugs.mysql.com/bug.php?id=106188

解决方法是,在运行安装程序之前导入密钥:

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

对于Ubuntu系统:

wget -q -O - https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 | apt-key add -

参考

https://support.cpanel.net/hc/en-us/articles/4419382481815

https://forums.cpanel.net/threads/mysql-upgrade-process-failed-the-gpg-keys-listed-for-the-mysql-8-0-community-server-repository-are-already-installed-but-they-are-not-correct-for.697213/

如何在CentOS 7上使用VSFTPD设置FTP服务器

本文翻译自《How to Setup FTP Server with VSFTPD on CentOS 7》。

FTP(File Transfer Protocol,文件传输协议)是一种标准的客户端-服务器(client-server)网络协议,允许用户在远程网络之间传输文件。

有几个可用于Linux的开源FTP服务器。最流行和使用最广泛的是PureFTPdProFTPDvsftpd

在本教程中,我们将在CentOS 7上安装vsftpd(非常安全的Ftp守护进程)。它是一个稳定、安全和快速的FTP服务器。我们还将向你展示如何配置vsftpd以将用户限制在他们的家目录中并使用SSL/TLS加密整个传输。

要获得更安全和更快的数据传输,请使用SCPSFTP

先决条件

在继续本教程之前,请确保你以具有sudo权限的用户身份登录。

在CentOS 7上安装vsftpd

vsftpd软件包在默认的CentOS存储库中可用。要安装它,请执行以下命令:

$ sudo yum install vsftpd

安装软件包后,启动vsftpd守护进程并使其在操作系统启动时自动启动:

$ sudo systemctl start vsftpd
$ sudo systemctl enable vsftpd

你可以通过打印其状态来验证vsftpd服务是否正在运行:

$ sudo systemctl status vsftpd

输出如下所示,表明vsftpd服务处于活动状态并正在运行:

● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2018-11-22 09:42:37 UTC; 6s ago
 Main PID: 29612 (vsftpd)
   CGroup: /system.slice/vsftpd.service
           └─29612 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

配置vsftpd

配置vsftpd服务涉及编辑/etc/vsftpd/vsftpd.conf配置文件。大多数设置都在配置文件中详细记录。有关所有可用选项,请访问官方vsftpd页面

在以下部分中,我们将介绍配置安全的vsftpd安装所需的一些重要设置。

首先打开vsftpd配置文件:

$ sudo nano /etc/vsftpd/vsftpd.conf

1. FTP访问

我们将只允许本地用户访问FTP服务器,找到anonymous_enablelocal_enable指令并验证你的配置是否与以下行匹配:

anonymous_enable=NO
local_enable=YES

2. 启用上传

取消注释write_enable设置以允许更改文件系统,例如上传和删除文件。

write_enable=YES

3. Chroot监狱

通过取消注释chroot指令来防止FTP用户访问其家目录之外的任何文件。

chroot_local_user=YES

默认情况下,启用chroot时,如果用户锁定的目录是可写的,vsftpd将拒绝上传文件。这是为了防止安全漏洞。

启用chroot时,使用以下方法之一允许上传。

方法 1. – 允许上传的推荐方法是启用chroot并配置FTP目录。在本教程中,我们将在用户家目录中创建一个ftp目录,该目录将用作chroot和一个可写的上传目录,用于上传文件。

user_sub_token=$USER
local_root=/home/$USER/ftp

方法 2. – 另一种选择是在vsftpd配置文件中添加以下指令。如果你必须授予用户对其家目录的可写访问权限,请使用此选项。

allow_writeable_chroot=YES

4. 被动FTP连接

vsftpd可以使用任何端口进行被动FTP连接。我们将指定端口的最小和最大范围,然后在我们的防火墙中打开该范围。

将以下行添加到配置文件中:

pasv_min_port=30000
pasv_max_port=31000

5. 限制用户登录

要仅允许某些用户登录FTP服务器,请在userlist_enable=YES行之后添加以下行:

userlist_file=/etc/vsftpd/user_list
userlist_deny=NO

启用此选项后,你需要通过将用户名添加到/etc/vsftpd/user_list文件(每行一个用户名)来明确指定哪些用户能够登录。

6. 使用SSL/TLS保护传输

为了使用SSL/TLS加密FTP传输,你需要拥有SSL证书并配置FTP服务器以使用它。

你可以使用由受信任的证书颁发机构签名的现有的SSL证书或创建自签名证书。

如果你有一个指向FTP服务器IP地址的域名或子域名,你可以轻松生成免费的Let’s Encrypt SSL证书。

在本教程中,我们将使用openssl命令生成自签名的SSL证书

以下命令将创建一个有效期为10年的2048位私钥和自签名证书。私钥和证书都将保存在同一个文件中:

$ sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem

创建SSL证书后,打开vsftpd配置文件:

$ sudo nano /etc/vsftpd/vsftpd.conf

找到rsa_cert_filersa_private_key_file指令,将它们的值更改为pem文件路径并将ssl_enable指令设置为YES

rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
ssl_enable=YES

如果没有另外指定,FTP服务器将只使用TLS来建立安全连接。

重启vsftpd服务

完成编辑后,vsftpd配置文件(不包括注释)应如下所示:

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO
tcp_wrappers=YES
user_sub_token=$USER
local_root=/home/$USER/ftp
pasv_min_port=30000
pasv_max_port=31000
rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
ssl_enable=YES

保存文件并重新启动vsftpd服务以使更改生效:

$ sudo systemctl restart vsftpd

打开防火墙

如果你正在运行防火墙,则需要允许FTP流量。 要打开端口21(FTP命令端口)、端口20(FTP数据端口)和30000-31000(被动端口范围),请发出以下命令:

$ sudo firewall-cmd --permanent --add-port=20-21/tcp
$ sudo firewall-cmd --permanent --add-port=30000-31000/tcp

通过键入以下内容重新加载防火墙规则:

$ firewall-cmd --reload

创建一个FTP用户

为了测试我们的FTP服务器,我们将创建一个新用户。

  • 如果你已经有一个要授予FTP访问权限的用户,请跳过第1步。
  • 如果你在配置文件中设置了allow_writeable_chroot=YES,请跳过第3步。

1 创建一个名为newftpuser的新用户:

$ sudo adduser newftpuser

接下来,你需要设置用户密码

$ sudo passwd newftpuser

2 将用户添加到允许的FTP用户列表:

$ echo "newftpuser" | sudo tee -a /etc/vsftpd/user_list

3 创建FTP目录树并设置正确的权限

$ sudo mkdir -p /home/newftpuser/ftp/upload
$ sudo chmod 550 /home/newftpuser/ftp
$ sudo chmod 750 /home/newftpuser/ftp/upload
$ sudo chown -R newftpuser: /home/newftpuser/ftp

如上一节所述,用户将能够将其文件上传到ftp/upload目录。

此时,你的FTP服务器功能齐全,你应该能够使用任何可配置为使用TLS加密的FTP客户端(例如FileZilla)连接到你的服务器。

禁止访问shell

默认情况下,创建用户时,如果未明确指定,用户将拥有对服务器的SSH访问权限。

要禁止访问shell,我们将创建一个新的shell,它会简单地打印一条消息,告诉用户他们的账户仅限于FTP访问。

运行以下命令来创建/bin/ftponly shell并使其可执行:

$ echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a  /bin/ftponly
$ sudo chmod a+x /bin/ftponly

将新的shell附加到/etc/shells文件中的有效shell列表中:

$ echo "/bin/ftponly" | sudo tee -a /etc/shells

将用户shell更改为/bin/ftponly

$ sudo usermod newftpuser -s /bin/ftponly

使用相同的命令为你希望仅授予FTP访问权限的其他用户更改shell。

总结

在本教程中,你学到了如何在CentOS 7系统上安装和配置安全快速的FTP服务器。

如果你有任何问题或反馈,请随时发表评论。

Kernel Panic – not syncing VFS Unable to mount root fs on unknown-block(0,0)问题的解决方法

VirtualBox启动CentOS 7虚拟系统时,遇到Kernel Panic – not syncing: VFS: Unable to mount root fs on unknown-block(0,0)问题,无法启动系统。

引起该问题的原因是缺少该内核的初始化文件。

解决方法是从启动界面的GRUB菜单中选择另一个内核来启动系统。进入系统后运行sudo update-initramfs -u -k version为version生成初始化文件(将version替换为内核版本字符串,例如4.15.0-36-generic),然后运行sudo update-grub更新GRUB。

参考

https://askubuntu.com/questions/41930/kernel-panic-not-syncing-vfs-unable-to-mount-root-fs-on-unknown-block0-0