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数据库的自动安装,脚本写的不错,无论是用来学习,还是生产环境中应用,都是不错的,有需要的朋友 ...
随机推荐
- Shell系列(39) - dirname
dirname作用 dirname实际工作中常常是跟$0一起使用 用于获取当前运行脚本的绝对路径 这个命令要放在shell脚本中使用,在命令行使用意义不大 [yutao@master01 ~]$ di ...
- linux帐户安全管理与技巧
实验环境 CentosOS5.6试验台. 任务一:建立与删除普通用户账户,管理组 1)创建一个新用户user1 useradd user1 查看用户是否创建成功 2)创建一个新组group1 grou ...
- 深度理解JVM
1. 环境搭建 安装jdk 2. 内存溢出场景模拟 public class Test01 { public static void main(String[] args) { //测试内存溢出 ...
- nginx 添加ssl证书
第一步: 获取linux的证书格式 .crt .key 第二步: 在nginx中default.conf中再添加一个server 第三步: 内容举例如下: server { #这里开始 liste ...
- centos实现免密登陆及远程操作
----------------------------**********------------------------------------------------- 免密码登陆 第一步: 执 ...
- CF280D-k-Maximum Subsequence Sum【模拟费用流,线段树】
正题 题目链接:https://www.luogu.com.cn/problem/CF280D 题目大意 一个长度为\(n\)的序列,\(m\)次操作 修改一个数 询问一个区间中选出\(k\)段不交子 ...
- LaTeX Vscode 配置
安装:https://www.latexstudio.net/archives/51801.html LaTeX 安装 & 宏包升级 & 入门:https://blog.csdn.ne ...
- 我的Python学习记录
Python日期时间处理:time模块.datetime模块 Python提供了两个标准日期时间处理模块:--time.datetime模块. 那么,这两个模块的功能有什么相同和共同之处呢? 一般来说 ...
- golang []byte和string的高性能转换
golang []byte和string的高性能转换 在fasthttp的最佳实践中有这么一句话: Avoid conversion between []byte and string, since ...
- 题解 [CTSC2006]歌唱王国
题目传送门 Desctiption 见题面. Solution 人类智慧... 考虑这样一个赌博游戏,现在有一个猴子,它随机从 \(1\sim n\) 中选一个打出来.现在有若干个赌徒,他们一开始都有 ...