腾讯SocialGame服务器安装脚本

最近在做SocialGame需要在腾讯的服务器上架设PHP环境,而且他们需要把软件安装到指定目录

于是我苦逼的全部编译安装,每次都得1-2H非常不爽,于是愤怒之下写了下面这个自动脚本,不是很高端

是采用makeself打包成bin文件,然后自己写的install.sh安装脚本。

打包下载安装一键安装脚本,我已经在centos 5.6 X64及arch X6测试通过

安装脚本DEMO如下

#!/bin/sh
_ROOT_PATH=”/data/xxx”
_SERVICE_PATH=”/usr/local/services”
_SOURCE_PATH=”$(pwd)”
_INSTALL_LOG=”${_SOURCE_PATH}/install.log”
_HOME_PATH=$(env|grep HOME|awk -F= ‘{print $2}’)
_MYSQL_PATH=”${_ROOT_PATH}/mysql-1″
_MYSQL_PASSWORD=”asdasda”

sudo su – root -c “mkdir -p $_ROOT_PATH $_ROOT_PATH/conf $_ROOT_PATH/run $_ROOT_PATH/logs $_ROOT_PATH/www $_SERVICE_PATH $_SOURCE_PATH $_HOME_PATH/services”
sudo su – root -c “chmod 777 $_ROOT_PATH/run $_ROOT_PATH/logs”
cd ${_SOURCE_PATH}
touch $_INSTALL_LOG

echo “==================* install Pcre *============================”
echo “tar zxf pcre-8.30.tar.gz && cd pcre-8.30″ && tar zxf pcre-8.30.tar.gz && cd pcre-8.30
echo “./configure –prefix=${_SERVICE_PATH}/pcre-8.30″ && ./configure –prefix=${_SERVICE_PATH}/pcre-8.30 >> $_INSTALL_LOG
echo “make” && make >> $_INSTALL_LOG
echo “make install” && make install >> $_INSTALL_LOG
echo “cd ..” && cd ..
echo “Install Pcre Done” >> $_INSTALL_LOG

echo “==================* install Nginx *============================”
echo “/usr/sbin/groupadd nginx && /usr/sbin/useradd nginx -g nginx -M -s /bin/false”
sudo su – root -c “/usr/sbin/groupadd nginx && /usr/sbin/useradd nginx -g nginx -M -s /bin/false”
echo “tar zxf nginx-1.1.17.tar.gz && cd nginx-1.1.17″ && tar zxf nginx-1.1.17.tar.gz && cd nginx-1.1.17
echo “./configure –prefix=${_SERVICE_PATH}/nginx-1.1.17 –with-pcre=${_SOURCE_PATH}/pcre-8.30″
./configure –prefix=${_SERVICE_PATH}/nginx-1.1.17 –with-pcre=${_SOURCE_PATH}/pcre-8.30 >> $_INSTALL_LOG
echo “make >> $_INSTALL_LOG” && make >> $_INSTALL_LOG
echo “make install >> $_INSTALL_LOG” && make install >> $_INSTALL_LOG
echo “cd ..” && cd ..
echo “ln -s ${_SERVICE_PATH}/nginx-1.1.17 ${_HOME_PATH}/services/nginx” && ln -s ${_SERVICE_PATH}/nginx-1.1.17 ${_HOME_PATH}/services/nginx
echo “cp nginx.conf $_ROOT_PATH/conf/nginx.conf” && cp nginx.conf $_ROOT_PATH/conf/nginx.conf
echo “cp nginx.location.conf $_ROOT_PATH/conf/nginx.location.conf” && cp nginx.location.conf $_ROOT_PATH/conf/nginx.location.conf
echo “cp nginx.servers.conf $_ROOT_PATH/conf/nginx.servers.conf” && cp nginx.servers.conf $_ROOT_PATH/conf/nginx.servers.conf
sed -i \
-e “s@^user.*@user nginx nginx;@g” \
-e “s@^error_log.*@error_log $_ROOT_PATH/logs/nginx-error.log;@g” \
-e “s@^pid.*@pid $_ROOT_PATH/run/nginx.pid;@g” \
$_ROOT_PATH/conf/nginx.conf
sed -i \
-e “s@root.*@root $_ROOT_PATH/www;@g” \
-e “s@access_log.*@access_log $_ROOT_PATH/logs/nginx-access-www.log;@g” \
$_ROOT_PATH/conf/nginx.servers.conf
echo “<?php phpinfo();?>” > $_ROOT_PATH/www/index.php
echo “chown -R nginx:nginx $_ROOT_PATH/www” && sudo su – root -c “chown -R nginx:nginx $_ROOT_PATH/www”
echo “Install Nginx Done” >> $_INSTALL_LOG

