Linux运维_Bash脚本_快速配置PHP-7.4.28

2024-03-22 15:12

本文主要是介绍Linux运维_Bash脚本_快速配置PHP-7.4.28,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Linux运维_Bash脚本_快速配置PHP-7.4.28

Bash (Bourne Again Shell) 是一个解释器,负责处理 Unix 系统命令行上的命令。它是由 Brian Fox 编写的免费软件,并于 1989 年发布的免费软件,作为 Sh (Bourne Shell) 的替代品。

您可以在 Linux 和 MacOS 机器上使用 Bash,甚至可以通过适用于 Linux 的 Windows 子系统在 Windows 10 机器上使用。

使用方法

  • 编译安装程序:

Apache (httpd-2.4.54)

PHP-7.4.28

  • 执行 Bash Shell 脚本:

输入 /[路径名]/[脚本名].sh 即可进行自动快速配置,过程中提示输入 (y/n) 输入 y 则进行下一步,这样分阶段确认的原因是为了确保能够看到上一个快速配置结果中可能的错误和提示。

完整脚本

#! /bin/bash
# Create By GF 2023-03-20 10:31# ------- Configure - httpd - 2.4.54 Support -------
# Need Program: /opt/httpd-2.4.54
# ------------ Configure - PHP - 7.4.28 ------------
# Need Program: /opt/php-7.4.28# ################################ Configure - httpd - 2.4.54 Support ################################# Function: 快速配置(Quick Configure) httpd-2.4.54 支持
# ##################################################
function Quick_Configure_httpd_2_4_54_Support() {if [[ -d "/opt/httpd-2.4.54" ]]; thenlocal User_Exists=$(cat /etc/passwd | grep -o apache)local ITEM_EXISTS="None"local ITEM_NAME="None"# ------------------------------------------read -p "[Confirm] Quick Configure ( httpd-2.4.54 )? (y/n)>" VERIFYif [[ "$VERIFY" != "y" ]]; then exit 1; fi# ------------------------------------------# 编辑 Apache (httpd) 配置文件 httpd.conf, 写入: LoadModule php7_module modules/libphp7.so, 用于加载 PHP 模块 (加载 PHP 模块应在对 PHP 的解析之前, 否则可能无法解析 PHP)。# ..........................................ITEM_EXISTS=$(cat /opt/httpd-2.4.54/conf/httpd.conf | grep -o "LoadModule php7_module modules/libphp7.so")# ..........................................if [[ -z "$ITEM_EXISTS" ]]; thenecho "LoadModule php7_module modules/libphp7.so" >> /opt/httpd-2.4.54/conf/httpd.conf# ......................................echo "Add Line:                                           -> httpd.conf"echo "Add Line: LoadModule php7_module modules/libphp7.so -> httpd.conf"echo "Add Line:                                           -> httpd.conf"fi# ------------------------------------------# 编辑 Apache (httpd) 配置文件 httpd.conf, 以支持 Apache 对 PHP 的解析 (对 PHP 的解析应在加载 PHP 模块之后, 否则可能无法解析 PHP)。# 编辑 Apache (httpd) 配置文件 httpd.conf, 写入: <IfModule mod_php7.c># 编辑 Apache (httpd) 配置文件 httpd.conf, 写入:     AddType application/x-httpd-php .php# 编辑 Apache (httpd) 配置文件 httpd.conf, 写入: </IfModule># ..........................................ITEM_EXISTS=$(cat /opt/httpd-2.4.54/conf/httpd.conf | grep -o "AddType application/x-httpd-php .php")# ..........................................if [[ -z "$ITEM_EXISTS" ]]; thenecho ""                                         >> /opt/httpd-2.4.54/conf/httpd.confecho "<IfModule mod_php7.c>"                    >> /opt/httpd-2.4.54/conf/httpd.confecho "    AddType application/x-httpd-php .php" >> /opt/httpd-2.4.54/conf/httpd.confecho "</IfModule>"                              >> /opt/httpd-2.4.54/conf/httpd.confecho ""                                         >> /opt/httpd-2.4.54/conf/httpd.conf# ......................................echo "Add Line:                                          -> httpd.conf"echo "Add Line: <IfModule mod_php7.c>                    -> httpd.conf"echo "Add Line:     AddType application/x-httpd-php .php -> httpd.conf"echo "Add Line: </IfModule>                              -> httpd.conf"echo "Add Line:                                          -> httpd.conf"fi# ------------------------------------------# 编辑 Apache (httpd) 配置文件 httpd.conf, 将 DirectoryIndex index.html 改为 DirectoryIndex index.html index.php# ..........................................ITEM_EXISTS=$(cat /opt/httpd-2.4.54/conf/httpd.conf | grep --regexp="DirectoryIndex .*index\.php.*")# ..........................................if [[ -z "$ITEM_EXISTS" ]]; thensed -r -i "s/DirectoryIndex .*index\.html.*/& index.php/" /opt/httpd-2.4.54/conf/httpd.conf# ..........................................ITEM_NAME=$(cat /opt/httpd-2.4.54/conf/httpd.conf | grep --regexp="DirectoryIndex .*index\.php.*")echo "Edit Item: DirectoryIndex ...... index.html ...... -> $ITEM_NAME"fielseecho "[Caution] Program: ( /opt/httpd-2.4.54 ) Does Not Exists."# ------------------------------------------return 0fi
}# ###################################### Configure PHP - 7.4.28 ####################################### Function: 快速配置(Quick Configure) PHP-7.4.28
# ##################################################
function Quick_Configure_PHP_7_4_28() {if [[ -d "/opt/php-7.4.28" ]]; thenlocal GROUP_NAME="None"local USER_NAME="None"local ITEM_NAME="None"# ------------------------------------------read -p "[Confirm] Quick Configure ( php-7.4.28 )? (y/n)>" VERIFYif [[ "$VERIFY" != "y" ]]; then exit 1; fi# ------------------------------------------GROUP_NAME=$(cat /etc/group | grep -o "^php")# ..........................................if [[ -z "$GROUP_NAME" && -f "/usr/sbin/addgroup" ]]; then addgroup --system php; fi# ..........................................GROUP_NAME=$(cat /etc/group | grep -o "^php")# ..........................................if [[ -z "$GROUP_NAME" && -f "/usr/sbin/groupadd" ]]; then groupadd --system php; fi# ..........................................GROUP_NAME=$(cat /etc/group | grep -o "^php")echo "Exists Group: $GROUP_NAME"# ------------------------------------------# 命令 adduser 一般是在 Unix 系统下创建用户所用到的 Perl 脚本命令。# 使用 adduser 时, 创建用户的过程更像是一种人机对话, 系统会提示你输入各种信息, 然后会根据这些信息帮你创建新用户。# adduser 选项释义:#     -c, --comment "COMMENT"                  设置用户的备注信息。#     -d, --home HOME_DIR                      指定用户的主目录路径。#     -s, --shell SHELL                        指定用户的默认 Shell。#     -g, --gid GROUP                          将用户添加到指定的用户组。#     -p, --password PASSWORD                  设置用户的密码 (加密)。#     -e, --expiredate EXPIRE_DATE             设置用户的过期日期。#     -r, --system                             创建一个系统用户 (不可登录)。USER_NAME=$(cat /etc/passwd | grep -o "^php")# ..........................................if [[ -z "$USER_NAME" && -f "/usr/sbin/adduser" ]]; then adduser php --system --home /var/www && adduser php php; fi# ..........................................# 命令 useradd 一般是在 Linux 系统下创建用户所用到的 ELF 可执行程序命令。# 使用 useradd 时, 如果后面不添加任何参数选项, 创建出来的用户将是默认 "三无" 用户: 无 Home Directory, 无密码, 无系统 Shell。# useradd 选项释义:#     -g, --gid GROUP                          新账户主组的名称或 ID。#     -M, --no-create-home                     不创建用户的主目录。#     -s, --shell SHELL                        指定用户的默认 Shell。USER_NAME=$(cat /etc/passwd | grep -o "^php")# ..........................................if [[ -z "$USER_NAME" && -f "/usr/sbin/useradd" ]]; then useradd php -s /sbin/nologin -g php -M; fi# ..........................................USER_NAME=$(cat /etc/passwd | grep -o "^php")echo "Exists User: $USER_NAME"# ------------------------------------------# 复制 PHP-FPM 配置文件 php-fpm.conf, 将 php-fpm.conf.default 复制为 /opt/php-7.4.28/etc/php-fpm.conf 使其生效。if [[ ! -f "/opt/php-7.4.28/etc/php-fpm.conf" ]]; thencp -v /opt/php-7.4.28/etc/php-fpm.conf.default /opt/php-7.4.28/etc/php-fpm.conf# ......................................echo "Copy File: php-fpm.conf.default -> php-fpm.conf"fi# ------------------------------------------# 编辑 PHP-FPM 脚本文件 php-fpm, 将 php_fpm_PID= ...... /php-fpm.pid 改为 php_fpm_PID=/var/run/php-fpm.pid (应与 php-fpm.conf 中的 php-fpm.pid 路径相同)。sed -r -i "s#^php_fpm_PID\=.*php-fpm\.pid#php_fpm_PID\=/var/run/php-fpm\.pid#" /etc/init.d/php-fpm# ..........................................ITEM_NAME=$(cat /etc/init.d/php-fpm | grep --regexp="^php_fpm_PID\=.*php-fpm\.pid")echo "Edit Item: php_fpm_PID= ...... /php-fpm.pid -> $ITEM_NAME"# ------------------------------------------# 编辑 PHP-FPM 配置文件 php-fpm.conf, 将 ;pid = run/php-fpm.pid 取消注释, 改为 pid = /var/run/php-fpm.pid (应与 /etc/init.d/php-fpm 中的 php-fpm.pid 路径相同)。sed -i "s#^;pid = run/php-fpm.pid#pid = /var/run/php-fpm.pid#" /opt/php-7.4.28/etc/php-fpm.conf# ..........................................ITEM_NAME=$(cat /opt/php-7.4.28/etc/php-fpm.conf | grep --regexp="^pid \= .*php-fpm.pid")echo "Edit Item: ;pid = run/php-fpm.pid -> $ITEM_NAME"# ------------------------------------------# 编辑 PHP-FPM 配置文件 php-fpm.conf, 将 ;error_log = log/php-fpm.log 取消注释, 改为 error_log = /var/log/php-fpm.logsed -i "s#^;error_log = log/php-fpm.log#error_log = /var/log/php-fpm.log#" /opt/php-7.4.28/etc/php-fpm.conf# ..........................................ITEM_NAME=$(cat /opt/php-7.4.28/etc/php-fpm.conf | grep --regexp="^error_log \= .*php-fpm.log")echo "Edit Item: ;error_log = log/php-fpm.log -> $ITEM_NAME"# ------------------------------------------# 编辑 PHP 配置文件 php.ini, 将 short_open_tag = Off 改为 short_open_tag = On (如果为 Off, 可能会打不开 phpinfo(); 测试代码页面)。sed -r -i "s#^short_open_tag.*#short_open_tag = On#" /opt/php-7.4.28/etc/php.ini# ..........................................ITEM_NAME=$(cat /opt/php-7.4.28/etc/php.ini | grep --regexp="^short_open_tag")echo "Edit Item: short_open_tag = ... -> $ITEM_NAME"elseecho "[Caution] Program: ( /opt/php-7.4.28 ) Does Not Exists."# ------------------------------------------return 0fi
}function main() {# ----- Configure - httpd - 2.4.54 Support -----Quick_Configure_httpd_2_4_54_Support# ---------- Configure - PHP - 7.4.28 ----------Quick_Configure_PHP_7_4_28
}main

