#!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. Python生成桌面应用

    1.cd进入project所在根目录 2.pyinstaller -F demo.py --noconsole 3.自定义图标 选择ico格式图标发在project目录 4.pyinstaller - ...

  2. 『Python』matplotlib常用图表

    这里简要介绍几种统计图形的绘制方法,其他更多图形可以去matplotlib找examples魔改 1. 柱状图 柱状图主要是应用在定性数据的可视化场景中,或是离散数据类型的分布展示.例如,一个本科班级 ...

  3. CF848E-Days of Floral Colours【dp,分治NTT】

    正题 题目链接:https://www.luogu.com.cn/problem/CF848E 题目大意 \(2n\)个花排成一个圆环,\(n\)种颜色每种两个,要求两个相同颜色之间最小距离为\(1, ...

  4. 我决定!墙裂推荐高清无码Python电子书(文中福利)

    @ 目录 前言 视频网站学习的优点和缺点 Python基础 游戏 网站开发 前言 近几年学了Python,查阅了不少资料,如B站,慕课网,我要自学网等等,然后自己边看学书自己整理学习资料,想分享下如何 ...

  5. 用Fiddler抓不到https的包?因为你姿势不对!往这看!

    前言 刚入行测试的小伙伴可能不知道,Fiddler默认抓http的包,如果要抓https的包,是需要装证书的!什么鬼证书?不明白的话继续往下看. Fiddler 抓取 https 数据 第一步:下载 ...

  6. Python : TypeError: 'int' object is not iterable

    用循环依次对list中的每个名字打印出 Hello, xxx! -------------------------------------------------------- L = ['Bart' ...

  7. windows使用VS编译python源码

    使用VS2021编译python源码 说明,使用VS2019也是可以的. 环境准备 对于VS2019首要要安装必要的环境 到python官网下载源码压缩包以及解压(红色箭头任选一个都行) 打开下载好的 ...

  8. 【vue】使用 Video.js 播放视频

    目录 安装 引入 使用 参考文档 环境: vue 2.0+ element ui (这里的代码用了elmentui的按钮样式,可以不用elment ui的样式) 安装 在项目中安装 video.js. ...

  9. TypeScript 枚举指南

    枚举是受 TypeScript 支持的数据类型.枚举允许您定义一组命名常量.使用它们可以更轻松地记录意图或创建一组不同的案例.枚举大多数用于面向对象的编程语言(如 Java 和 C#)中,现在也可以 ...

  10. logstash输出到rabbitmq

    场景 将应用日志文件发送到rabbitmq. filebeat 不支持rabbitmq作为输出.因此,需要先将文件由filebeat发送到logstash ,再由logstash 输出到rabbitm ...