LAMP环境自动化安装脚本

2021-07-12 11:26:04 浏览数 (1)

一、脚本的环境介绍

此脚本运行在RHEL(Centos) 6.4版本及以上

运行此脚本需注意:

1、主机需要能够上网

2、需了解软件之间的相互依赖性。

二、脚本的介绍

脚本是由函数组成,每一个函数实现一个功能,采用select菜单显示 case

三、脚本的功能介绍

1、支持某台机器单独安装某一个软件,如Apache、MYSQL、PHP

2、支持某台机器一键安装LAMP环境

3、如果想一个一个的安装LAMP架构,请注意安装顺序:Apache–>MYSQL–>PHP

4、会自行的把服务开启,并加入到开机自动启动的服务列表中

LAMP自动化安装脚本代码

#脚本内容如下

#!/bin/bash

#Date:2018-5-20 14:08:55

#Author Blog:

# https://www.yangxingzhen.com

#Author WeChat:

# 微信公众号:小柒博客

#Author mirrors site:

# https://mirrors.yangxingzhen.com

#About the Autho

# BY:YangXingZhen

# Mail:xingzhen.yang@yangxingzhen.com

#Auto Install LAMP Environment

source /etc/rc.d/init.d/functions

#Define APR path variables

APR_URL=https://mirrors.yangxingzhen.com/ap

APR_FILES=apr-1.6.3.tar.gz

APR_FILES_DIR=apr-1.6.3

APR_PREFIX=/usr/local/ap

#Define APR-util path variables

APR_UTIL_URL=https://mirrors.yangxingzhen.com/apr-util

APR_UTIL_FILES=apr-util-1.6.1.tar.gz

APR_UTIL_FILES_DIR=apr-util-1.6.1

APR_UTIL_PREFIX=/usr/local/apr-util

#Define PCRE path variables

PCRE_URL=https://mirrors.yangxingzhen.com/pcre

PCRE_FILES=pcre-8.41.tar.gz

PCRE_FILES_DIR=pcre-8.41

PCRE_PREFIX=/usr/local/pcre

#Define Apache path variables

APACHE_URL=https://mirrors.yangxingzhen.com/apache

APACHE_FILES=httpd-2.4.28.tar.gz

APACHE_FILES_DIR=httpd-2.4.28

APACHE_PREFIX=/usr/local/apache

APACHE_INIT_FILE=/etc/init.d/httpd

#Define Boost path variables

Boost_URL=https://mirrors.yangxingzhen.com/mysql

Boost_File=boost_1_59_0.tar.gz

#Define Mysql path variables

MYSQL_URL=http://mirrors.163.com/mysql/Downloads/MySQL-5.7

MYSQL_FILES=mysql-5.7.29.tar.gz

MYSQL_FILES_DIR=mysql-5.7.29

MYSQL_PREFIX=/usr/local/mysql

MYSQL_DIR=/data/mysql

MYSQL_USER=mysql

#Define PHP path variables

PHP_URL=http://mirrors.sohu.com/php

PHP_FILE=php-7.3.7.tar.gz

PHP_FILE_DIR=php-7.3.7

PHP_PREFIX=/usr/local/php

USER=apache

#Define ZIP path variables

ZIP_URL=https://nih.at/libzip

ZIP_FILE=libzip-1.2.0.tar.gz

ZIP_FILE_DIR=libzip-1.2.0

source /etc/rc.d/init.d/functions

function Install_Apache (){

#Install APR

if [ ! -d ${APR_PREFIX} ];then

yum -y install gcc gcc-c wget

cd ${HOME} && wget -c ${APR_URL}/${APR_FILES}

tar zxf ${APR_FILES}

cd ${APR_FILES_DIR}

./configure --prefix=${APR_PREFIX}

if [ $? -eq 0 ];then

make && make install

action "The APR Install Sussess..." /bin/true

else

aciton "The APR Install Failed..." /bin/false

exit 1

fi

else

echo -e "33[32mThe APR Already Install...33[0m"

fi

#Install APR-util

if [ ! -d ${APR_UTIL_PREFIX} ];then

yum -y install expat expat-devel

cd ${HOME} && wget -c ${APR_UTIL_URL}/${APR_UTIL_FILES}

tar zxf ${APR_UTIL_FILES}

cd ${APR_UTIL_FILES_DIR}

./configure --prefix=${APR_UTIL_PREFIX} --with-apr=${APR_PREFIX}

if [ $? -eq 0 ];then

make && make install

action "The APR-util Install Sussess..." /bin/true

else

aciton "The APR-util Install Failed..." /bin/false

exit 1

fi

else

echo -e "33[32mThe APR-util Already Install...33[0m"

fi

#Install PCRE

if [ ! -d ${PCRE_PREFIX} ];then

cd ${HOME} && wget -c ${PCRE_URL}/${PCRE_FILES}

tar zxf ${PCRE_FILES}

cd ${PCRE_FILES_DIR}

./configure --prefix=${PCRE_PREFIX}

if [ $? -eq 0 ];then

make && make install

action "The PCRE Install Sussess..." /bin/true

else

aciton "The PCRE Install Failed..." /bin/false

exit 1

fi

else

echo -e "33[32mThe PCRE Already Install...33[0m"

fi

#Install Apache

if [ ! -d ${APACHE_PREFIX} ];then

yum -y install openssl openssl-devel

cd ${HOME} && wget -c ${APACHE_URL}/${APACHE_FILES}

tar zxf ${APACHE_FILES}

cd ${APACHE_FILES_DIR}

./configure --prefix=${APACHE_PREFIX}

--with-apr=${APR_PREFIX}

--with-apr-util=${APR_UTIL_PREFIX}

--enable-so

--enable-rewrite

--enable-ssl

--with-pcre=${PCRE_PREFIX}

--with-mpm=worker

if [ $? -eq 0 ];then

make && make install

action "The Apache Install Sussess..." /bin/true

else

aciton "The Apache Install Failed..." /bin/false

exit 1

fi

else

echo -e "33[32mThe Apache Already Install...33[0m"

exit 0

fi

}