总结

以上就是关于 Linux运维 Bash脚本 快速配置PHP-7.4.28 的全部内容。

更多内容可以访问我的代码仓库:

https://gitee.com/goufeng928/public

https://github.com/goufeng928/public

这篇关于Linux运维_Bash脚本_快速配置PHP-7.4.28的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/835547

相关文章

一文教你Python如何快速精准抓取网页数据

《一文教你Python如何快速精准抓取网页数据》这篇文章主要为大家详细介绍了如何利用Python实现快速精准抓取网页数据,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录1. 准备工作2. 基础爬虫实现3. 高级功能扩展3.1 抓取文章详情3.2 保存数据到文件4. 完整示例

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

Linux之systemV共享内存方式

《Linux之systemV共享内存方式》:本文主要介绍Linux之systemV共享内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、工作原理二、系统调用接口1、申请共享内存(一)key的获取(二)共享内存的申请2、将共享内存段连接到进程地址空间3、将

SpringBoot3.4配置校验新特性的用法详解

《SpringBoot3.4配置校验新特性的用法详解》SpringBoot3.4对配置校验支持进行了全面升级,这篇文章为大家详细介绍了一下它们的具体使用,文中的示例代码讲解详细,感兴趣的小伙伴可以参考... 目录基本用法示例定义配置类配置 application.yml注入使用嵌套对象与集合元素深度校验开发

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

如何为Yarn配置国内源的详细教程

《如何为Yarn配置国内源的详细教程》在使用Yarn进行项目开发时,由于网络原因,直接使用官方源可能会导致下载速度慢或连接失败,配置国内源可以显著提高包的下载速度和稳定性,本文将详细介绍如何为Yarn... 目录一、查询当前使用的镜像源二、设置国内源1. 设置为淘宝镜像源2. 设置为其他国内源三、还原为官方

Python利用ElementTree实现快速解析XML文件

《Python利用ElementTree实现快速解析XML文件》ElementTree是Python标准库的一部分,而且是Python标准库中用于解析和操作XML数据的模块,下面小编就来和大家详细讲讲... 目录一、XML文件解析到底有多重要二、ElementTree快速入门1. 加载XML的两种方式2.

CentOS7更改默认SSH端口与配置指南

《CentOS7更改默认SSH端口与配置指南》SSH是Linux服务器远程管理的核心工具,其默认监听端口为22,由于端口22众所周知,这也使得服务器容易受到自动化扫描和暴力破解攻击,本文将系统性地介绍... 目录引言为什么要更改 SSH 默认端口?步骤详解:如何更改 Centos 7 的 SSH 默认端口1