宝塔Linux面板安装PHP失败原因

最近在安装宝塔面板的时候发现一件很奇怪的事,在 Debian 系统下 PHP7.1/7.2/7.3 一直都是装不上的状态。我去官方那搜到了很多反馈类似错误的,但大部分都是 Ubuntu 系统的,经过日志排查,确定不是宝塔的问题,最终把问题确定为性能导致。

如果你的安装机器在1G内存以上应该不会出现这类问题,1G以下是安装不上的。使用1G的机器会出现这类的问题,解决方法也是有的,首先安装宝塔后,在宝塔首页释放一下内存,不要使用一键安装LNMP环境,打开软件管理,首先安装PHP,然后在依次安装其它组件。如果安装失败了,可以尝试重启一下机器。

如果一直安装不上,可能就是机器的性能问题了,你要换一台机器或者尝试其它安装方式。

总结:小内存的机器尽量不要使用一键安装,在安装前清理一下内存,停止一些无用的进程。


如何选择 Linux 发行版系统

本文适合 Linux 新手阅读

扫盲
今天突然想理一理 Linux 发行版的一些知识,简单记录一下。帮助大家来更好的选择 Linux 发行版。

首先要纠正很多人的一个错误观念,Linux 不是一个系统,Linux是一个系统内核,开发这个内核的就是著名暴脾气程序员「Linus Torvalds」,因为 Linux 内核是免费的,所以在短时间内得到了快速的发展,比如安卓系统就是基于 Linux 内核开发的。

内核官方网站 https://www.kernel.org/

本文主要整理关于 Linux 发行版的一些知识,Linux 发行版就是基于 Linux 内核开发出来的系统。按照目前的分类主要分为Debian系和Red Hat系,当然除了这两大系还有Arch、Slackware、Gentoo等,他们最大的区别就是软件包管理系统不同。如何理解,举个例子,Debian系安装软件使用的是 apt-get ,Red Hat系安装软件使用的是 yum。除了Debian系和Red Hat系之外的发行版,因为比较小众,再加上使用难度较高,我就不在提了,感兴趣可以去了解一下,这里主要还是教你在 Debian系和Red Hat系中选择一个合适你的。

Debian系
主要有 Debian、Ubuntu、Linux Mint等,说实话 Debian 是我最喜欢的发行版,我最常使用的 Kali Linux 就是基于Debian 的非常稳定,并且占用内存小,用来做服务器系统是相当完美。对于 Ubuntu 我觉得这货纯粹就是一个另类,优点就是桌面做的非常完美,应该是目前体验最佳的 Linux 桌面发行版了。

Red Hat 系
Red Hat 也就是红帽公司,中国大部分搞IT最早接触的 Linux 应该就是红帽Linux了,Red Hat也是最早把 Linux 拿来进行商业运营的公司,你可能会想Linux不是开源免费的吗,这里要说明的是 Red Hat 人家收的是服务费,简单点来说就是提供有偿服务,Red Hat 也发行了免费的 Linux 版本,比如 Fedora Linux 版,但是 Fedora 更新比较频繁,所以用于生产环境还是要慎重,对于生产环境企业还是求稳为主,这时就可以使用 Red Hat Enterprise Linux 简称(RHEL),红帽就是这样把钱赚走的。除了上面说的两个Linux发行版,红帽还有一个很出名的发行版(CentOS),这应该是服务器上最受欢迎的 Linux 发行版,CentOS 可以看成是 RHEL 免费版,师出同门专为服务器而生,所以很受中小企业的喜爱,甚至有些大厂也在用 CentOS。

个人如何选择
个人使用主要是在桌面环境下,如果你不想折腾的话强烈推荐你使用 Ubuntu,虽然我不喜欢这货,但是他的图形界面做的是没话说,当然还有一个更的优秀的Ubuntu衍生版 Linux Mint 。对于Ubuntu和Linux Mint我推荐你都装一下,然后使用一段时间后在决定自己选择哪个,因为系统都是基于Debian的,所以区别就在界面设计上了,他们三者的关系可以这样理解,如果按亲属关系来分Debian是爷爷,Ubuntu是爸爸,Linux Mint是儿子。

