第3版的LAMP/LNMP一键安装+优化的Shell命令留念和详解

王志勇 发表于 2019年08月29日 17:59

这个第3版的LAMP/LNMP纯净版的一键安装命令,是这几天重新编写,将会放在Webshu平台。此时已经能够完美兼容Ubuntu 12/14/16/18/19,以及Debian 7/8/9。但是今天发现有个小问题,Debian 9在两家不同服务商的VPS下,有一个VPS完美运行,另一个VPS安装遇到些问题。有可能是问题出在Debian 9.9的apt-get命令必须改为apt,所以今天尝试把这个命令在Linux命令行下设置为一个变量$apx,让其在Ubuntu 18和Debian 9.9下自动变成apt。

即原来的 apt update 命令,变为 $apx update。这种方式在有的系统能运行,有的系统不运行。所以,还是需要再次重构为第4版。因为第3版,以及以前的版本,都是在Linux主机下判断系统类型,然后把所有系统的Shell命令都显示出来,并根据系统的类型、判断挑选出Shell命令。这对于我来说,时间久了,这些Shell程序我都无法一下看懂,因为Shell程序我个人觉得比PHP程序难读10倍以上,尤其是程序较长的时候,一下看不懂的程序,有时候宁愿重构也不想再多花时间分析。

所以,在第4版里,要做很大的改进,不再把所有系统的Shell命令都显示出来。而是先由服务器判断系统类型、系统的版本,再从Webshu的服务器获取相关的系统类型的Shell命令(标注1)。上述的 $apx update,也会在 Shell命令(标注1) 里直接根据系统类型/版本,显示为 apt update 或 apt-get update 或 yum update。

wget -q http://webshu.com/cert/new.h -O new.php这个命令是优化,由这个PHP程序会再写入一个new.sh的Shell命令(标注2)。标注2 的功能,主要是将优化后的配置文件,传给Linux系统。标注2 的这种Linux系统和PHP程序互传的方式,就是PHP+Shell互相调用,这种方式我用了2年多,在一键安装VPS环境时,非常好用。这个功能,本来只用Shell程序也能实现,但是由于PHP的数据、字符串处理功能比Shell强大、简单很多,这一功能如果用Shell程序来完成可能需要几个月的时间,PHP则几天就完成了

第3版的一键命令,目前只开发到了LAMP,LNMP尚未开发。功能的说明:
1. 已经能够完美兼容Ubuntu 12/14/16/18/19,以及Debian 7/8/9。因为我个人使用的环境不需要MySQL,所以尚未添加MySQL的安装命令。
2. Ubuntu 14官方公司已经无法安装PPA,所以Ubuntu 14无法用PPA安装PHP 7,只能安装默认的PHP 5.5。
3. Ubuntu 16默认的PHP安装命令的版本是PHP 7.0,但是Ubuntu 16+PHP 7.0,或者Ubuntu 16+PHP 7.0,此时的PHP都是不执行的。所以,Ubuntu 16下强制自动安装PPA,用户可以选择安装PHP 7.1/7.2/7.3/7.4。
4. Ubuntu 18默认的PHP安装命令的版本是PHP 7.2。由于PHP 7.4的PHP语句的执行速度是PHP 7.2的2倍左右,所以此Shell命令我设定为Ubuntu 18默认的PHP版本为PPA+PHP 7.4,用户也可以选择系统自带的软件源PHP 7.2。
5. Debian 7.X,无法安装PPA,所以只能安装PHP 5.X。。
6. Debian 8.X,可以安装PPA+PHP 7.4,用户可以选择PHP 7.4,或者自带的PHP 5.X。
7. Debian 9.X,也可以安装PPA+PHP 7.4,用户可以选择PHP 7.4,或者自带的PHP 7.0。
8. 由于官方公司抛弃了Ubuntu 15、Ubuntu 17,我无法调试这2个系统,所以也在此一键命令里,屏蔽这2个系统。
9. PPA不用不知道,一用真奇妙。通过PPA安装的高版本PHP,或者其它软件,和高版本系统自带的软件源(安装后的软件),应该是没有区别,性能也没有任何损失。有了PPA,将不再依赖于高版本系统了,因为我使用的一台香港VPS,就只有Ubuntu 16,有了PPA,就可以安装PHP 7.4。
所以在一键Shell命令里,需要的时候,我添加上PPA,用户的系统会自动安装PPA。
10. Debian 7.X,官方公司正在逐渐抛弃,已经无法正常运行 apt-get update,表现在运行这个命令时,会有很多的404报错,解决的办法是在一键Shell命令里添加一个更换到最新的软件源的命令,目前暂时没有任何404报错,此命令在一键Shell命令里是这部分:
if [ $sys -eq 2 ] && [[ $st1 =~ "7." ]]; then sh -c 'echo "deb http://archive.debian.org/debian/ wheezy main contrib non-free" > /etc/apt/sources.list'; fi;

