#一、脚本介绍
首先来到/usr/local/sbin目录下,创建两个shell文件,分别为init.sh和lnmp.sh,在当前目录下创建文件夹log,进入log目录,创建sh.log作为两个脚本的日志文件,记录脚本执行的输出信息,以便用户进行调错和查看进度。
#二、目录结构与实验环境
init.sh位置:/usr/local/sbin/init.sh
lnmp.sh位置:/usr/local/sbin/lnmp.sh
sh.log位置:/usr/local/sbin/log/sh.log
实验环境:centos7操作系统
#三、脚本内容
##1、初始化主机脚本
首先,看一下init.sh装机脚本,本脚本主要对刚刚创建的虚拟机进行初始化,初始化内容为配置ip地址,设置主机名以及与hosts文件进行对应,设置防火墙和selinux,设置NetworkManager,配置yum源,同步时间戳。这里用户可以根据自己的实际情况对脚本内容进行更改,让初始化主机更加方便。写完按照权限最小化原则,将权限改为700。
echo -e "感谢您使用此装机脚本\n"
# 可以根据自己的实际情况设置ip地址、子网掩码、网关、dns
echo -e "now begain change your network config\n">>/usr/local/sbin/log/sh.log
echo -e "IPADDR=192.168.10.10\n">>/etc/sysconfig/network-scripts/ifcfg-ens33
echo -e "NETMAKS=255.255.255.0\n">>/etc/sysconfig/network-scripts/ifcfg-ens33
echo -e "GATEWAY=192.168.10.1\n">>/etc/sysconfig/network-scripts/ifcfg-ens33
echo -e "DNS1=192.168.10.1\n">>/etc/sysconfig/network-scripts/ifcfg-ens33
systemctl restart network
echo -e "change network config over\n">>/usr/local/sbin/log/sh.log
# 可以根据自己的实际情况设置主机名及其与hosts文件的对应关系
echo -e "now begain change your hostname\n">>/usr/local/sbin/log/sh.log
hostnamectl set-hostname test
echo -e "192.168.10.10 test\n">>/etc/hosts
echo -e "change hostname config over\n">>/usr/local/sbin/log/sh.log
# 设置防火墙和selinux
echo -e "now begain config firewalld and selinux\n">>/usr/local/sbin/log/sh.log
systemctl stop firewalld
systemctl disable firewalld
sed -i 'SELINUX=enforcing/CSELINUX=disabled' /etc/selinux/config
echo -e "config firewalld and selinux over\n">>/usr/local/sbin/log/sh.log
# 设置网络管理
echo -e "now begain config NetworkManager\n">>/usr/local/sbin/log/sh.log
systemctl stop NetworkManager
systemctl disable NetworkManager
echo -e "config NetworkManager over\n">>/usr/local/sbin/log/sh.log
# 配置yum源
echo -e "now begain config yum\n">>/usr/local/sbin/log/sh.log
cd /etc/yum.repos.d/
echo -e "[rhel7]\n">>rhel7.repo
echo -e "name=rhel7\n">>rhel7.repo
echo -e "baseurl=file:///media/cdrom\n">>rhel7.repo
echo -e "enabled=1\n">>rhel7.repo
echo -e "gpgcheck=0\n">>rhel7.repo
mkdir -p /media/cdrom
mount /dev/cdrom /media/cdrom
echo -e "/dev/cdrom /media/cdrom iso9660 defaults 0 0\n">>/etc/fstab
echo -e "config yum over\n">>/usr/local/sbin/log/sh.log
# 同步时间戳
echo -e "now begain config ntpdate\n">>/usr/local/sbin/log/sh.log
yum install ntpdate
ntpdate ntp1.aliyun.com
echo -e "config ntpdate over\n">>/usr/local/sbin/log/sh.log
echo -e "your computer config over!\n"
##2、lnmp半自动安装脚本
再来看一下对lnmp的半自动部署脚本,如果对软件版本或安装包的类型等有要求,可以更改脚本内容,让lnmp的部署更加便捷。不建议对整个过程使用自动安装,可以对某些简单而又繁琐的步骤进行自动安装,一些对配置文件的书写建议手动配置,因为要和具体的环境相互适应,动态地更改配置文件。同样写完按照权限最小化原则,将权限改为700。
# 需要保证整个安装过程网络的畅通
echo "thank you use!"
# 准备安装依赖包
echo -e "now prepare depend package\n">>/usr/local/sbin/log/sh.log
yum install -y apr* autoconf automake bison bzip2 bzip2* compat* cpp curl curl-devel fontconfig fontconfig-devel freetype freetype* freetype-devel gcc gcc-c++ gd gettext gettext-devel glibc kernel kernel-headers keyutils keyutils-libs-devel krb5-devel libcom_err-devel libpng libpng-devel libjpeg* libsepol-devel libselinux-devel libstdc++-devel libtool* libgomp libxml2 libxml2-devel libXpm* libtiff libtiff* make mpfr ncurses* ntp openssl openssl-devel patch pcre-devel perl php-common php-gd policycoreutils telnet t1lib t1lib* nasm nasm* wget zlib-devel
echo -e "prepare depend package over\n">>/usr/local/sbin/log/sh.log
# 下载整个过程所需要的软件包
echo -e "now download software\n">>/usr/local/sbin/log/sh.log
cd /usr/local/src
wget https://www.linuxprobe.com/Software/cmake-2.8.11.2.tar.gz
wget https://www.linuxprobe.com/Software/Discuz_X3.2_SC_GBK.zip
wget https://www.linuxprobe.com/Software/freetype-2.5.3.tar.gz
wget https://www.linuxprobe.com/Software/jpegsrc.v9a.tar.gz
wget https://www.linuxprobe.com/Software/libgd-2.1.0.tar.gz
wget https://www.linuxprobe.com/Software/libmcrypt-2.5.8.tar.gz
wget https://www.linuxprobe.com/Software/libpng-1.6.12.tar.gz
wget https://www.linuxprobe.com/Software/libvpx-v1.3.0.tar.bz2
wget https://www.linuxprobe.com/Software/mysql-5.6.19.tar.gz
wget https://www.linuxprobe.com/Software/nginx-1.6.0.tar.gz
wget https://www.linuxprobe.com/Software/openssl-1.0.1h.tar.gz
wget https://www.linuxprobe.com/Software/php-5.5.14.tar.gz
wget https://www.linuxprobe.com/Software/pcre-8.35.tar.gz
wget https://www.linuxprobe.com/Software/t1lib-5.1.2.tar.gz
wget https://www.linuxprobe.com/Software/tiff-4.0.3.tar.gz
wget https://www.linuxprobe.com/Software/yasm-1.2.0.tar.gz
wget https://www.linuxprobe.com/Software/zlib-1.2.8.tar.gz
echo -e "download software over\n">>/usr/local/sbin/log/sh.log
# 安装cmake编译工具
echo -e "now install cmake\n">>/usr/local/sbin/log/sh.log
tar xzvf cmake-2.8.11.2.tar.gz
cd cmake-2.8.11.2/
./configure
make && make install
echo -e "install cmake over\n">>/usr/local/sbin/log/sh.log
# 准备安装数据库
echo -e "now prepare mysql\n">>/usr/local/sbin/log/sh.log
cd /usr/local/src
useradd mysql -s /sbin/nologin
mkdir -p /usr/local/mysql/var
chown -Rf mysql:mysql /usr/local/mysql
tar xzvf mysql-5.6.19.tar.gz
cd mysql-5.6.19/
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/var -DSYSCONFDIR=/etc
make && make install
rm -rf /etc/my.cnf
cd /usr/local/mysql
./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var
ln -s my.cnf /etc/my.cnf
cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod 755 /etc/rc.d/init.d/mysqld
cd /etc/rc.d/init.d/
sed "s/basedir=/basedir=\/usr\/local\/mysql/g" mysqld
sed "s/datadir=/basedir=\/usr\/local\/mysql\/var/g" mysqld
service mysqld start
chkconfig mysqld on
mkdir /var/lib/mysql
ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
ln -s /usr/local/mysql/include/mysql /usr/include/mysql
echo "install mysql over">>/usr/local/sbin/log/sh.log
# 准备安装nginx服务器
echo "now install nginx">>/usr/local/sbin/log/sh.log
cd /usr/local/src
tar xzvf pcre-8.35.tar.gz
cd pcre-8.35
./configure --prefix=/usr/local/pcre
make && make install
cd /usr/local/src
tar xzvf openssl-1.0.1h.tar.gz
cd openssl-1.0.1h
./config --prefix=/usr/local/openssl
make && make install
nl /etc/profile | sed '73a export export PATH=$PATH:/usr/local/mysql/bin:/usr/local/openssl/bin'
cd /usr/local/src
tar xzvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure --prefix=/usr/local/zlib
make && make install
cd ..
useradd www -s /sbin/nologin
tar xzvf nginx-1.6.0.tar.gz
cd nginx-1.6.0/
./configure --prefix=/usr/local/nginx --without-http_memcached_module --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-openssl=/usr/local/src/openssl-1.0.1h --with-zlib=/usr/local/src/zlib-1.2.8 --with-pcre=/usr/local/src/pcre-8.35
make && make install
chmod 755 /etc/rc.d/init.d/nginx
cd /usr/local/nginx/sbin
./nginx
echo "install nginx is over">>/usr/local/sbin/log/sh.log
# install nginx is over
echo "install php is begain">>/usr/local/sbin/log/sh.log
cd /usr/local/src/
tar zxvf yasm-1.2.0.tar.gz
cd yasm-1.2.0
./configure
make && make install
cd ..
tar zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure
make && make install
cd ..
tar xjvf libvpx-v1.3.0.tar.bz2
cd libvpx-v1.3.0
./configure --prefix=/usr/local/libvpx --enable-shared --enable-vp9
make && make install
cd ..
tar zxvf tiff-4.0.3.tar.gz
cd tiff-4.0.3
./configure --prefix=/usr/local/tiff --enable-shared
make && make install
cd ..
tar zxvf libpng-1.6.12.tar.gz
cd libpng-1.6.12
./configure --prefix=/usr/local/libpng --enable-shared
make && make install
cd ..
tar zxvf freetype-2.5.3.tar.gz
cd freetype-2.5.3
./configure --prefix=/usr/local/freetype --enable-shared
make && make install
cd ..
tar zxvf jpegsrc.v9a.tar.gz
cd jpeg-9a
./configure --prefix=/usr/local/jpeg --enable-shared
make && make install
cd ..
tar zxvf libgd-2.1.0.tar.gz
cd libgd-2.1.0
./configure --prefix=/usr/local/libgd --enable-shared --with-jpeg=/usr/local/jpeg --with-png=/usr/local/libpng --with-freetype=/usr/local/freetype --with-fontconfig=/usr/local/freetype --with-xpm=/usr/ --with-tiff=/usr/local/tiff --with-vpx=/usr/local/libvpx
make && make install
cd ..
tar zxvf t1lib-5.1.2.tar.gz
cd t1lib-5.1.2
./configure --prefix=/usr/local/t1lib --enable-shared
make && make install
ln -s /usr/lib64/libltdl.so /usr/lib/libltdl.so
cp -frp /usr/lib64/libXpm.so* /usr/lib/
cd ..
tar -zvxf php-5.5.14.tar.gz
cd php-5.5.14
export LD_LIBRARY_PATH=/usr/local/libgd/lib
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql-sock=/tmp/mysql.sock --with-pdo-mysql=/usr/local/mysql --with-gd --with-png-dir=/usr/local/libpng --with-jpeg-dir=/usr/local/jpeg --with-freetype-dir=/usr/local/freetype --with-xpm-dir=/usr/ --with-vpx-dir=/usr/local/libvpx/ --with-zlib-dir=/usr/local/zlib --with-t1lib=/usr/local/t1lib --with-iconv --enable-libxml --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-opcache --enable-mbregex --enable-fpm --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-mcrypt --with-curl --enable-ctype
make && make install
rm -rf /etc/php.ini
ln -s /usr/local/php/etc/php.ini /etc/php.ini
cp php.ini-production /usr/local/php/etc/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
ln -s /usr/local/php/etc/php-fpm.conf /etc/php-fpm.conf
cd /usr/local/php/etc/
sed "25c pid = run\/php-fpm.pid" php-fpm.conf
sed "148c user = www" php-fpm.conf
sed "149c group = www" php-fpm.conf
cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
chmod 755 /etc/rc.d/init.d/php-fpm
chkconfig php-fpm on
cd /usr/local/nginx/conf/
sed "2c user = www" nginx.conf
sed "45c index index.html index.htm index.php;" nginx.conf
sed "65c location ~ \.php\$ {" nginx.conf
sed "66c root html;" nginx.conf
sed "67c fastcgi_pass 127.0.0.1:9000;" nginx.conf
sed "68c fastcgi_index index.php;" nginx.conf
sed "69c fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;" nginx.conf
sed "70c include fastcgi_params;" nginx.conf
systemctl restart nginx
systemctl restart php-fpm
echo -e "install php over">>/usr/local/sbin/log/sh.log