#!/bin/bash
#auto install LANMP
#by author ale
#2019-4-30 20:39:04
#Httpd define path variable
H_FILES=httpd-2.4.38.tar.gz
H_FILES_DIR=httpd-2.4.38
H_URL=http://mirrors.cnnic.cn/apache/httpd/
H_PREFIX=/usr/local/apache
#Mysql define path variable
M_FILES=mysql-5.5.20.tar.gz
M_FILES_DIR=mysql-5.5.20
M_PREFIX=/usr/local/mysql
M_YUM="cmake ncurses-devel ncurses pcre pcre-devel"
#Php define path variable
P_FILES=php-5.6.10.tar.gz
P_FILES_DIR=php-5.6.10
P_URL=http://ftp.ntu.edu.tw/php/distributions/
P_PREFIX=/usr/local/php
P_YUM="gd curl curl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel"
#Nginx define path variable
N_FILES=nginx-1.12.2.tar.gz
N_FILES_DIR=nginx-1.12.2
N_URL=http://nginx.org/download/
N_PREFIX=/usr/local/nginx
N_YUM="openssl openssl-devel"
print_menu(){
echo -e "\033[32mPlease Select Install Menu follow:\033[0m"
echo -e "\033[32m1)編譯安裝Apache服務\033[0m"
echo -e "\033[32m2)編譯安裝NGINX服務\033[0m"
echo -e "\033[32m3)編譯安裝MYSQL服務\033[0m"
echo -e "\033[32m4)編譯安裝PHP服務\033[0m"
echo -e "\033[32m5)配置index.php並啓動LAMP服務\033[0m"
echo -e "\033[32m6)整合LNMP\033[0m"
exit
}
apache_install(){
#Install httpd web server
if [[ "$1" -eq "1" ]];then
wget -c $H_URL/$H_FILES;tar -xzf $H_FILES;cd $H_FILES_DIR;./configure --prefix=$H_PREFIX --enable-so --enable-cgi --enable-rewrite --enable-module=most --enable-mpms-shared=all
if [ $? -eq 0 ];then
make &&make install
cp $H_PREFIX/bin/apachectl /etc/init.d/httpd
chmod o+x /etc/init.d/httpd
fi
fi
}
nginx_install(){
#Install nginx web server
if [[ "$1" -eq "2" ]];then
yum install -y $N_YUM
wget -c $N_URL/$N_FILES;tar -xzf $N_FILES;cd $N_FILES_DIR;useradd www;./configure --prefix=$N_PREFIX --user=www --group=w
ww --with-http_stub_status_module --with-http_ssl_module
make && make install
fi
}
mysql_install(){
#Install mysql server
if [[ "$1" == "3" ]];then
yum install -y $M_YUM
tar -xf $M_FILES;cd $M_FILES_DIR;cmake . -DCMAKE_INSTALL_PREFIX=$M_PREFIX \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DMYSQL_DATADIR=/data/mysql \
-DSYSCONFDIR=/etc \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DWITH_XTRADB_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EXTRA_CHARSETS=1 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_BIG_TABLES=1 \
-DWITH_DEBUG=0
make -j4 && make install -j4
cp support-files/my-small.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
useradd mysql;$M_PREFIX/scripts/mysql_install_db --basedir=$M_PREFIX --datadir=/data/mysql --user=mysql
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
fi
}
php_install(){
#Install php server
if [[ "$1" -eq "4" ]];then
yum -y install $P_YUM
wget -c $P_URL/$P_FILES;tar -xzf $P_FILES;cd $P_FILES_DIR;./configure --prefix=$P_PREFIX --enable-fpm --with-pdo-mysql --enable-debug --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --enable-mbstring --with-curl --with-mysql=$M_PREFIX --with-config-file-path=$P_PREFIX/etc --with-apxs2=$H_PREFIX/bin/apxs
if [ $? -eq 0 ];then
make -j4 && make install -j4
cp php.ini-development $P_PREFIX/etc/php.ini
cp $P_PREFIX/etc/php-fpm.conf.default $P_PREFIX/etc/php-fpm.conf
$M_PREFIX/sbin/php-fpm
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod o+x /etc/init.d/php-fpm
echo -e "\033[32mThe Php Server Install Success\033[0m"
else
echo -e "\033[32mThe Php Server Install Failed,Please check..\033[0m"
fi
fi
}
lamp_config(){
if [[ "$1" = "5" ]];then
sed -i '/DirectoryIndex/s/index.html/index.php index.html/g' $H_PREFIX/conf/httpd.conf
$H_PREFIX/bin/apachectl restart
echo "AddType application/x-httpd-php .php" >>$H_PREFIX/conf/httpd.conf
IP=`ifconfig ens33|grep "broadcast"|awk '{print $2}'|cut -d: -f2`
echo "You can access http://$IP/"
cat >$H_PREFIX/htdocs/index.php <<EOF
<?php
phpinfo();
?>
EOF
fi
}
lnmp_config(){
if [[ "$1" = "6" ]];then
\cp nginx.conf.swp $N_PREFIX/conf/nginx.conf
cat >$N_PREFIX/html/index.php <<EOF
<?php
phpinfo();
?>
EOF
$N_PREFIX/sbin/nginx
/etc/init.d/php-fpm restart
/etc/init.d/mysqld restart
systemctl stop firewalld
setenforce 0
fi
}
case $1 in
1)
apache_install $1
;;
2)
nginx_install $1
;;
3)
mysql_install $1
;;
4)
php_install $1
;;
5)
lamp_config $1
;;
6)
lnmp_config $1
;;
*)
print_menu
;;
esac
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}