服务器如何选择
对于服务器来说最主要的就是稳定,这里主推 Debian 和 CentOS。当然最好的选择是 RHEL,因为是付费产品,这里不做推荐。如果说稳定性 Debian 肯定更胜一筹,但是这里不想做推荐,因为服务器用于生产环境要考虑生命周期,Debian是社区维护版,没有商业公司支持,通常三年左右。而 CentOS 就不同,背靠红帽这座大山,支持个10年没什么问题,这对服务器是很重要的,特别是用于生产环境,稳才是最重要的。如果只是自己折腾个VPS玩玩的话,用 Debian 就足够了,占内存小能充分压榨服务器的性能,用于企业部署生产环境,建议 CentOS,资金允许可以上 RHEL。

上面就是我对 Linux 发行版的一些理解,涉及的东西不是很多,很多牛逼的发行版也没有提及,只是选了几个比较常用的 Linux 发行版让你大致的了解一下他们的区别,因为这些版本用的人比较多,所以你学习起来也比较快,遇到问题一搜答案就出来了。

最后纠正一下 Linux 应该是 GNU/Linux
为什么这么叫,可以参考 https://www.gnu.org/gnu/linux-and-gnu.zh-cn.html


Linux/CentOS 7 部署开启 BBR 的方法

BBR 是 Google 开源的拥塞控制算法,目前在 Linux 4.9 以上内核已经可以使用。开启了 BBR 机器,可以明显感觉到网络吞吐量的提升和延迟的降低。

注意:很多人可能以为 BBR 是个软件,这里要解释一下,BBR 集成到了 Linux 内核中,所以你要想使用 BBR,就要把Linux的内核升级到4.9上才能开启。

部署 BBR 很简单,第一步我们首先升级系统的Linux内核到最新版,本文以 CentOS 7 举例。

首先检查一下你登陆的是不是root用户,不是也没关系,下面的命令我会加上sudo,如果你是root用户,在命令中把sudo去掉即可。

升级内核

检查当前内核版本

uname -r

你应该会得到如下结果

3.10.0-514.2.2.el7.x86_64

使用 ELRepo 进行内核升级

sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
sudo rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
sudo yum --enablerepo=elrepo-kernel install kernel-ml -y

查看结果

rpm -qa | grep kernel

你应该会得到如下结果

kernel-ml-4.9.0-1.el7.elrepo.x86_64
kernel-3.10.0-514.el7.x86_64
kernel-tools-libs-3.10.0-514.2.2.el7.x86_64
kernel-tools-3.10.0-514.2.2.el7.x86_64
kernel-3.10.0-514.2.2.el7.x86_64

修改 grub2

sudo egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'

你应该会得到如下结果

CentOS Linux 7 Rescue a0cbf86a6ef1416a8812657bb4f2b860 (4.9.0-1.el7.elrepo.x86_64)
CentOS Linux (4.9.0-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-514.2.2.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-514.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-bf94f46c6bd04792a6a42c91bae645f7) 7 (Core)

从结果可以看到内核在第二行,索引是从0开始的,所以我们应该设为1

sudo grub2-set-default `

重启系统

sudo shutdown -r now

检查内核版本

uname -r

得到如下结果就说明成功

4.9.0-1.el7.elrepo.x86_64

启用BBR
修改 sysctl 配置

echo 'net.core.default_qdisc=fq' | sudo tee -a /etc/sysctl.conf
echo 'net.ipv4.tcp_congestion_control=bbr' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

确认是否启用

sudo sysctl net.ipv4.tcp_available_congestion_control #输入
net.ipv4.tcp_available_congestion_control = bbr cubic reno #输出参考(无需输入)
sudo sysctl -n net.ipv4.tcp_congestion_control #输入
bbr #输出参考(无需输入)
lsmod | grep bbr #输入
tcp_bbr    16388  0 #输出参考(无需输入)

BBR一键更新开启脚本
如果你感觉上面的操作太麻烦,有人写出了一键更新脚本,你可以试试。
脚本支持系统:CentOS 6+,Debian 7+,Ubuntu 12+
虚拟技术:OpenVZ 以外的,比如 KVM、Xen、VMware 等

注意:使用脚本需用 root 用户,非root用户需手动添加 sudo

wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh

检查是否开启方法同上,注意脚本已经包含了升级内核和开启BBR的步骤。

参考:

  1. https://www.vultr.com/docs/how-to-deploy-google-bbr-on-centos-7
  2. https://teddysun.com/489.html