添加项目

This commit is contained in:
徐瑞 2019-05-21 17:41:00 +08:00
commit f7720fff01
16 changed files with 939 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
package

1
README.md Normal file
View File

@ -0,0 +1 @@
###linux的lanmp安装

120
bin/apache.sh Normal file
View File

@ -0,0 +1,120 @@
#!/bin/sh
# 路径配置
PWD=`pwd`
BIN_PATH=$PWD/bin
# 引入
source $BIN_PATH'/func.sh'
source $BIN_PATH'/extend.sh'
install_apache
# 获取配置
thread=`get_config core thread`
package=`get_config server apache_package`
apr_package=`get_config lib apr_package`
apr_util_package=`get_config lib apr_util_package`
pcre_package=`get_config lib pcre_package`
# 安装文件夹
file_name=`get_path_name $package`
path_dir='/usr/local/'`get_file_dir $file_name`
if [ -d $path_dir ];then
exit 0
fi
# 安装apr
if [ ! -d '/usr/local/apr' ];then
# 下载地址
apr_package=`exists_download $apr_package`
# 解压文件
decompression $apr_package
apr_dir=`get_file_dir $apr_package`
cd $apr_dir
./configure --prefix=/usr/local/apr
make -j$thread && make install
if [ $? != 0 ];then
echo 'apr安装失败'
exit 1
fi
fi
# 安装apr-util
if [ ! -d '/usr/local/apr-util' ];then
# 下载地址
apr_util_package=`exists_download $apr_util_package`
# 解压文件
decompression $apr_util_package
apr_util_dir=`get_file_dir $apr_util_package`
cd $apr_util_dir
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make -j$thread && make install
if [ $? != 0 ];then
echo 'apr-util安装失败'
exit 1
fi
fi
# 安装pcre
if [ ! -d '/usr/local/pcre' ];then
# 下载地址
pcre_package=`exists_download $pcre_package`
# 解压文件
decompression $pcre_package
pcre_dir=`get_file_dir $pcre_package`
cd $pcre_dir
./configure --prefix=/usr/local/pcre
make -j$thread && make install
if [ $? != 0 ];then
echo 'pcre安装失败'
exit 1
fi
fi
# 安装apache
# 下载地址
package=`exists_download $package`
# 解压文件
decompression $package
file_dir=`get_file_dir $package`
cd $file_dir
./configure --prefix=$path_dir --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre --enable-rewrite --enable-modes-shared=all
make -j$thread && make install
error=$?
if [ $error == 0 ];then
# 修改配置文件
update_file $file_dir'/build/rpm/httpd.init' 'httpd=${HTTPD-/usr/sbin/httpd}' 'httpd=${HTTPD-'$path_dir'/bin/httpd}'
update_file $file_dir'/build/rpm/httpd.init' 'pidfile=${PIDFILE-/var/run/${prog}.pid}' 'pidfile=${PIDFILE-'$path_dir'/logs/${prog}.pid}'
update_file $file_dir'/build/rpm/httpd.init' 'CONFFILE=/etc/httpd/conf/httpd.conf' '\tCONFFILE='$path_dir'/conf/httpd.conf'
\cp $file_dir'/build/rpm/httpd.init' '/etc/rc.d/init.d/httpd'
chmod 755 '/etc/rc.d/init.d/httpd'
update_file $path_dir'/conf/httpd.conf' '#ServerName www.example.com:80' 'ServerName localhost:80'
update_file $path_dir'/conf/httpd.conf' '#Include conf/extra/httpd-vhosts.conf' 'Include conf/extra/httpd-vhosts.conf'
update_file $path_dir'/conf/httpd.conf' '#Include conf/extra/httpd-userdir.conf' 'Include conf/extra/httpd-userdir.conf'
# 修改vhost配置
if [ ! -f $path_dir'/conf/extra/httpd-vhosts.conf.bak' ];then
mv $path_dir'/conf/extra/httpd-vhosts.conf' $path_dir'/conf/extra/httpd-vhosts.conf.bak'
fi
echo -e '<VirtualHost *:80>\n DocumentRoot "/var/www/html"\n</VirtualHost>' > $path_dir'/conf/extra/httpd-vhosts.conf'
if [ ! -d '/var/www/html' ];then
mkdir -p '/var/www/html'
fi
echo -e 'Is Work!' > '/var/www/html/index.html'
# 增加文件夹访问权限
if [ ! -f $path_dir'/conf/extra/httpd-userdir.conf.bak' ];then
mv $path_dir'/conf/extra/httpd-userdir.conf' $path_dir'/conf/extra/httpd-userdir.conf.bak'
fi
echo -e '<Directory "/var/www/html">\n AllowOverride FileInfo AuthConfig Limit Indexes\n Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec\n Require method GET POST OPTIONS\n</Directory>' > $path_dir'/conf/extra/httpd-userdir.conf'
append_file '/etc/profile' 'export PATH='$path_dir'/bin:$PATH'
source '/etc/profile'
else
exit $error
fi