function Install_Mysql (){

if [ ! -d ${MYSQL_PREFIX} ];then

#Install Package

yum -y install ncurses-devel perl perl-devel cmake wget gcc gcc-c bison* autoconf openssl-devel openssl

#Install Boost

cd ${HOME} && wget -c ${Boost_URL}/${Boost_File}

tar zxf ${Boost_File} -C /usr/local/

#Install MYSQL

wget -c ${MYSQL_URL}/${MYSQL_FILES}

tar zxf ${MYSQL_FILES}

cd ${MYSQL_FILES_DIR}

cmake . -DCMAKE_INSTALL_PREFIX=${MYSQL_PREFIX}

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock

-DMYSQL_DATADIR=${MYSQL_DIR}

-DSYSCONFDIR=/etc

-DEXTRA_CHARSETS=all

-DDEFAULT_CHARSET=utf8

-DDEFAULT_COLLATION=utf8_general_ci

-DWITH_MYISAM_STORAGE_ENGINE=1

-DWITH_INNOBASE_STORAGE_ENGINE=1

-DWITH_MEMORY_STORAGE_ENGINE=1

-DWITH_PARTITION_STORAGE_ENGINE=1

-DDOWNLOAD_BOOST=1

-DWITH_BOOST=/usr/local/boost_1_59_0

-DENABLED_LOCAL_INFILE=1

-DMYSQL_TCP_PORT=3306

-DWITH_READLINE=1

-DMYSQL_USER=${MYSQL_USER}

-DWITH_SSL=yes

if [ $? -eq 0 ];then

make && make install

action "The Mysql Install Sussess..." /bin/true

else

action "The Mysql Install Failed..." /bin/false

exit 1

fi

else

echo -e "33[31mThe Mysql Already Install...33[0m"

exit 1

fi

}

function Install_PHP() {

#Install Libzip

yum –y install wget gcc gcc-c

cd ${HOME} && wget -c ${ZIP_URL}/${ZIP_FILE}

tar zxf ${ZIP_FILE}

cd ${ZIP_FILE_DIR}

./configure

if [ $? -eq 0 ];then

make && make install

action "The Libzip Install Sussess..." /bin/true

else

action "The Libzip Install Failed..." /bin/false

exit 1

fi

cat >/etc/ld.so.conf <<EOF

/usr/local/lib64

/usr/local/lib

/usr/lib

/usr/lib64

EOF

ldconfig -v

#Install PHP

if [ ! -d ${PHP_PREFIX} ];then

#Install Package

yum -y install epel-release

yum -y install wget gcc gcc-c pcre pcre-devel openssl openssl-devellibxml2 libxml2-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel cmake

cd ${HOME} && wget -c ${PHP_URL}/${PHP_FILE}

tar zxf ${PHP_FILE}

cd ${PHP_FILE_DIR}

./configure --prefix=${PHP_PREFIX}

--with-config-file-path=/etc

--with-apxs2=/usr/local/apache/bin/apxs

--enable-fpm

--with-fpm-user=${USER}

--with-fpm-group=${USER}

--enable-inline-optimization

--disable-debug

--disable-rpath

--enable-shared

--enable-soap

--with-libxml-dir

--with-xmlrpc

--with-openssl

--with-mhash

--with-pcre-regex

--with-sqlite3

--with-zlib

--enable-bcmath

--with-iconv

--with-bz2

--enable-calendar

--with-curl

--with-cdb

--enable-dom

--enable-exif

--enable-fileinfo

--enable-filter

--with-pcre-dir

--enable-ftp

--with-gd

--with-openssl-dir

--with-jpeg-dir

--with-png-dir

--with-zlib-dir

--with-freetype-dir

--enable-gd-jis-conv

--with-gettext

--with-gmp

--with-mhash

--enable-json

--enable-mbstring

--enable-mbregex

--enable-mbregex-backtrack

--with-onig

--enable-pdo

--with-mysqli=mysqlnd

--with-pdo-mysql=mysqlnd

--with-zlib-dir

--with-pdo-sqlite

--with-readline

--enable-session

--enable-shmop

--enable-simplexml

--enable-sockets

--enable-sysvmsg

--enable-sysvsem

--enable-sysvshm

--enable-wddx

--with-libxml-dir

--with-xsl

--enable-zip

--enable-mysqlnd-compression-support

--with-pear

--enable-opcache

if [ $? -eq 0 ];then

cp /usr/local/lib/libzip/include/zipconf.h /usr/local/include/zipconf.h

make && make install

action "The PHP Install Sussess..." /bin/true

else

action "The PHP Install Failed..." /bin/false

exit 1

fi

else

echo -e "33[31mThe PHP already Install...33[0m"

exit 1

fi

}