echo “==================* install libxml2 *============================”
echo “tar zxf libxml2-2.7.8.tar.gz && cd libxml2-2.7.8″ && tar zxf libxml2-2.7.8.tar.gz && cd libxml2-2.7.8
echo “./configure –prefix=${_SERVICE_PATH}/libxml2-2.7.8″
./configure –prefix=${_SERVICE_PATH}/libxml2-2.7.8 >> $_INSTALL_LOG
echo “make >> $_INSTALL_LOG” && make >> $_INSTALL_LOG
echo “make install >> $_INSTALL_LOG” && make install >> $_INSTALL_LOG
echo “cd ..” && cd ..
sudo su – root -c “ln -s ${_SERVICE_PATH}/libxml2-2.7.8/bin/xml2-config /usr/bin/xml2-config”
echo “Install libxml2 Done” >> $_INSTALL_LOG

echo “==================* install curl *============================”
echo “tar zxf curl-7.24.0.tar.gz && cd curl-7.24.0″ && tar zxf curl-7.24.0.tar.gz && cd curl-7.24.0
echo “./configure –prefix=${_SERVICE_PATH}/curl-7.24.0″
./configure –prefix=${_SERVICE_PATH}/curl-7.24.0 >> $_INSTALL_LOG
echo “make >> $_INSTALL_LOG” && make >> $_INSTALL_LOG
echo “make install >> $_INSTALL_LOG” && make install >> $_INSTALL_LOG
echo “cd ..” && cd ..
echo “ln -s ${_SERVICE_PATH}/curl-7.24.0 ${_HOME_PATH}/services/curl” && ln -s ${_SERVICE_PATH}/curl-7.24.0 ${_HOME_PATH}/services/curl
echo “Install curl Done” >> $_INSTALL_LOG

echo “==================* install cmake *============================”
echo “unzip -q cmake-2.8.7.zip && cd cmake-2.8.7″ && unzip -q cmake-2.8.7.zip && cd cmake-2.8.7
echo “chmod +x $(pwd)/bootstrap && $(pwd)/bootstrap >> $_INSTALL_LOG && gmake >> $_INSTALL_LOG && gmake install >> $_INSTALL_LOG”
sudo su – root -c “chmod +x $(pwd)/bootstrap && $(pwd)/bootstrap >> $_INSTALL_LOG && gmake >> $_INSTALL_LOG && gmake install >> $_INSTALL_LOG”
echo “cd ..” && cd ..
echo “Install cmake Done” >> $_INSTALL_LOG

echo “==================* install zlib *============================”
echo “tar zxf zlib-1.2.6.tar.gz && cd zlib-1.2.6″ && tar zxf zlib-1.2.6.tar.gz && cd zlib-1.2.6
echo “./configure –prefix=${_SERVICE_PATH}/zlib-1.2.6″
./configure –prefix=${_SERVICE_PATH}/zlib-1.2.6 >> $_INSTALL_LOG
echo “make >> $_INSTALL_LOG” && make >> $_INSTALL_LOG
echo “make install >> $_INSTALL_LOG” && make install >> $_INSTALL_LOG
echo “cd ..” && cd ..
echo “Install zlib Done” >> $_INSTALL_LOG

echo “==================* install libmemcached *============================”
echo “tar zxf libmemcached-1.0.4.tar.gz && cd libmemcached-1.0.4″ && tar zxf libmemcached-1.0.4.tar.gz && cd libmemcached-1.0.4
echo “./configure –prefix=${_SERVICE_PATH}/libmemcached-1.0.4″
./configure –prefix=${_SERVICE_PATH}/libmemcached-1.0.4 >> $_INSTALL_LOG
echo “make >> $_INSTALL_LOG” && make >> $_INSTALL_LOG
echo “make install >> $_INSTALL_LOG” && make install >> $_INSTALL_LOG
echo “cd ..” && cd ..
echo “Install libmemcached Done” >> $_INSTALL_LOG

