VPN技术 · 2023年11月10日

在CentOS 7上使用一键安装实现LAMP

CentOS 7下LAMP一键安装

CentOS 7下LAMP一键安装

前不久 CentOS 更新到版本 CentOS 7.0.1406,为了支持此版本,LAMP 一键安装脚本做了大量的更新和测试,并遇到了不少问题,在此一一记录下来。 由于 CentOS 7 将 service 重定向为 systemctl ,导致开机自启动脚本有的需要重写,这个过程也耗费了不少时间测试。同时,原先在 CentOS 6 存在的一些依赖包,在 CentOS 7 中不存在了,比如 libc-client-devel,这是安装 php-imap 扩展所必须的依赖,少了它编译 PHP 的扩展 imap 时必然会出错,于是只能手动编译安装 imap-2007f ,并指定 imap 扩展的路径。 去掉了一些在新旧 CentOS 都不存在的依赖包,比如 libmcrypt-devel,并全部编译安装最新版。

其中一些最主要的更新,列举如下。 1、获取公网 IP 的方式变更 在 CentOS 7 中,默认没有安装 ifconfig ,也就是依赖包 net-tools,所以将原来从 ifconfig 获取 IP 变更为 curl 外链来获取 IP。 所以,安装本脚本,务必要保证联网。

2、手动安装一些依赖包 这些依赖包包括 pcre、libiconv、libmcrypt、mcrypt、re2c、libedit、imap。 在 CentOS 5 中 pcre 版本过低会导致编译 Apache 失败;MySQL 要使用 readline 功能,编译安装 libedit;PHP 的扩展 imap,依赖 libc-client 共享库,编译安装 imap-2007f 等等。 其中有些报错信息网上查到也语焉不详,尤其是中文网站。所以在此列举一下。 编译 PHP 时出错: configure: error: utf8_mime2text() has new signature, but U8T_CANONICAL is missing. This should not happen. Check config.log for additional information。 就是 imap 扩展缺少依赖包导致的。编译安装 imap-2007f 步骤:

wget ftp://ftp.cac.washington.edu/imap/imap-2007f.tar.gz tar -zxf imap-2007f.tar.gz cd imap-2007f make lr5 PASSWDTYPE=std SSLTYPE=unix.nopwd EXTRACFLAGS=-fPIC IP=4 rm -rf /usr/local/imap-2007f/ mkdir /usr/local/imap-2007f/ mkdir /usr/local/imap-2007f/include/ mkdir /usr/local/imap-2007f/lib/ cp c-client/*.h /usr/local/imap-2007f/include/ cp c-client/*.c /usr/local/imap-2007f/lib/ cp c-client/c-client.a /usr/local/imap-2007f/lib/libc-client.a

备注:在 64 位下编译时 make 参数需要带 EXTRACFLAGS=-fPIC ,在 32 位下则不需要。 同时,在 CentOS 7 下编译 PHP 的 imap 扩展时,添加如下参数:

--with-imap=/usr/local/imap-2007f --with-imap-ssl

在 CentOS 6 下编译时,由于已经安装了依赖包 libc-client-devel ,所以参数如下:

--with-imap --with-imap-ssl --with-kerberos

3、新增一些判断函数 增加了一些判断函数,比如是否为 64 位,是否为 CentOS 7 等。

4、更新启动脚本 Apache 的启动脚本 /etc/init.d/httpd 变更,拷贝于 /usr/local/apache/bin/apachectl 文件,同时为了 /etc/init.d/httpd status 能够使用,新增了配置文件 /usr/local/apache/conf/extra/httpd-info.conf 。

5、CentOS 7 下可能会遇到的问题 安装 LAMP 完成后,无法用 IP 访问网站。查看进程也发现了 httpd 和 mysqld 也启动了,防火墙貌似也关闭了,ping 也没问题,但就是无法访问。 经过一番排查,还真就是 CentOS 7 最新的 firewalld 引起的问题。这时就要用经典的 iptables-services 来替代 firewalld 了。

yum -y install iptables-services systemctl mask firewalld systemctl enable iptables systemctl stop firewalld systemctl start iptables

6、PHP组件支持 到目前为止,我所见过的 LAMP、LNMP、LANMP 等一键安装脚本,对 PHP 组件的支持都不全面,有很多缺失的,最典型的就是 imap、ldap。 为了支持这些组件,我做了大量的改进和测试。这里放一张 PHP 探针截图,支持所有组件,以及 4 种第三方组件。 CentOS 7下LAMP一键安装

虽然 LAMP 一键安装脚本已经做了大量测试,但还是会有不完善的地方,如果你在使用过程中遇到问题,可反馈至 https://teddysun.com/lamp ,提交评论,或者附带安装日志 lamp.log 发送邮件至 i[at]teddysun.com。

OpenMagic API

Need more than content? Move into the product flow.

If you are here for model access, pricing, developer docs, or the future API console, the dedicated product path now lives on api.openmagic.ai.