第3版的VPS新机LAMP/LNMP一键安装+优化的Shell命令留念:

sys=0; st1=""; sup=0; str=`cat /etc/issue`; str=${str,,}; e1=1;
if [[ $str =~ "ubuntu" ]]; then sys=1; fi;
if [[ $str =~ "debian" ]]; then sys=2; fi;

if [ $sys -eq 1 ]; then st1=`cat /etc/lsb-release`; b1=("12.0" "14.0" "16.0" "18."); for a1 in ${b1[@]}; do if [[ $st1 =~ $a1 ]]; then sup=1; fi; done; fi;
if [ $sys -eq 2 ]; then st1=`cat /etc/debian_version`; b1=("7." "8." "9."); for a1 in ${b1[@]}; do if [[ $st1 =~ $a1 ]]; then sup=1; fi; done; fi;

if [ $sup -eq 1 ];
then if [ $sys -eq 1 ] || [ $sys -eq 2 ]; then apx="apt-get"; apn=""; ppa=0;

if [ $sys -eq 2 ] && [[ $st1 =~ "7." ]]; then sh -c 'echo "deb http://archive.debian.org/debian/ wheezy main contrib non-free" > /etc/apt/sources.list'; fi;
if [ $sys -eq 2 ] && [ $e1 -eq 1 ]; then if [[ $st1 =~ "7." ]]; then apn="php5";fi;
if [[ $st1 =~ "8." ]]; then apn="php5"; fi;
if [[ $st1 =~ "9." ]]; then apn="php"; apx="apt"; fi;
if [[ $st1 =~ "8." ]] || [[ $st1 =~ "9." ]]; then apn="php7.4"; ppa=1; fi;
fi;

if [ $sys -eq 1 ] && [ $e1 -eq 1 ]; then if [[ $st1 =~ "12.0" ]] || [[ $st1 =~ "14.0" ]]; then apn="php5"; fi;
if [[ $st1 =~ "18." ]] || [[ $st1 =~ "19." ]]; then apn="php7.4"; ppa=1; fi;
if [[ $st1 =~ "16.0" ]]; then apn="php7.4"; ppa=1;
a1=`ps -ef | grep "apt.systemd.daily update" | grep -v grep | awk '{print $2}'`;
if [ "$a1"x != ""x ]; then kill -9 $a1; fi;
fi; fi;

$apx update; a1=`which apache2`; if [ "$a1"x = ""x ]; then $apx -y install apache2; fi;
a1='/var/www'; if [ ! -d $a1 ]; then mkdir $a1; fi;
dir='/var/www/html'; if [ ! -d $dir ]; then mkdir $dir; dir='/var/www'; fi;
chmod -R 777 $dir;
echo "" > $dir/phpinfo.php;
if [ ! -f /etc/sudoers ]; then $apx -y install sudo; fi;
if [ $sys -eq 1 ] && [ $ppa -eq 1 ]; then $apx -y install software-properties-common; echo "\r" | LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php; $apx update; fi;
if [ $sys -eq 2 ] && [ $ppa -eq 1 ]; then wget -q -O /etc/apt/trusted.gpg.d/php.gpg https://mirror.xtom.com.hk/sury/php/apt.gpg;
$apx -y install apt-transport-https;
sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list';
$apx update; fi;

if [ "$apn"x != ""x ]; then $apx -y install $apn; fi;cd $dir; wget -q http://webshu.com/cert/new.h -O new.php; sleep 2; wget -q "http://localhost/new.php?sys=$sys&sr=$e1" -O new2.txt; sleep 3; if [ -f $dir/new.sh ]; then chmod a+x new.sh; sh new.sh; fi;fi;
else echo "Your system is not supported.";
fi;

0条评论:

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

正文:

  记住信息?

王志勇: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程序由王志勇编写