#!/bin/bash #Provided by @soeasy PHP="7.2.26" NGINX="2.3.2" PCRE="8.43" REDIS="4.0.14" MAIN_MYSQL="5.6" MYSQL="5.6.46" LIB_FREETYPE='2.10.1' LIB_ZIP="1.5.2" LIB_GD="2.2.5" CMAKE='3.12.4' COMPOSER="1.9.1" PHP_JPEG='9c' PHP_REDIS="4.1.1" PHP_YAF="3.0.8" PHP_YAR="2.0.5" PHP_MSGPACK="2.0.3" PHP_MONGODB="1.5.3" PHP_APCU="5.1.18" CACHETOOL="4.1.1" COUNTRY="CN" COUNTRY_FILE="/tmp/country" WWWUSER="www" DATAPATH="/data" WWWDATAPATH="/data/www" MYSQLUSER="mysql" MYSQLDATAPATH="/data/mysql" PHP_INI="/etc/php.ini" groupadd $WWWUSER useradd -r -g $WWWUSER -s /sbin/nologin -g $WWWUSER -M $WWWUSER # yum update # check country curl -o $COUNTRY_FILE ifconfig.co/country-iso checkCN=$(< $COUNTRY_FILE grep $COUNTRY) if [[ -n $checkCN ]]; then if [[ -f /usr/local/qcloud ]]; then curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos6_base.repo curl -o /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-6.repo elif [ -f /usr/sbin/aliyun-service ]; then curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo else curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS6-Base-163.repo fi fi yum clean all yum makecache /bin/sed -i -e '/^export.*mysql\/bin.*$/d' /etc/profile echo "export PATH=\"/usr/local/cmake/bin/:/usr/local/mysql/bin:/usr/local/bin:\$PATH\";" >> /etc/profile echo '/usr/local/lib64' >> /etc/ld.so.conf echo '/lib64' >> /etc/ld.so.conf #shellcheck disable=SC1091 source /etc/profile ldconfig # update git -> 2.* # yum install http://opensource.wandisco.com/centos/6/git/x86_64/wandisco-git-release-6-1.noarch.rpm # update gcc -> gcc 4.8.2 curl -o /etc/yum.repos.d/hop5.repo http://www.hop5.in/yum/el6/hop5.repo yum -y remove mysql-server mysql mysql-libs yum -y install epel-release telnet git wget ntpdate crontabs cmake ncurses-devel bison autoconf automake libtool gcc gcc-c++ openssl openssl-devel curl-devel geoip-devel killall php-fpm killall mysql killall nginx # install lib devel yum -y install libxml2 libxml2-devel libcurl libcurl-devel freetype-devel libpng libjpeg-devel libpng-devel libwebp-devel # install cmake cd /usr/local/src || exit 1 curl -L -o /usr/local/src/cmake-${CMAKE}.tar.gz https://cmake.org/files/v3.12/cmake-${CMAKE}.tar.gz tar xzf cmake-${CMAKE}.tar.gz cd cmake-${CMAKE} || exit 1 ./configure && make && make install && make clean # install libzip cd /usr/local/src || exit 1 curl -L -o /usr/local/src/libzip-${LIB_ZIP}.tar.gz https://nih.at/libzip/libzip-${LIB_ZIP}.tar.gz tar xzf libzip-${LIB_ZIP}.tar.gz cd libzip-${LIB_ZIP} || exit 1 mkdir -p build cd build && cmake .. && make && make install # install freetype cd /usr/local/src || exit 1 curl -L -o /usr/local/src/freetype-${LIB_FREETYPE}.tar.gz https://sourceforge.net/projects/freetype/files/freetype2/${LIB_FREETYPE}/freetype-${LIB_FREETYPE}.tar.gz/download tar xzf freetype-${LIB_FREETYPE}.tar.gz cd freetype-${LIB_FREETYPE} || exit 1 ./configure && make && make install # install libjpeg cd /usr/local/src || exit 1 curl -L -o /usr/local/src/jpegsrc.v${PHP_JPEG}.tar.gz http://www.ijg.org/files/jpegsrc.v${PHP_JPEG}.tar.gz tar xzf jpegsrc.v${PHP_JPEG}.tar.gz cd jpeg-${PHP_JPEG} || exit 1 ./configure && make && make install make libdir=/usr/lib64 make libdir=/usr/lib64 install # install libgd cd /usr/local/src || exit 1 curl -L -o /usr/local/src/libgd-${LIB_GD}.tar.gz https://github.com/libgd/libgd/releases/download/gd-${LIB_GD}/libgd-${LIB_GD}.tar.gz tar xzf libgd-${LIB_GD}.tar.gz cd libgd-${LIB_GD} || exit 1 ./configure && make && make install # install php cd /usr/local/src || exit 1 curl -L -o /usr/local/src/php-${PHP}.tar.gz https://www.php.net/distributions/php-${PHP}.tar.gz tar xzf php-${PHP}.tar.gz cd php-${PHP} || exit 1 ./configure --enable-ctype --enable-exif --enable-ftp --with-curl --with-zlib --with-mysql-sock=/tmp/mysql.sock --with-pdo-mysql=shared,mysqlnd --with-mysqli=shared,mysqlnd --enable-mbstring --enable-inline-optimization --disable-debug --enable-sockets --disable-short-tags --enable-phar --enable-fpm --with-fpm-user=$WWWUSER --with-fpm-group=$WWWUSER --with-gd --with-openssl --enable-bcmath --enable-shmop --enable-mbregex --with-iconv --with-mhash --enable-pcntl --enable-zip --enable-soap --enable-session --without-gdbm --with-config-file-path=/etc --with-jpeg-dir=/usr/local --with-freetype-dir=/usr/local --with-webp-dir=/usr/local make && make install && make clean # php config cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm -r cp ./php.ini-development $PHP_INI -r cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf -r cp /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.conf /bin/sed -i -e 's/^include=NONE.*$/include=etc\/php-fpm.d\/\*.conf/' /usr/local/etc/php-fpm.conf chmod +x /etc/init.d/php-fpm chkconfig --add php-fpm chkconfig php-fpm on /usr/local/bin/pecl install yaf-${PHP_YAF} /usr/local/bin/pecl install msgpack-${PHP_MSGPACK} /usr/local/bin/pecl install mongodb-${PHP_MONGODB} printf "yes\n" | /usr/local/bin/pecl install yar-${PHP_YAR} printf "no\n" | /usr/local/bin/pecl install redis-${PHP_REDIS} printf "no\n" | /usr/local/bin/pecl install apcu-${PHP_APCU} { echo 'extension=msgpack.so' echo 'extension=redis.so' echo 'extension=mysqli.so' echo 'extension=pdo_mysql.so' echo 'extension=mongodb.so' echo 'extension=yar.so' echo 'extension=apcu.so' } >> ${PHP_INI} echo '[yaf] extension=yaf.so yaf.environ=dev ' >> $PHP_INI /bin/sed -i -e 's/^[;]\{0,1\}date.timezone =.*$/date.timezone = PRC/' $PHP_INI # install compoer cd /usr/local/src || exit 1 curl -L -o /usr/local/src/composer.phar https://github.com/composer/composer/releases/download/${COMPOSER}/composer.phar /bin/cp -rf /usr/local/src/composer.phar /usr/local/bin/composer chmod +x /usr/local/bin/composer # install cachetool cd /usr/local/src || exit 1 curl -L -o /usr/local/bin/cachetool https://github.com/gordalina/cachetool/raw/gh-pages/downloads/cachetool-${CACHETOOL}.phar chmod +x /usr/local/bin/cachetool # install tengine cd /usr/local/src || exit 1 curl -L -o /usr/local/src/pcre-${PCRE}.tar.gz https://ftp.pcre.org/pub/pcre/pcre-${PCRE}.tar.gz tar xzf pcre-${PCRE}.tar.gz curl -L -o /usr/local/src/tengine-${NGINX}.tar.gz http://tengine.taobao.org/download/tengine-${NGINX}.tar.gz tar xzf tengine-${NGINX}.tar.gz cd tengine-${NGINX} || exit 1 ./configure --with-select_module --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-pcre=/usr/local/src/pcre-${PCRE} --with-http_geoip_module make && make install # ## install redis cd /usr/local/src || exit 1 curl -L -o /usr/local/src/redis-${REDIS}.tar.gz http://download.redis.io/releases/redis-${REDIS}.tar.gz tar xzf redis-${REDIS}.tar.gz cd redis-${REDIS} || exit 1 make && make install mkdir -p /etc/redis cp -f ./*.conf /etc/redis sed -i -e "s/redis_\${REDIS_PORT}/redis-server/" ./utils/install_server.sh sed -i -e "s/redis_\$REDIS_PORT/redis-server/" ./utils/install_server.sh cat << CMD | ./utils/install_server.sh 6379 /etc/redis/redis.conf CMD ## install mysql groupadd $MYSQLUSER useradd -r -g $MYSQLUSER -s /bin/false $MYSQLUSER cd /usr/local/src || exit 1 mkdir -p ${DATAPATH} mkdir -p ${WWWDATAPATH} rm /usr/local/mysql/* -rf rm /var/lib/mysql/ib* -rf curl -L -o /usr/local/src/mysql-${MYSQL}.tar.gz https://cdn.mysql.com/Downloads/MySQL-${MAIN_MYSQL}/mysql-${MYSQL}.tar.gz tar xzf mysql-${MYSQL}.tar.gz cd mysql-${MYSQL} || exit 1 cmake . -DMYSQL_DATADIR=$MYSQLDATAPATH -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_bin make && make install && make clean ## install mysql init cd /usr/local/mysql || exit 1 ./scripts/mysql_install_db --user=$MYSQLUSER --datadir=$MYSQLDATAPATH cp support-files/mysql.server /etc/init.d/mysql cp -f support-files/mysql.server /etc/init.d/mysql chkconfig --add mysql chkconfig mysql on ## mysql config echo "Creating /etc/my.cnf" ( cat <