function LAMP_Config() {

#Apache config and Integrating PHP

useradd -s /sbin/nologin ${USER} >/dev/null 2>&1

cp ${APACHE_PREFIX}/bin/apachectl ${APACHE_INIT_FILE}

chmod o x ${APACHE_INIT_FILE}

sed -i 's/User daemon/User apache/' ${APACHE_PREFIX}/conf/httpd.conf

sed -i 's/Group daemon/Group apache/' ${APACHE_PREFIX}/conf/httpd.conf

sed -i '/AddType *.* .tgz/a\tAddType application/x-httpd-php .php' ${APACHE_PREFIX}/conf/httpd.conf

sed -i 's/index.html/index.php index.html/' ${APACHE_PREFIX}/conf/httpd.conf

sed -i 's/#ServerName www.example.com:80/ServerName localhost:80/' ${APACHE_PREFIX}/conf/httpd.conf

#Config PHP

cp php.ini-production /etc/php.ini

cp ${PHP_PREFIX}/etc/php-fpm.conf.default ${PHP_PREFIX}/etc/php-fpm.conf

cp ${PHP_PREFIX}/etc/php-fpm.d/www.conf.default ${PHP_PREFIX}/etc/php-fpm.d/www.conf

cp sapi/fpm/php-fpm.service /usr/lib/systemd/system

cat >/usr/local/php/etc/php-fpm.d/www.conf <<EOF

[www]

listen = 0.0.0.0:9000

listen.mode = 0666

user = ${USER}

group = ${USER}

pm = dynamic

pm.max_children = 128

pm.start_servers = 20

pm.min_spare_servers = 5

pm.max_spare_servers = 35

pm.max_requests = 10000

rlimit_files = 1024

slowlog = log/$pool.log.slow

EOF

#Mysql Config

useradd -s /sbin/nlogin mysql >/dev/null 2>&1

mkdir -p ${MYSQL_DIR}

chown -R ${MYSQL_USER}.${MYSQL_USER} ${MYSQL_DIR}

cat >/etc/my.cnf <<EOF

[mysqld]

#数据存储目录

datadir = ${MYSQL_DIR}

#socket通信文件

socket = /tmp/mysql.sock

#使用mysql用户启动

user = ${MYSQL_USER}

#MYSQL服务运行的端口号

port = 3306

#开启bin-log日志

log-bin = mysql-bin

#MYSQL服务ID号

server-id = 1

#定义error错误文件

log-error = ${MYSQL_DIR}/mysqld.log

#PID文件路径

pid-file = mysqld.pid

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

#设置字符集为utf8

character-set-server = utf8

[client]

default-character-set = utf8

port = 3306

socket = /tmp/mysql.sock

[mysql]

default-character-set = utf8

EOF

#Initialization Mysql

/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/data/mysql/ --basedir=/usr/local/mysql

ln -sf ${MYSQL_PREFIX}/bin/* /usr/bin

cp ${MYSQL_PREFIX}/support-files/mysql.server /etc/init.d/mysqld

chmod o x /etc/init.d/mysqld

#Start Mysql、php-fpm、Apache and Add MySQL、php-fpm、Apache boot self start

${APACHE_INIT_FILE} start

systemctl start php-fpm

/etc/init.d/mysqld start

sed -i '/#!/bin/sh/a#description: apache web server' ${APACHE_INIT_FILE}

sed -i '/#!/bin/sh/a#chkconfig: - 20 90' ${APACHE_INIT_FILE}

chkconfig --add httpd

chkconfig httpd on

chkconfig --add mysqld

chkconfig mysqld on

systemctl enable php-fpm

}

PS3="Please enter you select install Menu:"

select i in Install_LAMP Install_Apache Install_Mysql Install_PHP LAMP_Config quit

do

case $i in

Install_LAMP)

Install_Apache

Install_Mysql

Install_PHP

LAMP_Config

;;

Install_Apache)

Install_Apache

;;

Install_Mysql)

Install_Mysql

;;

Install_PHP)

Install_PHP

;;

LAMP_Config)

LAMP_Config

;;

quit)

echo -e "33[32mExit selection Menu.33[0m"

exit 1

esac

done

0 人点赞