# LAMP Auto Install Script for CentOS 7 #centos7下编写自动化脚本搭建lamp架构,下载目录为/opt/lamp1/,需求版本:apache-2.4.63、php-7.4.33、mysql-8.0.41-1.el9.x86_64.rpm-bundle.tar,php不用单独启动,和apache联动即可 #要求: #目前线上apache使用的模块为(core_module, authn_file_module, authn_default_module, authz_host_module, authz_groupfile_module, authz_user_module, authz_default_module, auth_basic_module, include_module, filter_module, log_config_module, env_module, setenvif_module, version_module, mpm_prefork_module, http_module, mime_module, status_module, autoindex_module, asis_module, cgi_module, negotiation_module, dir_module, actions_module, userdir_module, alias_module, rewrite_module, so_module, ssl_module (shared), xsendfile_module (shared), php5_module (shared)) #目前线上php使用的模块为(bcmath,bz2,Core,ctype,curl,date,dom,ereg,fileinfo,filter,gd,gettext,hash,iconv,json,libxml,mbstring,mcrypt,mhash,mysql,mysqli,mysqlnd,openssl,pcntl,pcre,PDO,pdo_mysql,pdo_sqlite,Phar,posix,Reflection,session,shmop,SimpleXML,soap,sockets,SPL,sqlite3,standard,sysvmsg,sysvsem,sysvshm,tokenizer,xml,xmlreader,xmlwriter,zip,zlib) #安装apache和php的依赖模块apr-1.7.5、apr-util-1.6.3、ibiconv-1.15、libmcrypt-2.5.8、mhash-0.9.9.9、mcrypt-2.6.8、libmcrypt-devel并做好环境变量和软连接 #保留以上模块前提下,apache、php的模块全部启用,并解决依赖关系 #验证apache和php联动性、访问,MySQL登录和初始化、密码设置为1hblsqt2zhlmcl#@!
时间: 2025-04-20 21:50:52 浏览: 31
<think>嗯,用户需要编写一个在CentOS 7上自动化安装LAMP环境的脚本,具体要求挺详细的。首先得理清楚各个组件的版本和依赖关系。Apache要2.4.63,PHP是7.4.33,MySQL是8.0.41的RPM包。用户还列出了需要启用的Apache和PHP模块,这部分需要特别注意,确保编译安装时包含这些模块。
接下来是依赖包的问题,用户提到需要安装apr、apr-util、libiconv、libmcrypt等,这些依赖可能不在默认的yum源里,得手动下载编译安装。特别是apr和apr-util,Apache的安装可能依赖它们的新版本,所以需要先处理这些依赖。
然后是PHP的模块,用户列了很多,比如bcmath、bz2、gd等,编译PHP时需要启用这些模块。可能需要安装额外的系统库,比如libpng和libjpeg-turbo-devel来支持gd模块。另外mcrypt相关模块可能需要从PECL安装,不过用户已经指定了libmcrypt的版本,得确认兼容性。
MySQL部分用户用了RPM包安装,需要注意安装顺序,可能需要先安装common、libs、client,再装server。安装完成后还要初始化,设置密码,并且处理安全设置,比如修改root密码和创建测试数据库。
Apache和PHP的联动主要通过libphp.so模块,确保在Apache的配置中正确加载该模块,并设置AddHandler处理PHP文件。安装完成后需要验证Apache是否能解析PHP,比如创建一个phpinfo页面,并通过curl或浏览器访问测试。
权限问题也不能忽视,比如/opt/lamp1目录的权限,可能需要给Apache用户(比如apache或www-data)适当的读写权限,特别是日志和网站目录。另外,SELinux和防火墙设置可能需要调整,允许HTTP和HTTPS流量。
脚本的流程大概分为几个部分:安装依赖、安装Apache、安装PHP、安装MySQL、配置各组件、启动服务并测试。需要处理各个步骤之间的依赖关系,比如Apache安装前需要apr和apr-util,PHP编译前需要各种开发库。
还需要考虑错误处理,比如某个步骤失败时脚本应该终止并提示,避免继续执行导致更多问题。可能需要在关键步骤添加检查,比如下载文件是否存在,编译是否成功,服务是否启动等。
最后是验证部分,确保Apache和PHP正确联动,MySQL可以登录,并且密码设置符合要求。可能需要自动化的测试命令,比如用curl检查phpinfo的输出,或者用mysql命令尝试连接数据库。
总之,这个脚本需要细致处理每个组件的安装和配置,确保所有模块正确启用,依赖关系满足,并且服务能够正常联动。可能需要多次测试和调整,特别是依赖库的版本和编译选项,确保与实际环境兼容。</think>以下是为CentOS 7编写的LAMP自动化安装脚本实现方案,分为环境准备、依赖处理、组件安装和验证四个部分:
```bash
#!/bin/bash
LAMP_DIR="/opt/lamp1"
mkdir -p ${LAMP_DIR}
cd ${LAMP_DIR}
# 安装系统基础依赖
yum install -y epel-release
yum groupinstall -y "Development Tools"
yum install -y wget openssl-devel expat-devel pcre-devel libxml2-devel libcurl-devel libjpeg-turbo-devel libpng-devel freetype-devel libXpm-devel
# 安装apr/apr-util
wget https://archive.apache.org/dist/apr/apr-1.7.5.tar.gz
tar xzf apr-1.7.5.tar.gz
cd apr-1.7.5
./configure --prefix=/usr/local/apr
make && make install
cd ..
wget https://archive.apache.org/dist/apr/apr-util-1.6.3.tar.gz
tar xzf apr-util-1.6.3.tar.gz
cd apr-util-1.6.3
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make && make install
cd ..
# 安装其他依赖
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz
tar xzf libiconv-1.15.tar.gz
cd libiconv-1.15
./configure --prefix=/usr/local/libiconv
make && make install
cd ..
# 安装mcrypt系列依赖
wget https://sourceforge.net/projects/mhash/files/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz
tar xzf mhash-0.9.9.9.tar.gz
cd mhash-0.9.9.9
./configure
make && make install
cd ..
wget https://sourceforge.net/projects/mcrypt/files/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz
tar xzf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8
./configure
make && make install
cd ..
# 安装Apache
wget https://dlcdn.apache.org/httpd/httpd-2.4.63.tar.gz
tar xzf httpd-2.4.63.tar.gz
cd httpd-2.4.63
./configure --prefix=/usr/local/apache \
--enable-so \
--enable-ssl \
--enable-rewrite \
--enable-modules=most \
--enable-mods-shared=all \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util \
--with-mpm=prefork \
--enable-php7
make && make install
# 配置Apache
cat >> /usr/local/apache/conf/httpd.conf << EOF
LoadModule php7_module modules/libphp7.so
AddType application/x-httpd-php .php
DirectoryIndex index.php index.html
EOF
# 安装PHP
wget https://www.php.net/distributions/php-7.4.33.tar.gz
tar xzf php-7.4.33.tar.gz
cd php-7.4.33
./configure --prefix=/usr/local/php \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-config-file-path=/usr/local/php/etc \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-gd \
--with-iconv=/usr/local/libiconv \
--with-zlib \
--enable-bcmath \
--enable-mbstring \
--enable-shmop \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-zip \
--with-bz2 \
--enable-pcntl \
--with-curl \
--enable-fileinfo \
--enable-json \
--with-openssl
make && make install
cp php.ini-production /usr/local/php/etc/php.ini
# 安装MySQL
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.41-1.el9.x86_64.rpm-bundle.tar
tar xf mysql-8.0.41-1.el9.x86_64.rpm-bundle.tar
yum install -y *.rpm
# 初始化MySQL
systemctl start mysqld
temp_pass=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}')
mysql --connect-expired-password -uroot -p"${temp_pass}" <<EOF
ALTER USER 'root'@'localhost' IDENTIFIED BY '1hblsqt2zhlmcl#@!';
FLUSH PRIVILEGES;
CREATE DATABASE testdb;
EOF
# 启动服务
systemctl enable httpd mysqld
systemctl restart httpd mysqld
# 验证
echo "<?php phpinfo(); ?>" > /usr/local/apache/htdocs/info.php
curl http://localhost/info.php | grep "PHP Version 7.4.33"
mysql -u root -p'1hblsqt2zhlmcl#@!' -e "SHOW DATABASES;"
```
实现要点说明:
1. 依赖处理:
- 使用源码编译安装apr/apr-util解决版本依赖问题
- 通过指定`--with-iconv=/usr/local/libiconv`关联自定义安装的iconv
- 安装gd模块需要提前安装libpng和libjpeg-turbo-devel
2. Apache配置:
- 使用`--enable-mods-shared=all`启用所有共享模块
- 通过`LoadModule php7_module`加载PHP模块
- 配置`AddType application/x-httpd-php`实现PHP解析
3. PHP模块:
- 使用`--with-apxs2`参数实现与Apache的整合
- 通过编译参数启用所有要求的模块
- 需要手动复制php.ini配置文件
4. MySQL安装:
- 使用RPM bundle包安装
- 自动获取临时密码完成初始化
- 设置复杂密码并创建测试数据库
5. 验证措施:
- 通过phpinfo页面验证PHP版本和模块加载
- 使用curl测试Apache/PHP联动
- 验证MySQL登录和数据库创建
注意:实际使用时需要根据网络环境调整下载源,建议将安装包提前放置到/opt/lamp1目录。生产环境应关闭phpinfo等敏感信息展示。
阅读全文
相关推荐