echo “==================* install libevent *============================”
echo “tar zxf libevent-2.0.17-stable.tar.gz && cd libevent-2.0.17-stable” && tar zxf libevent-2.0.17-stable.tar.gz && cd libevent-2.0.17-stable
echo “./configure –prefix=${_SERVICE_PATH}/libevent-2.0.17-stable”
./configure –prefix=${_SERVICE_PATH}/libevent-2.0.17-stable >> $_INSTALL_LOG
echo “make >> $_INSTALL_LOG” && make >> $_INSTALL_LOG
echo “make install >> $_INSTALL_LOG” && make install >> $_INSTALL_LOG
echo “cd ..” && cd ..
echo “Install libevent Done” >> $_INSTALL_LOG

echo “==================* install memcached *============================”
echo “tar zxf memcached-1.4.13.tar.gz && cd memcached-1.4.13″ && tar zxf memcached-1.4.13.tar.gz && cd memcached-1.4.13
echo “./configure –prefix=${_SERVICE_PATH}/memcached-1.4.13 –with-libevent=${_SERVICE_PATH}/libevent-2.0.17-stable”
./configure –prefix=${_SERVICE_PATH}/memcached-1.4.13 –with-libevent=${_SERVICE_PATH}/libevent-2.0.17-stable >> $_INSTALL_LOG
echo “make >> $_INSTALL_LOG” && make >> $_INSTALL_LOG
echo “make install >> $_INSTALL_LOG” && make install >> $_INSTALL_LOG
echo “cd ..” && cd ..
ln -s ${_SERVICE_PATH}/memcached-1.4.13 ${_HOME_PATH}/services/memcached
echo “Install libevent Done” >> $_INSTALL_LOG

echo “==================* install Mysql *============================”
echo “tar zxf mysql-5.5.21.tar.gz && cd mysql-5.5.21″ && tar zxf mysql-5.5.21.tar.gz && cd mysql-5.5.21
echo “/usr/sbin/groupadd mysql && /usr/sbin/useradd mysql -g mysql -M -s /bin/false”
sudo su – root -c “/usr/sbin/groupadd mysql && /usr/sbin/useradd mysql -g mysql -M -s /bin/false”
echo “mkdir -p ${_MYSQL_PATH}” && mkdir -p ${_MYSQL_PATH}
echo “cmake -DCMAKE_INSTALL_PREFIX=/usr/local/services/mysql-5.5.21 -DMYSQL_UNIX_ADDR=${_MYSQL_PATH}/mysql.sock \
-DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \
-DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=${_MYSQL_PATH} >> $_INSTALL_LOG”
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/services/mysql-5.5.21 -DMYSQL_UNIX_ADDR=${_MYSQL_PATH}/mysql.sock \
-DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \
-DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=${_MYSQL_PATH} >> $_INSTALL_LOG
echo “make >> $_INSTALL_LOG” && make >> $_INSTALL_LOG
echo “make install >> $_INSTALL_LOG” && make install >> $_INSTALL_LOG
echo “cd ..” && cd ..
ln -s ${_SERVICE_PATH}/mysql-5.5.21 ${_HOME_PATH}/services/mysql
echo “cp my.cnf ${_ROOT_PATH}/conf/my-1.cnf” && cp my.cnf ${_ROOT_PATH}/conf/my-1.cnf
sed -i \
-e “s@^socket.*@socket=${_MYSQL_PATH}/mysql.sock@g” \
-e “s@^datadir.*@datadir = ${_MYSQL_PATH}@g” \
-e “s@^pid-file.*@pid-file = ${_MYSQL_PATH}/mysql.pid@g” \
-e “s@^log-error.*@log-error = ${_MYSQL_PATH}/mysql.error@g” \
${_ROOT_PATH}/conf/my-1.cnf
echo “${_SERVICE_PATH}/mysql-5.5.21/scripts/mysql_install_db –defaults-file=${_ROOT_PATH}/conf/my-1.cnf –user=mysql –basedir=${_SERVICE_PATH}/mysql-5.5.21 && chown -R mysql:mysql $_MYSQL_PATH”
sudo su – root -c “${_SERVICE_PATH}/mysql-5.5.21/scripts/mysql_install_db –defaults-file=${_ROOT_PATH}/conf/my-1.cnf –user=mysql –basedir=${_SERVICE_PATH}/mysql-5.5.21 && chown -R mysql:mysql $_MYSQL_PATH”
echo “${_HOME_PATH}/services/mysql/bin/mysqld_safe –defaults-file=${_ROOT_PATH}/conf/my-1.cnf >/dev/null 2>&1 &”
${_HOME_PATH}/services/mysql/bin/mysqld_safe –defaults-file=${_ROOT_PATH}/conf/my-1.cnf >/dev/null 2>&1 &
echo “sleep 3″ && sleep 3
echo “${_HOME_PATH}/services/mysql/bin/mysqladmin –socket=${_MYSQL_PATH}/mysql.sock -uroot password ${_MYSQL_PASSWORD}”
${_HOME_PATH}/services/mysql/bin/mysqladmin –socket=${_MYSQL_PATH}/mysql.sock -uroot password ${_MYSQL_PASSWORD}
mysql –socket=${_MYSQL_PATH}/mysql.sock -uroot -p${_MYSQL_PASSWORD} >/dev/null 2>&1 << _EOF
DELETE FROM mysql.user WHERE user != ‘root’ OR host != ‘localhost’;
DELETE FROM mysql.db;
DROP DATABASE test;
flush privileges;
_EOF
#killall -9 mysqld mysqld_safe > /dev/null 2>&1
echo “Install mysql Done” >> $_INSTALL_LOG