94
bin/extend.sh Normal file
View File

@ -0,0 +1,94 @@
#!/bin/sh
function install_gcc() {
if [ `rpm -qa|grep gcc|wc -l` == 0 ];then
yum -y install gcc
fi
if [ `rpm -qa|grep gcc-c++|wc -l` == 0 ];then
yum -y install gcc-c++
fi
}
function install_apache() {
if [ `rpm -qa|grep expat-devel|wc -l` == 0 ];then
yum -y install expat-devel
fi
}
function install_nginx() {
if [ `rpm -qa|grep zlib-devel|wc -l` == 0 ];then
yum -y install zlib-devel
fi
if [ `rpm -qa|grep pcre-devel|wc -l` == 0 ];then
yum -y install pcre-devel
fi
if [ `rpm -qa|grep openssl-devel|wc -l` == 0 ];then
yum -y install openssl-devel
fi
}
function install_mysql() {
if [ `rpm -qa|grep cmake|wc -l` == 0 ];then
yum -y install cmake
fi
if [ `rpm -qa|grep ncurses-devel|wc -l` == 0 ];then
yum -y install ncurses-devel
fi
}
function install_php() {
if [ `rpm -qa|grep libxml2-devel|wc -l` == 0 ];then
yum -y install libxml2-devel
fi
if [ `rpm -qa|grep libjpeg-turbo-devel|wc -l` == 0 ];then
yum -y install libjpeg-turbo-devel
fi
if [ `rpm -qa|grep libpng-devel|wc -l` == 0 ];then
yum -y install libpng-devel
fi
if [ `rpm -qa|grep freetype-devel|wc -l` == 0 ];then
yum -y install freetype-devel
fi
}
# 扩展需要的函数
function install_extension() {
if [ `rpm -qa|grep autoconf|wc -l` == 0 ];then
yum -y install autoconf
fi
if [ 'a'$1 == 'a' ];then
echo $1'扩展不能传空'
exit 1
fi
case $1 in
pdo_pgsql|pgsql)
if [ `rpm -qa|grep postgresql-devel|wc -l` == 0 ];then
yum -y install postgresql-devel
fi
;;
mysqli)
if [ `rpm -qa|grep mysql-devel|wc -l` == 0 ];then
yum -y install mysql-devel
fi
;;
snmp)
if [ `rpm -qa|grep net-snmp-devel|wc -l` == 0 ];then
yum -y install net-snmp-devel
fi
;;
amqp)
if [ `rpm -qa|grep librabbitmq-devel|wc -l` == 0 ];then
yum -y install librabbitmq-devel
fi
;;
*)
grep_file=$1'-devel'
if [ `echo $1|grep pdo_|wc -l` != 0 ];then
grep_file=`echo $1|awk -F 'pdo_' '{print $2}'`'-devel'
fi
if [ `rpm -qa|grep "$grep_file"|wc -l` == 0 ];then
yum -y install $grep_file
fi
;;
esac
}

175
bin/func.sh Normal file
View File

