如何编写VPS的LAMP/LNMP的一键安装命令

王志勇 发表于 2019年08月27日 08:01

Linux比Windows服务器好的一点是,Linux可以编写一键shell命令,让它全自动安装。基本的方法是,命令之间用分号;,或者&&号隔开;shell也有很多需要应答的场景,例如需要输入Y,或者输入Yes,或者需要按回车。需要输入Y,大部分是install命令,可以事先给install命令加个-y,如apt-get -y install ……,yum -y install ……。

需要自动应答的场景,很多可以用echo命令,而不需要expect也能自动答应,例如我昨天在调试Ubuntu 16+PPA+PHP 7.3的时候,就出现了一个需要按回车的应答场景,用 echo "\r" | shell命令 就能自动按回车,例如这样写:
echo "\r" | LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php

同行业内有几个用Python编写的VPS面板,提供LAMP、LNMP的安装。

如果我们喜欢用shell命令手动安装属于自己的LAMP、LNMP环境,这些shell命令都是可以编写为一键命令的。
但是编写某一环境下的一键shell命令,至少要花费1~3天的时间。如果不编写这样的一键命令,手动一个一个安装、系统优化,每次手动安装LAMP、LNMP环境,至少要30分钟以上。

比如我在两三年前,已经编写完了自用的LAMP一键命令。可是后来过了很久,已经一时很难读懂当时的程序,思路已经忘记了,所以去年又删除、彻底重构,当时只兼容Ubuntu 12、Ubuntu 14、CentOS 5,这个LAMP一键命令非常好用。我从去年到现在,用这个一键命令重装系统大约100次。

去年写的这个LAMP一键命令,里面包含了shell命令,以及和PHP的互相调用,现在也不太读得懂,思路又忘记了。前几天开始,再次删除、彻底重构,并尽量多写注释。这一次写的LAMP、LNMP一键命令,是为开发中的VPS面板准备,到时候将LAMP、LNMP一键命令免费提供给用户。

这个2019年开始的新的LAMP、LNMP一键命令 + 自动优化,将兼容CentOS、Ubuntu、Debian系统。由于Ubuntu+PHP 7.0的PHP不执行,Ubuntu 16下需要自动安装PPA+PHP 7.3/或PHP 7.4。
Ubuntu 18的软件源自带PHP 7.2,也可以在一键命令中让用户选择Ubuntu 18+PPA+PHP 7.3/或PHP 7.4。

昨天已经完成了Ubuntu 16下的Ubuntu+Apache+PPA+PHP 7.3的全自动安装,这几天为此重装了不下20次系统。
后续的开发,每兼容一个系统,开发中需要重装系统10-30次。兼容每个系统,开发需要耗时半天~2天。

对于Apache、Nginx、PHP的配置文件的修改,shell程序也可以实现,但是shell程序非常复杂、难读。我的解决方案是这些文件全部由PHP程序来修改,修改完成后,将这些配置文件用shell命令的复制命令(cp),复制给Linux系统。
这是因为PHP程序不具有权限,无法对这些文件直接修改,所以需要shell命令来复制。

PHP程序也可以产生.sh文件。编写.sh文件,需要注意的是不能有 \r 的回车符,否则会报错,可以用PHP程序将chr(13)替换掉。

2条评论:
1   猫叔 2019-08-27 12:40
为了省事,直接用了宝塔面板

自由勇 2019-08-27 18:42
是的,宝塔面板很多人在用。

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

正文:

  记住信息?

直接发送Trackback到此文章

说明:本评论系统不支持HTML代码。(您的留言需要审核,审核规则请见这里。)

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

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

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

Blog存档 Archives

2020年07月
2020年06月(16)
2020年05月(13)
2020年04月(18)
2020年03月(14)
2020年02月(15)
2020年01月(16)
2019年12月(11)
2019年11月(26)
2019年10月(25)
2019年09月(30)
2019年08月(10)
2019年07月(29)
2019年06月(30)
2019年05月(26)
2019年04月(30)
2019年03月(30)
2019年02月(30)
2019年01月(30)
2018年12月(30)
2018年11月(30)
2018年10月(30)
2018年09月(17)
2016年-2017年(9)
2014年06月-09月(10)
2013年 +

2012年 +
2011年 +
2010年 +
2009年 +
2008年 +
2007年 +
2006年 +
2005年09月(4)

Copyright © 2006-2020 auiou.com All rights reserved.
此Blog程序由王志勇编写 已经发布在Arsue