#!bin/bash

set -e

# Check if user is root
if [ $(id -u) != "0" ]; then
echo "Error: please use root to install"
exit 1
fi id -u www >& /dev/null
if [ $? -ne 0 ]; then
groupadd www
useradd -g www -M -s /sbin/nologin www
fi PHP_INFO=('php-7.2.29' 'php-7.3.16' 'php-7.4.4')
PHP_ADDR=(
'https://www.php.net/distributions/php-7.2.29.tar.gz'
'https://www.php.net/distributions/php-7.3.16.tar.gz'
'https://www.php.net/distributions/php-7.4.4.tar.gz'
)
SWOOLE_ADDR='http://123.207.144.90/resource/swoole-4.4.16.tar.gz'
SWOOLE_FILE=$(basename ${SWOOLE_ADDR}) Install_PHP()
{
PHP_Select=-1
if [ $PHP_Select -lt 0 ]; then
echo "1: Install ${PHP_INFO[0]}"
echo "2: Install ${PHP_INFO[1]}"
echo "3: Install ${PHP_INFO[2]}"
read -p "Enter your choice (1, 2 or 3), default is 2: " PHP_Select
fi case "${PHP_Select}" in
"1" )
echo You will install ${PHP_INFO[0]}
PHP_Select=0
;;
"2" )
echo You will install ${PHP_INFO[1]}
PHP_Select=1
;;
"3" )
echo You will install ${PHP_INFO[2]}
PHP_Select=2
;;
* )
echo No input, You will install ${PHP_INFO[1]}
PHP_Select=1
esac PHP_SOURCE_ADDR=${PHP_ADDR[$PHP_Select]}
PHP_SOURCE_FILE=$(basename ${PHP_SOURCE_ADDR}) echo $PHP_SOURCE_ADDR
echo $PHP_SOURCE_FILE [ -d /data/software ] || mkdir -p /data/software
[ -d /data/logs ] || mkdir -p /data/logs
cd /data/software yum install -y epel-release && yum -y update
yum -y install libjpeg libjpeg-devel libpng libpng-devel \
libXpm libXpm-devel freetype freetype-devel mcrypt mhash \
libpqxx libpqxx-devel libxml2-devel curl-devel libmcrypt \
libmcrypt-devel postgresql-devel openssl-devel oniguruma oniguruma-devel
yum -y install make gcc gcc-c++ wget if [ ! -e ${PHP_SOURCE_FILE} ]; then
wget $PHP_SOURCE_ADDR -O $PHP_SOURCE_FILE
fi
if [ -d php-src ]; then
rm -rf php-src/*
else
mkdir php-src
fi tar zxf $PHP_SOURCE_FILE -C php-src && cd php-src/php* ./configure --prefix=/usr/local/php \
--enable-fpm --with-fpm-user=www --with-fpm-group=www \
--with-config-file-path=/usr/local/php/etc \
--with-pdo-mysql \
--with-mysqli \
--with-pgsql \
--with-pdo-pgsql \
--with-curl \
--with-libxml-dir \
--enable-soap \
--enable-calendar \
--with-mhash \
--enable-sockets \
--with-openssl \
--enable-bcmath \
--with-zlib-dir \
--enable-mbstring \
--enable-pcntl \
--with-gd --with-jpeg-dir --with-png-dir --with-xpm-dir \
--with-freetype-dir \
--without-sqlite3 --without-pdo-sqlite make && make install
ln -sf /usr/local/php/bin/php /usr/local/sbin/php
ln -sf /usr/local/php/sbin/php-fpm /usr/local/sbin/php-fpm
cp php.ini-production /usr/local/php/etc/php.ini
sed -i '/;date.timezone/a date.timezone=PRC' /usr/local/php/etc/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
sed -i 's/;pid\ =\ run\/php-fpm.pid/pid = \/var\/run\/php-fpm.pid/' /usr/local/php/etc/php-fpm.conf
sed -i 's/;error_log\ =\ log\/php-fpm.log/error_log = \/data\/log\/php-fpm.log/' /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf rm -rf /data/software/php-src read -p "Whether to install phpredis(yes/no):" Install_PHPRedis
if [ "${Install_PHPRedis}" = "yes" -o "${Install_PHPRedis}" -o -z "${Install_PHPRedis}" ]; then
/usr/local/php/bin/pecl install redis
sed -i '$a\\nextension=redis.so\n' /usr/local/php/etc/php.ini
fi echo "Install ${PHP_INFO[$PHP_Select]} success !"
sleep 1 } Install_Swoole()
{
echo "Install Swoole" cd /data/software
if [ ! -s ${SWOOLE_FILE} ]; then
wget ${SWOOLE_ADDR} -O ${SWOOLE_FILE}
fi yum -y install autoconf if [ -d swoole-src ]; then
rm -rf swoole-src/*
else
mkdir swoole-src
fi
tar zxf ${SWOOLE_FILE} -C swoole-src && cd swoole-src/swoole*
/usr/local/php/bin/phpize
./configure \
--enable-openssl \
--enable-http2 \
--with-php-config=/usr/local/php/bin/php-config
make && make install
rm -rf /data/software/swoole-src
sed -i '$a\\nextension=swoole.so\n' /usr/local/php/etc/php.ini echo "Install Swoole success!"
} if [ ! -s /usr/local/php/bin/php ]; then
Install_PHP
fi if [ $(grep 'swoole' /usr/local/php/etc/php.ini | wc -l) -eq 0 ];
then
Install_Swoole
fi

shell脚本 PHP+swoole的安装的更多相关文章

  1. 使用 shell 脚本实现 LANMP 一键安装

    使用 shell 脚本来实现 LANMP 系统的一键安装.使用的操作系统是 CentOS 6 ,不区分 32 位和 64 位,要求机器可以连通互联网.支持 LAMP 和 LNMP ,MySQL 支持 ...

  2. shell脚本之nginx的安装

           为了编写nginx自动部署的脚本而刚学习的shell脚本语言.写文章只是为了记录,有错误勿喷. 一.创建shell脚本程序        操作系统是Linux的 CentOS 7 版本. ...

  3. 自己开发shell脚本实现一键化安装。

    一.说明在现实环境中可能需要批量部署服务器,那么在我们已经部署好一台服务以后如果实现剩下的服务批量安装呢: 使用shell能否实现功能: 假设我们要部署lamp或者是lnmp如何实现脚本部署? 使用以 ...

  4. Shell 脚本之 MySQL 一键安装及基本配置(几分钟搞定)

    准备工作 MySQL 该版本下载地址: https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.30-linux-glibc2.12- ...

  5. shell脚本实现nfs服务安装配置,共享文件分发

    ##############################Deploy nfs######################## echo "start deploy nfs-server& ...

  6. Shell脚本一键安装LNMP环境

    https://sourceforge.net/projects/opensourcefile/files/ Nginx是一款高性能的HTTP和反向代理服务器.Nginx在反向代理,Rewrite规则 ...

  7. 实用脚本----Linux下Jdk和Tomcat自动安装shell脚本总结

    系统环境为:ubuntu 14.04 一.JDK 自动安装脚本 jdk自动安装bash shell脚本,截止今天(2014/10/15)亲测可用: sudo su #切换到root权限 mkdir / ...

  8. shell脚本专题之-----------全自动编译安装mysql

    mysql的编译安装,在博客 开源服务专题之--------mysql的编译安装 中已经说明了,但是还是比较麻烦,尤其是一大堆命令,来手动执行,稍有不慎,就会出错.生产上一般都是先在本地测试环境进行自 ...

  9. 可以自动安装mysql数据库的一个shell脚本

    发布:thatboy   来源:脚本学堂     [大 中 小] 分享一例shell脚本,可以实现mysql数据库的自动安装,脚本写的不错,无论是用来学习,还是生产环境中应用,都是不错的,有需要的朋友 ...

随机推荐

  1. Linux系列(40) - 自动同步时间chrony

    前言 Centos8开始取消了ntp同步时间,改为chrony同步 chrony工具安装 yum -y install chrony 修改配置文件 将配置文件中的同步服务器修改为国内的时间服务器(推荐 ...

  2. linux帐户安全管理与技巧

    实验环境 CentosOS5.6试验台. 任务一:建立与删除普通用户账户,管理组 1)创建一个新用户user1 useradd user1 查看用户是否创建成功 2)创建一个新组group1 grou ...

  3. JDK1.8源码(四)——java.util.Arrays类

    一.概述 1.介绍 Arrays 类是 JDK1.2 提供的一个工具类,提供处理数组的各种方法,基本上都是静态方法,能直接通过类名Arrays调用. 二.类源码 1.asList()方法 将一个泛型数 ...

  4. spring入门1-IOC和DI

    1.概述 1.1.简介 Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control:反转控制)和 AOP(Aspect Or ...

  5. 浅聊Linux的五种IO模型

    在日常 Coding 中,多多少少都会接触到网络 IO,就会想要深入了解一下.看了很多文章,总是云里雾里的感觉,直到读了<UNIX网络编程 卷1:套接字联网API>中的介绍后,才豁然开朗. ...

  6. DeDeCMS v5.7 漏洞复现

    DedeCMS V5.7 漏洞复现 XSS漏洞 首先我们在首页要进行用户的注册以及登录 这里我们已经提前注册过了,登录即可 普通用户账号密码:root/passwd 管理员账号密码:admin/pik ...

  7. 牛客练习赛89E-牛牛小数点【数论】

    正题 题目链接:https://ac.nowcoder.com/acm/contest/11179/E 题目大意 定义\(f(x)\)表示\(\frac{1}{x}\)的混循环节长度(如果没有循环节就 ...

  8. ES6箭头函数(箭头函数和普通函数的区别)

    箭头函数 一个参数 // 只有一个参数 // f : 函数名称 // v : 函数参数 // v+v : 函数内容 let f=v=> v+v console.log(f(10)) //20 两 ...

  9. 如何迁移 Spring Boot 到函数计算

    作者 | 田小单 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上 ...

  10. PinPoint单节点部署及客户端配置方法

    在一次做项目中,需要涉及全链路压测,为了更好定位链路中某一节点可能会出现的问题,在繁忙之余,快速部署及应用了该链路工具,分享给大家~ 话不多说,开始部署~ 一.环境配置1.1 获取需要的依赖包进入ho ...