@ -0,0 +1,175 @@
#!/bin/sh
# 路径配置
PWD=`pwd`
CONFIG_PATH=$PWD'/config.ini'
# 获取配置文件
# example: get_config server path
function get_config() {
# 判断是否传入空
if [ 'a'$1 == 'a' ] || [ 'a'$2 == 'a' ];then
echo '没有传入配置项'
exit 1
fi
# 获取类型
cfg_type=`cat $CONFIG_PATH|grep '\['$1'\]'`
cfg_start=`grep '\['$1'\]' $CONFIG_PATH -n|awk -F ':' '{print $1}'`
if [ 'a'$cfg_type == 'a' ];then
echo '配置['$1']不存在'
exit 1
fi
cfg_data=''
while read line;do
# 替换特殊字符
line=${line//\[/\\\[}
line=${line//\]/\\\]}
i=`grep $line $CONFIG_PATH -n|awk -F ':' '{print $1}'`
if [ $i -gt $cfg_start ];then
if [ 'a'`echo $line|grep '\['|grep '\]'` != 'a' ];then
break
fi
cfg_val=`echo $line|grep $2'='|awk -F '=' '{print $2}'`
if [ 'a'$cfg_val != 'a' ];then
cfg_data=$cfg_val
fi
fi
done<$CONFIG_PATH
if [ 'a'$cfg_data == 'a' ];then
echo '配置['$1']里面项'$2'不存在'
exit 1
fi
echo $cfg_data
}
# 获取路径文件名
# example: get_path_name /root/package/pcre-8.43.tar.bz2
# result: pcre-8.43.tar.bz2
function get_path_name() {
fun_file_path=$1
echo ${fun_file_path##*/}
}
# 获取路径文件夹
# example: get_path_dir /root/package/pcre-8.43.tar.bz2
# result: /root/package
function get_path_dir() {
fun_file_path=$1
echo ${fun_file_path%/*}
}
# 获取路径文件后缀
# example: get_file_suffix /root/package/pcre-8.43.tar.bz2
# result: tar.bz2
function get_file_suffix() {
# 获取后缀
fun_suffix=`echo $1|awk -F '.' '{print $NF}'`
if [[ $1 =~ '.tar.' ]];then
fun_suffix=`echo $1|awk -F '.' '{print $(NF-1)}'`'.'`echo $1|awk -F '.' '{print $NF}'`
fi
echo $fun_suffix
}
# 获取路径文件的文件夹
# example: get_file_dir /root/package/pcre-8.43.tar.bz2
# result: /root/package/pcre-8.43
function get_file_dir() {
# 获取后缀
fun_suffix=`get_file_suffix $1`
fun_file_dir=`echo $1|awk -F $fun_suffix '{print $1}'`
echo ${fun_file_dir%*.}
}
# 解压文件
# example: get_file_dir /root/package/pcre-8.43.tar.bz2
function decompression() {
# 判断是否传入空
if [ 'a'$1 == 'a' ];then
echo '没有传入压缩包地址'
exit 1
fi
# 判断文件是否存在
if [ ! -f $1 ];then
echo $1'文件不存在'
exit 1
fi
# 删除原解压
zip_file_dir=`get_file_dir $1`
rm -rf zip_file_dir
zip_suffix=`get_file_suffix $1`
zip_path_name=`get_path_name $1`
zip_path_dir=`get_path_dir $1`
cd $zip_path_dir
if [ $zip_suffix == 'tar.bz2' ] || [ $zip_suffix == 'tar.gz' ] || [ $zip_suffix == 'tgz' ];then
tar xvf $zip_path_name
elif [ $zip_suffix == 'zip' ];then
unzip $zip_path_name
else
echo $zip_suffix'格式的压缩文件无法解压'
exit 1
fi
}
# 存在http且下载
# example: exists_download http://www.baidu.com/a.tar.bz2
# result: /root/abc/package/a.tar.bz2
function exists_download() {
down_path_name=`get_path_name $1`
if [ ! -f $PWD'/package/'$down_path_name ];then
if [ ! -d $PWD'/package' ];then
mkdir -p $PWD'/package'
fi
wget -P $PWD'/package' $1
if [ $? != 0 ];then
echo $1'下载失败'
exit 1
fi
fi
echo $PWD'/package/'$down_path_name
}
# 修改文件
# example: update_file /root/a.txt user_name user_upload
function update_file() {
update_file_url=$1
update_find_name=$2
update_name=$3
if [ ! -f $update_file_url ];then
echo $update_file_url'文件不存在'
exit 1
fi
# 文件备份
if [ ! -f $update_file_url'.bak' ];then
cp $update_file_url $update_file_url'.bak'
fi
# 临时文件
mv $update_file_url $update_file_url'.tmp'
SAVEIFS=$IFS
IFS=$(echo -en "\n")
while read -r line
do
if [ `echo $line|grep "$update_find_name"|wc -l` == 0 ];then
echo "$line" >> $update_file_url
else
echo -e "$update_name" >> $update_file_url
fi
done < $update_file_url'.tmp'
IFS=$SAVEIFS
rm -rf $update_file_url'.tmp'
}
# 追加文件
# example: append_file /root/a.txt user_name
function append_file() {
append_file_url=$1
append_name=$2
if [ ! -f $append_file_url ];then
echo $append_file_url'文件不存在'
exit 1
fi
if [ `cat $append_file_url|grep "$append_name"|wc -l` == 0 ];then
echo "$append_name" >> $append_file_url
fi
}

104
bin/install_extension.sh Normal file
View File

@ -0,0 +1,104 @@
#!/bin/sh
# 路径配置
PWD=`pwd`
BIN_PATH=$PWD/bin
# 引入
source $BIN_PATH'/func.sh'
source $BIN_PATH'/extend.sh'
# 获取配置
thread=`get_config core thread`
php_package=`get_config php package`
php_extension=`get_config php php_extension`
# 安装扩展
php_file_name=`get_path_name $php_package`
php_file_dir=`get_file_dir $php_file_name`
php='/usr/local/'$php_file_dir'/bin/php'
phpize='/usr/local/'$php_file_dir'/bin/phpize'
php_config='/usr/local/'$php_file_dir'/bin/php-config'
php_ini='/usr/local/'$php_file_dir'/etc/php.ini'
pecl='/usr/local/'$php_file_dir'/bin/pecl'
if [ 'a'$1 == 'a' ];then
echo '传入扩展为空'
exit 1
fi
extension=$1
case $extension in
mcrypt)
libmcrypt_package=`get_config lib libmcrypt_package`
libmcrypt_package=`exists_download $libmcrypt_package`
# 安装libmcrypt
if [ ! -d '/usr/local/libmcrypt' ];then
decompression $libmcrypt_package
libmcrypt_dir=`get_file_dir $libmcrypt_package`
cd $libmcrypt_dir
./configure --prefix=/usr/local/libmcrypt
make -j$thread && make install
if [ $? != 0 ];then
echo 'libmcrypt安装失败'
exit 1
fi
fi
;;
esac
if [ `$php -m|grep $extension|wc -l` == 0 ];then
ext_dir=$PWD'/package/'$php_file_dir'/ext'
extension_dir=$ext_dir'/'$extension
if [ ! -d $extension_dir ];then
$pecl install $extension
pecl_error=$?
if [ $pecl_error != 0 ] && [ $pecl_error != 1 ];then
echo $extension'扩展不存在'
exit 1
fi
else
# so文件存在则删除重新编译
dir_extension=`find '/usr/local/'$php_file_dir'/lib/php' -name $extension'.so'`
if [ 'a'$dir_extension != 'a' ];then
rm -rf $dir_extension
fi
install_extension $extension
cd $extension_dir
if [ -f $extension_dir'/config0.m4' ] && [ ! -f $extension_dir'/config.m4' ];then
cp $extension_dir'/config0.m4' $extension_dir'/config.m4'
fi
$phpize
case $extension in
pdo_mysql)
./configure --with-php-config=$php_config --with-pdo-mysql=/usr
;;
mysqli)
if [ ! -d $extension_dir'/ext/mysqlnd' ];then
mkdir -p $extension_dir'/ext/mysqlnd'
fi
if [ ! -f $extension_dir'/ext/mysqlnd/mysql_float_to_double.h' ];then
cp -R $ext_dir'/mysqlnd/mysql_float_to_double.h' $extension_dir'/ext/mysqlnd/mysql_float_to_double.h'
fi
./configure --with-php-config=$php_config --with-mysqli=/usr/bin/mysql_config
;;
mcrypt)
./configure --with-php-config=$php_config --with-mcrypt=/usr/local/libmcrypt
;;
*)
./configure --with-php-config=$php_config
;;
esac
make -j$thread && make install
if [ $? != 0 ];then
exit 1
fi
fi
# 配置文件是否配置
file_extension_num=`cat $php_ini|grep $extension'.so'|wc -l`
dir_extension_num=`find '/usr/local/'$php_file_dir'/lib/php' -name $extension'.so'|wc -l`
if [ $file_extension_num == 0 ] && [ $dir_extension_num != 0 ];then
echo 'extension='$extension'.so' >> $php_ini
fi
fi

66
bin/mysql.sh Normal file
View File

@ -0,0 +1,66 @@
#!/bin/sh
# 路径配置
PWD=`pwd`
BIN_PATH=$PWD/bin
# 引入
source $BIN_PATH'/func.sh'
source $BIN_PATH'/extend.sh'
install_mysql
# 获取配置
thread=`get_config core thread`
package=`get_config db package`
# 安装文件夹
file_name=`get_path_name $package`
path_dir='/usr/local/'`get_file_dir $file_name`
if [ -d $path_dir ];then
exit 0
fi
# 安装mysql
# 下载地址
package=`exists_download $package`
# 解压文件
decompression $package
file_dir=`get_file_dir $package`
cd $file_dir
cmake -DCMAKE_INSTALL_PREFIX=$path_dir -DMYSQL_DATADIR=$path_dir'/data' -DSYSCONFIGDIR=$path_dir'/etc' -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_USER=mysql
make -j$thread && make install
error=$?
if [ $error == 0 ];then
cp $path_dir/support-files/my-huge.cnf /etc/my.cnf
# 去掉innodb注释
update_file '/etc/my.cnf' '#innodb_data_home_dir' 'innodb_data_home_dir = '$path_dir'/data'
update_file '/etc/my.cnf' '#innodb_data_file_path' 'innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend'
update_file '/etc/my.cnf' '#innodb_log_group_home_dir' 'innodb_log_group_home_dir = '$path_dir'/data'
update_file '/etc/my.cnf' '#innodb_buffer_pool_size' 'innodb_buffer_pool_size = 384M'
update_file '/etc/my.cnf' '#innodb_additional_mem_pool_size' 'innodb_additional_mem_pool_size = 20M'
update_file '/etc/my.cnf' '#innodb_log_file_size' 'innodb_log_file_size = 100M'
update_file '/etc/my.cnf' '#innodb_log_buffer_size' 'innodb_log_buffer_size = 8M'
update_file '/etc/my.cnf' '#innodb_flush_log_at_trx_commit' 'innodb_flush_log_at_trx_commit = 1'
update_file '/etc/my.cnf' '#innodb_lock_wait_timeout' 'innodb_lock_wait_timeout = 50'
if [ ! -f '/etc/init.d/mysqld' ];then
cp $path_dir'/support-files/mysql.server' '/etc/init.d/mysqld'
fi
if [ `cat /etc/group|grep 'mysql:'|wc -l` == 0 ];then
groupadd mysql
fi
if [ `cat /etc/passwd|grep 'mysql:'|wc -l` == 0 ];then
useradd -s /sbin/nologin -g mysql -M mysql
fi
chown -R mysql:mysql $path_dir
$path_dir/scripts/mysql_install_db --user=mysql --basedir=$path_dir --datadir=$path_dir'/data' >> $path_dir'/install.log' 2>&1 &
append_file '/etc/profile' 'export PATH='$path_dir'/bin:$PATH'
source '/etc/profile'
else
exit $error
fi

68
bin/nginx.sh Normal file
View File

@ -0,0 +1,68 @@
#!/bin/sh
# 路径配置
PWD=`pwd`
BIN_PATH=$PWD/bin
FILES_PATH=$PWD/files
# 引入
source $BIN_PATH'/func.sh'
source $BIN_PATH'/extend.sh'
install_nginx
# 获取配置
thread=`get_config core thread`
package=`get_config server nginx_package`
# 安装文件夹
file_name=`get_path_name $package`
path_dir='/usr/local/'`get_file_dir $file_name`
if [ -d $path_dir ];then
exit 0
fi
# 安装nginx
# 下载地址
package=`exists_download $package`
# 解压文件
decompression $package
file_dir=`get_file_dir $package`
cd $file_dir
./configure --prefix=$path_dir --with-openssl=/usr/include/openssl --with-pcre --with-http_stub_status_module
make -j$thread && make install
error=$?
if [ $error == 0 ];then
# 配置文件
if [ ! -f $path_dir'/conf/nginx.conf.bak' ];then
cp $path_dir'/conf/nginx.conf' $path_dir'/conf/nginx.conf.bak'
fi
if [ ! -d $path_dir'/conf/vhost' ];then
mkdir -p $path_dir'/conf/vhost'
fi
\cp $FILES_PATH'/nginx.conf' $path_dir'/conf/nginx.conf'
\cp $FILES_PATH'/enable-php.conf' $path_dir'/conf/enable-php.conf'
\cp $FILES_PATH'/rewrite.conf' $path_dir'/conf/rewrite.conf'
\cp $FILES_PATH'/default.conf' $path_dir'/conf/vhost/default.conf'
update_file $path_dir'/conf/nginx.conf' 'pid /usr/local/nginx/logs/nginx.pid;' 'pid '$path_dir'/logs/nginx.pid;'
if [ ! -d '/var/www/html' ];then
mkdir -p '/var/www/html'
fi
if [ ! -d '/var/www/logs' ];then
mkdir -p '/var/www/logs'
fi
echo -e 'Is Work!' > '/var/www/html/index.html'
if [ `cat /etc/group|grep 'www:'|wc -l` == 0 ];then
groupadd www
fi
if [ `cat /etc/passwd|grep 'www:'|wc -l` == 0 ];then
useradd -s /sbin/nologin -g www -M www
fi
else
exit $error
fi

105
bin/php.sh Normal file
View File

@ -0,0 +1,105 @@
#!/bin/sh
# 路径配置
PWD=`pwd`
BIN_PATH=$PWD/bin
# 引入
source $BIN_PATH'/func.sh'
source $BIN_PATH'/extend.sh'
install_php
# 获取配置
thread=`get_config core thread`
package=`get_config php package`
libmcrypt_package=`get_config lib libmcrypt_package`
server_type=`get_config server type`
apache_package=`get_config server apache_package`
nginx_package=`get_config server nginx_package`
# 安装文件夹
file_name=`get_path_name $package`
path_dir='/usr/local/'`get_file_dir $file_name`
if [ -d $path_dir ];then
exit 0
fi
# 下载地址
package=`exists_download $package`
libmcrypt_package=`exists_download $libmcrypt_package`
# 安装libmcrypt
if [ ! -d '/usr/local/libmcrypt' ];then
decompression $libmcrypt_package
libmcrypt_dir=`get_file_dir $libmcrypt_package`
cd $libmcrypt_dir
./configure --prefix=/usr/local/libmcrypt
make -j$thread && make install
if [ $? != 0 ];then
echo 'libmcrypt安装失败'
exit 1
fi
fi
# 安装php
decompression $package
file_dir=`get_file_dir $package`
cd $file_dir
case $server_type in
apache)
apache_file_name=`get_path_name $apache_package`
apache_file_dir=`get_file_dir $apache_file_name`
apxs_path='/usr/local/'$apache_file_dir'/bin/apxs'
./configure --prefix=$path_dir --with-apxs2=$apxs_path --with-config-file-path=$path_dir/etc --enable-soap --with-jpeg-dir --with-freetype-dir --with-png-dir
make -j$thread && make install
error=$?
if [ $error == 0 ];then
cp $file_dir'/php.ini-development' $path_dir'/etc/php.ini'
# 为apache添加php支持
update_file '/usr/local/'$apache_file_dir'/conf/httpd.conf' 'AddType application/x-gzip .gz .tgz' ' AddType application/x-gzip .gz .tgz\n AddType application/x-httpd-php .php .phtml\n AddType application/x-httpd-php-source .phps'
update_file '/usr/local/'$apache_file_dir'/conf/httpd.conf' 'DirectoryIndex index.html' ' DirectoryIndex index.html index.php'
update_file '/usr/local/'$apache_file_dir'/conf/httpd.conf' 'AllowOverride None' ' AllowOverride All'
update_file '/usr/local/'$apache_file_dir'/conf/httpd.conf' 'AllowOverride none' ' AllowOverride All'
if [ ! -d '/var/www/html' ];then
mkdir -p '/var/www/html'
fi
rm -rf '/var/www/html/index.html'
echo -e '<?php\n phpinfo();' > '/var/www/html/index.php'
else
exit $error
fi
;;
nginx)
nginx_file_name=`get_path_name $nginx_package`
nginx_file_dir=`get_file_dir $nginx_file_name`
./configure --prefix=$path_dir --with-config-file-path=$path_dir/etc --enable-fastcgi --enable-fpm --with-fpm-user=www --with-fpm-group=www --enable-soap --enable-opcache=no --with-jpeg-dir --with-freetype-dir --with-png-dir
make -j$thread && make install
error=$?
if [ $error == 0 ];then
cp $path_dir'/etc/php-fpm.conf.default' $path_dir'/etc/php-fpm.conf'
cp $path_dir'/etc/php-fpm.d/www.conf.default' $path_dir'/etc/php-fpm.d/www.conf'
cp $file_dir'/php.ini-development' $path_dir'/etc/php.ini'
cp $file_dir'/sapi/fpm/init.d.php-fpm' '/etc/init.d/php-fpm'
chmod +x /etc/init.d/php-fpm
if [ `cat /etc/group|grep 'www:'|wc -l` == 0 ];then
groupadd www
fi
if [ `cat /etc/passwd|grep 'www:'|wc -l` == 0 ];then
useradd -s /sbin/nologin -g www -M www
fi
# 为nginx添加php支持
update_file '/usr/local/'$nginx_file_dir'/conf/vhost/default.conf' 'index index.html index.htm;' ' index index.html index.htm index.php;'
update_file '/usr/local/'$nginx_file_dir'/conf/vhost/default.conf' '# include enable-php.conf;' ' include enable-php.conf;'
update_file '/usr/local/'$nginx_file_dir'/conf/vhost/default.conf' '# include rewrite.conf;' ' include rewrite.conf;'
rm -rf '/var/www/html/index.html'
echo -e '<?php\n phpinfo();' > '/var/www/html/index.php'
else
exit $error
fi
;;
esac

22
bin/php_extension.sh Normal file
View File

@ -0,0 +1,22 @@
#!/bin/sh
# 路径配置
PWD=`pwd`
BIN_PATH=$PWD/bin
# 引入
source $BIN_PATH'/func.sh'
source $BIN_PATH'/extend.sh'
# 获取配置
php_extension=`get_config php php_extension`
# 安装扩展
extension_arr=(${php_extension//,/ })
for extension in ${extension_arr[@]};do
sh $BIN_PATH'/install_extension.sh' $extension
if [ $? != 0 ];then
echo $extension'的php扩展安装失败'
exit 1
fi
done

17
config.ini Normal file
View File

@ -0,0 +1,17 @@
[server]
type=nginx
nginx_package=http://nginx.org/download/nginx-1.15.12.tar.gz
apache_package=http://www.apache.org/dist/httpd/httpd-2.4.39.tar.bz2
[db]
type=mysql
package=http://mirrors.163.com/mysql/Downloads/MySQL-5.5/mysql-5.5.61.tar.gz
[php]
package=https://www.php.net/distributions/php-7.1.29.tar.bz2
php_extension=curl,gd,pdo_mysql,pgsql,pdo_pgsql,session,sockets,openssl,mysqli,mbstring,zip,zlib,xsl,xmlwriter,mcrypt,soap,snmp,shmop
[lib]
apr_package=http://www.apache.org/dist/apr/apr-1.7.0.tar.bz2
apr_util_package=http://www.apache.org/dist/apr/apr-util-1.6.1.tar.bz2
pcre_package=http://ftp.pcre.org/pub/pcre/pcre-8.43.tar.bz2
libmcrypt_package=https://sourceforge.mirrorservice.org/m/mc/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
[core]
thread=4

41
files/default.conf Normal file
View File

@ -0,0 +1,41 @@
server
{
listen 80;
#listen 443 ssl;
#listen [::]:80;
server_name 0.0.0.0;
index index.html index.htm;
root /var/www/html;
# ssl on;
# ssl_certificate /usr/local/nginx/default/server.pem;
# ssl_certificate_key /usr/local/nginx/default/server.key;
#error_page 404 /404.html;
# Deny access to PHP files in specific directory
#location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }
# include enable-php.conf;
# include rewrite.conf;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /.well-known {
allow all;
}
location ~ /\.
{
deny all;
}
access_log /var/www/logs/default.log;
}

8
files/enable-php.conf Normal file
View File

@ -0,0 +1,8 @@
location ~ [^/]\.php(/|$)
{
try_files $uri =404;
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}

51
files/nginx.conf Normal file
View File

@ -0,0 +1,51 @@
user www www;
worker_processes auto;
error_log /var/www/logs/nginx_error.log crit;
pid /usr/local/nginx/logs/nginx.pid;
#google_perftools_profiles /tmp/tcmalloc;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;
events
{
use epoll;
worker_connections 51200;
multi_accept on;
}
http
{
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 60;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 256k;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_disable "MSIE [1-6]\.";
server_tokens off;
access_log off;
include vhost/*.conf;
}

5
files/rewrite.conf Normal file
View File

@ -0,0 +1,5 @@
location / {
if (!-e $request_filename){
rewrite ^/(.*)$ /index.php?s=/$1 last;
}
}

61
install.sh Normal file
View File

@ -0,0 +1,61 @@
#!/bin/sh
# 路径配置
PWD=`pwd`
BIN_PATH=$PWD/bin
# 引入
source $BIN_PATH'/func.sh'
source $BIN_PATH'/extend.sh'
install_gcc
# 获取配置
server_type=`get_config server type`
db_type=`get_config db type`
# 安装server服务器
if [ ! -f $BIN_PATH'/'$server_type'.sh' ];then
echo $BIN_PATH'/'$server_type'.sh不存在'
exit 1
fi
sh $BIN_PATH'/'$server_type'.sh'
if [ $? != 0 ];then
echo $server_type'安装失败'
exit 1
fi
# 安装php
sh $BIN_PATH'/php.sh'
if [ $? != 0 ];then
echo 'php安装失败'
exit 1
fi
# 安装php扩展
sh $BIN_PATH'/php_extension.sh'
if [ $? != 0 ];then
echo 'php_extension安装失败'
exit 1
fi
# 安装db服务器
if [ ! -f $BIN_PATH'/'$db_type'.sh' ];then
echo $BIN_PATH'/'$db_type'.sh不存在'
exit 1
fi
sh $BIN_PATH'/'$db_type'.sh'
if [ $? != 0 ];then
echo $db_type'安装失败'
exit 1
fi