有趣的Debian 10.1+PHP 7.4的安装

王志勇 发表于 2019年09月24日 16:01

本文为LAMP/LNMP的一键开发调试日记和Debian 8/9/10的安装LAMP/LNMP(PHP 7.4)的主要步骤。前几天下载了最新版的Debian 10.1,今天才开始调试这个环境下的安装。

经过这些天的开发、大量调试,发现2个规律:一、Debian 8/9/10通过sury来安装PHP 7.X,这3个系统下安装的PHP 7.X,都是一模一样的,所以如果没有特别用途,服务器没有必要追求高版本Debian,系统版本越低可能更省内存哟;二、LAMP和LNMP下的php和php-fpm的安装,其软件源是完全相同的,这对于开发者省了很多的工作量,所以LAMP、LNMP安装所用的命令有很多相同之处。

由于上述2个规律,那么Debian 8、9、10,Apache+PHP 7.4和Nginx+PHP 7.4,安装步骤是大致相似的。安装步骤,在网上搜索一下,就能找到这些文章,我在调试之初,也都是参考这些文章。(之后,也用了一些移植、删除、添加一些步骤)

但是,有很多安装并不顺利,会有各种报错。于是,我在一键包中,添加了这些解决报错的语句,或者用来防止报错。

本文以Debian 8、9、10下的Apache+sury+PHP 7.4为例简单地分解一下它的安装步骤。在将来要发布的一键安装命令,都是集成在这个一键包的。以下步骤,在Debian 8、9、10都通用。

LAMP的Debian 8/9/10通用安装方法:

步骤1,必须update:

apt update;

步骤2,安装apache2:

a1=`which apache2`; if [ "$a1"x = ''x ]; then apt -y install apache2; fi;

步骤3,安装sury:

wget -q -O /etc/apt/trusted.gpg.d/php.gpg https://mirror.xtom.com.hk/sury/php/apt.gpg;

步骤4,安装dirmngr、lsb-release,添加recv-keys。安装这3项,都是为了解决相应的报错。(这3项的添加,是我花费了几天的时间、重装了几十次系统才得出的解决方案。其中,如果没有安装lsb-release,在后面用到的命令里,$(lsb_release -sc) 无法识别出Debian的系统名称。)

apt -y install dirmngr lsb-release apt-transport-https; apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B188E2B695BD4743;

步骤5,添加sury软件源:

sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list';

这个步骤适用于Debian 8、9、10。在Debian 8、9系统下,之后update完全正常,顺利安装PHP 7.4。

但是在Debian 10下,update会有很多报错。这是为什么呢?之后,我尝试把/etc/apt/sources.list.d/php.list这个文件里的buster手工改为stretch,之后update完全正常,顺利安装PHP 7.4。
这是本文想说的重点:原因找到了,原来是sury的软件源没有对Debian 10更新。Debian 9的系统名称是stretch,sury还没有识别出Debian 10的系统名称buster。所以,临时把php.list文件里的Debian 10的系统名称,改为Debian 9的stretch,顺利安装。

所以步骤6,Debian 10临时修改php.list的系统名称为Debian 9:

sed -i 's/buster/stretch/g' /etc/apt/sources.list.d/php.list

(Debian 8、9可省略步骤6。)

步骤7,update:

apt update;

步骤8,安装PHP 7.4:

apt -y install php7.4;

重启Apache:

service apache2 restart;

LNMP的Debian 8/9/10通用安装方法:
Debian 8/9/10下的LNMP(PHP 7.4)的安装步骤,与上述大致相同。

首先第一步,要卸载现有的Apache、PHP,命令为:

a1='apache*'; apt -y remove $a1; apt -y --purge remove $a1;
a1='php*'; apt -y remove $a1; apt -y --purge remove $a1;

其中,上述的apt命令,Debian 8及之前的系统为apt-get;Debian 9及之后的系统为apt。

然后,将上述LAMP的步骤2替换为:
apt -y install nginx;

上述步骤8,替换为:
apt -y install php7.4-fpm;

最后,重启Nginx和php7.4-fpm,命令为:

service nginx restart; service php7.4-fpm restart;

Ubunt 16/18/19和Debian 9/10高版本系统的apt报错
刚使用apt命令时,有的系统就会有这种报错:

E: Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)
E: Unable to lock directory /var/lib/apt/lists/

解决办法,杀掉apt进程。因为很多新系统没有killall命令,而全部有kill命令,所以我写了一段Shell程序,让其遍历所有的apt进程,并杀掉所有的apt进程,解决上述报错的通用命令:

a1=`ps -ef | grep 'apt' | grep -v grep | awk '{print $2}'`; b1=(${a1// /}); for a2 in ${b1[@]}; do kill -9 $a2; done;

上述Shell程序,等价于:killall -9 apt-get; killall -9 apt;
因为很多新系统没有killall命令,所以上述Shell程序的通用性更强。

6条评论:
1   梦之源泉 2019-09-24 17:16
前几天,勇哥的香港vps是down了吗?一直访问不了你的博客

自由勇 2019-09-24 17:18
我这边这些天一直可以正常访问啊。一直都不能访问吗?难怪我的博客访问量一直在下降。

昨天有2个多小时不能访问,因为昨天傍晚误操作,把博客的主机重装了系统,所以昨晚迁移到了另一台服务器上。

2   梦之源泉 2019-09-25 20:02
(隔开)(隔开)云好像跑路了。显示如下
温馨提示:该网站因未备(隔开)案或接入非(隔开)法内容暂时无法进行访问,请联系接入商。

自由勇 2019-09-25 21:27
刚才在他们的客服QQ群看了一下,是贝岸掉了,2天后官网恢复。
IDC挺不好做的,随时可能倒闭,已经备份数据。
唉,中国特色,贝岸期间需要关闭网站。

3   执迷不悟 2019-09-26 11:06
以前有个域名备(隔开)案的时候也没见有什么优势,所以还是现在不备(隔开)案的好,自由的很😄

自由勇 2019-09-26 15:57
是的,确实是不备(隔开)案方便很多。
ICP备(隔开)案制度始于2005年,那时候几乎没有人用国外主机,因为那时国内大家都不会用国外主机,所以所有的网站都贝岸了。但是最大的麻烦是耽误事情,贝岸期间网站需要关闭15-20天。

有时候容易掉贝岸。我的这个博客的域名以前有ICP贝岸,后来2010年的时候,贝岸号被注销了,另外几个域名的贝岸号也被接连注销。信息都是正确的,唯一的原因有可能是我当时没有接到他们的随机电话。

发表评论:
名字: (*必填)
博客: (可省)

正文:

  记住信息?

王志勇:1980-09-26 (44周岁)
程序设计,前端设计。

版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。

与此相关的链接
自由勇专栏

Blog存档 Archives

2022年07月
2022年06月(15)
2022年05月(20)
2022年04月(16)
2022年03月(9)
2022年02月(9)
2022年01月(10)
2021年 +

2020年 +
2019年 +
2018年 +
2016年-2017年(9)
2014年06月-09月(10)
2013年 +
2012年 +
2011年 +
2010年 +
2009年 +
2008年 +
2007年 +
2006年 +
2005年09月(4)

Copyright © 2006-2024 auiou.com All rights reserved.
此Blog程序由王志勇编写