shell脚本 PHP+swoole的安装
#!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的安装的更多相关文章
- 使用 shell 脚本实现 LANMP 一键安装
使用 shell 脚本来实现 LANMP 系统的一键安装.使用的操作系统是 CentOS 6 ,不区分 32 位和 64 位,要求机器可以连通互联网.支持 LAMP 和 LNMP ,MySQL 支持 ...
- shell脚本之nginx的安装
为了编写nginx自动部署的脚本而刚学习的shell脚本语言.写文章只是为了记录,有错误勿喷. 一.创建shell脚本程序 操作系统是Linux的 CentOS 7 版本. ...
- 自己开发shell脚本实现一键化安装。
一.说明在现实环境中可能需要批量部署服务器,那么在我们已经部署好一台服务以后如果实现剩下的服务批量安装呢: 使用shell能否实现功能: 假设我们要部署lamp或者是lnmp如何实现脚本部署? 使用以 ...
- Shell 脚本之 MySQL 一键安装及基本配置(几分钟搞定)
准备工作 MySQL 该版本下载地址: https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.30-linux-glibc2.12- ...
- shell脚本实现nfs服务安装配置,共享文件分发
##############################Deploy nfs######################## echo "start deploy nfs-server& ...
- Shell脚本一键安装LNMP环境
https://sourceforge.net/projects/opensourcefile/files/ Nginx是一款高性能的HTTP和反向代理服务器.Nginx在反向代理,Rewrite规则 ...
- 实用脚本----Linux下Jdk和Tomcat自动安装shell脚本总结
系统环境为:ubuntu 14.04 一.JDK 自动安装脚本 jdk自动安装bash shell脚本,截止今天(2014/10/15)亲测可用: sudo su #切换到root权限 mkdir / ...
- shell脚本专题之-----------全自动编译安装mysql
mysql的编译安装,在博客 开源服务专题之--------mysql的编译安装 中已经说明了,但是还是比较麻烦,尤其是一大堆命令,来手动执行,稍有不慎,就会出错.生产上一般都是先在本地测试环境进行自 ...
- 可以自动安装mysql数据库的一个shell脚本
发布:thatboy 来源:脚本学堂 [大 中 小] 分享一例shell脚本,可以实现mysql数据库的自动安装,脚本写的不错,无论是用来学习,还是生产环境中应用,都是不错的,有需要的朋友 ...
随机推荐
- Orchar Core Glossary词汇表
List of terms and concepts that you can find in Orchard Core. 您可以在Orchard Core中找到的术语和概念列表 They are g ...
- Docker系列(20)- 数据卷容器
数据卷容器 什么是数据卷容器? 容器和容器之间实现数据共享 一个容器先于宿主机创建挂载方式,宿主机就会有改卷的目录 第二个容器使用命令--volumes-from 第一个容器,共享使用了第一个容器与宿 ...
- javascript base64 encode decode 支持中文
* 字符编码 ** 一定要知道数据的字符编码 ** 使用utf-8字符编码存储数据 ** 使用utf-8字符编码输出数据 * Crypto.js 支持中文 Base64编码说明 Base64编码要求把 ...
- anchor-animation
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- PolarDB PostgreSQL DDL同步原理
概述 在共享存储一写多读的架构下,数据文件实际上只有一份.得益于多版本机制,不同节点的读写实际上并不会冲突.但是有一些数据操作不具有多版本机制,其中比较有代表性的就是文件操作.多版本机制仅限于文件内的 ...
- Redis 高可用篇:你管这叫主从架构数据同步原理?
在<Redis 核心篇:唯快不破的秘密>中,「码哥」揭秘了 Redis 五大数据类型底层的数据结构.IO 模型.线程模型.渐进式 rehash 掌握了 Redis 快的本质原因. 接着,在 ...
- 实验4:开源控制器实践——OpenDaylight
实验4:开源控制器实践--OpenDaylight 一.实验目的 能够独立完成OpenDaylight控制器的安装配置: 能够使用Postman工具调用OpenDaylight API接口下发流表. ...
- VUE -input输入框字母转大写
示例: 输入自动转--->大写 <input type="text" placeholder="请输入证件号码" maxlength="1 ...
- Asp.Net Core 中的HTTP协议详解
1.前言 好久没写博客了,最近虽然没什么假期,但是却比以前还忙!工作.工作.工作,就像赶集似的,聚在一起.对于Web开发人员来说,深入了解HTTP有助于我们开发出更好.更高的Web应用程序.当应用程序 ...
- Linux基础安全配置(centos7)
1.帐户口令的生存期不长于90天 sed -i.old 's#99999#90#g' /etc/login.defs egrep "90" /etc/login.defs 2.密码 ...