echo “==================* install php *============================”
echo “tar jxf php-5.3.10.tar.bz2 && cd php-5.3.10″ && tar jxf php-5.3.10.tar.bz2 && cd php-5.3.10
echo “./configure –prefix=${_SERVICE_PATH}/php-5.3.10 –with-config-file-path=${_SERVICE_PATH}/php-5.3.10/etc –with-curl=${_SERVICE_PATH}/curl-7.24.0 \
–with-libxml-dir=${_SERVICE_PATH}/libxml2-2.7.8  –with-zlib=${_SERVICE_PATH}/zlib-1.2.6 \
–with-mysql=${_SERVICE_PATH}/mysql-5.5.21/bin/mysqld –with-mysql-sock=${_MYSQL_PATH}/mysql.sock  –with-pdo-mysql=${_SERVICE_PATH}/mysql-5.5.21 \
–enable-fpm –enable-cli –enable-mbstring –enable-json –enable-iconv –enable-libxml –enable-pdo –enable-pdo-mysql –enable-session \
–enable-posix –enable-zip”
./configure –prefix=${_SERVICE_PATH}/php-5.3.10 –with-config-file-path=${_SERVICE_PATH}/php-5.3.10/etc –with-curl=${_SERVICE_PATH}/curl-7.24.0 \
–with-libxml-dir=${_SERVICE_PATH}/libxml2-2.7.8  –with-zlib=${_SERVICE_PATH}/zlib-1.2.6 \
–with-mysql=${_SERVICE_PATH}/mysql-5.5.21/bin/mysqld –with-mysql-sock=${_MYSQL_PATH}/mysql.sock  –with-pdo-mysql=${_SERVICE_PATH}/mysql-5.5.21/bin/mysqld \
–enable-fpm –enable-cli –enable-mbstring –enable-json –enable-iconv –enable-libxml –enable-pdo –enable-pdo-mysql –enable-session \
–enable-posix –enable-zip >> $_INSTALL_LOG
echo “make >> $_INSTALL_LOG” && make >> $_INSTALL_LOG
echo “make install >> $_INSTALL_LOG” && make install >> $_INSTALL_LOG
echo “cd ..” && cd ..
ln -s ${_SERVICE_PATH}/php-5.3.10 ${_HOME_PATH}/services/php
echo “cp php.ini ${_HOME_PATH}/services/php/etc/php.ini”
cp php.ini ${_HOME_PATH}/services/php/etc/php.ini
sed -i \
-e “s@^error_log.*@error_log = $_ROOT_PATH/logs/php-error.log@g” \
-e “s@^extension_dir.*@extension_dir = ${_SERVICE_PATH}/php-5.3.10/lib/php/extensions/no-debug-non-zts-20090626/@g” \
${_HOME_PATH}/services/php/etc/php.ini
echo “cp php-fpm.conf ${_ROOT_PATH}/conf/php-fpm.conf” && cp php-fpm.conf ${_ROOT_PATH}/conf/php-fpm.conf
sed -i \
-e “s@^pid.*@pid = ${_ROOT_PATH}/run/php-fpm.pid@g” \
-e “s@^error_log.*@error_log = $_ROOT_PATH/logs/php-fpm.error@g” \
-e “s@^user.*@user = nginx@g” \
-e “s@^group.*@group = nginx@g” \
-e “s@^slowlog.*@slowlog = $_ROOT_PATH/logs/php-fpm-slow.log@g” \
${_ROOT_PATH}/conf/php-fpm.conf

echo “==================* install php redis *============================”
echo “unzip -q phpredis.zip && cd phpredis” && unzip -q phpredis.zip && cd phpredis
echo “${_HOME_PATH}/services/php/bin/phpize && ./configure –with-php-config=${_SERVICE_PATH}/php-5.3.10/bin/php-config”
${_HOME_PATH}/services/php/bin/phpize && ./configure –with-php-config=${_SERVICE_PATH}/php-5.3.10/bin/php-config >> $_INSTALL_LOG
echo “make >> $_INSTALL_LOG” && make >> $_INSTALL_LOG
echo “make install >> $_INSTALL_LOG” && make install >> $_INSTALL_LOG
echo “cd ..” && cd ..

echo “==================* install php memcached *============================”
echo “tar zxf phpmemcached-2.0.1.tgz && cd memcached-2.0.1″ && tar zxf phpmemcached-2.0.1.tgz && cd memcached-2.0.1
echo “${_HOME_PATH}/services/php/bin/phpize && ./configure –with-php-config=${_SERVICE_PATH}/php-5.3.10/bin/php-config –with-libmemcached-dir=${_SERVICE_PATH}/libmemcached-1.0.4″
${_HOME_PATH}/services/php/bin/phpize && ./configure –with-php-config=${_SERVICE_PATH}/php-5.3.10/bin/php-config –with-libmemcached-dir=${_SERVICE_PATH}/libmemcached-1.0.4 >> $_INSTALL_LOG
echo “make >> $_INSTALL_LOG” && make >> $_INSTALL_LOG
echo “make install >> $_INSTALL_LOG” && make install >> $_INSTALL_LOG
echo “cd ..” && cd ..

echo “==================* install php amf *============================”
echo “tar zxf amfext-0.9.2.tgz && cd amfext-0.9.2″ && tar zxf amfext-0.9.2.tgz && cd amfext-0.9.2
echo “${_HOME_PATH}/services/php/bin/phpize && ./configure –with-php-config=${_SERVICE_PATH}/php-5.3.10/bin/php-config”
${_HOME_PATH}/services/php/bin/phpize && ./configure –with-php-config=${_SERVICE_PATH}/php-5.3.10/bin/php-config >> $_INSTALL_LOG
echo “make >> $_INSTALL_LOG” && make >> $_INSTALL_LOG
echo “make install >> $_INSTALL_LOG” && make install >> $_INSTALL_LOG
echo “cd ..” && cd ..

echo “==================* start service *============================”
echo “${_HOME_PATH}/services/mysql/bin/mysqld_safe –defaults-file=${_ROOT_PATH}/conf/my-1.cnf >/dev/null 2>&1 &”
sudo su – root -c “${_HOME_PATH}/services/mysql/bin/mysqld_safe –defaults-file=${_ROOT_PATH}/conf/my-1.cnf >/dev/null 2>&1 &”
echo “${_HOME_PATH}/services/nginx/sbin/nginx -c ${_ROOT_PATH}/conf/nginx.conf”
sudo su – root -c “${_HOME_PATH}/services/nginx/sbin/nginx -c ${_ROOT_PATH}/conf/nginx.conf”
echo “${_HOME_PATH}/services/php/sbin/php-fpm –fpm-config ${_ROOT_PATH}/conf/php-fpm.conf”
sudo su – root -c “${_HOME_PATH}/services/php/sbin/php-fpm –fpm-config ${_ROOT_PATH}/conf/php-fpm.conf”