闲来无事自己写了个LNMP环境的安装脚本。
该脚本可以单独安装nginx,mysql,php,也可以一步到位直接安装所有软件。其中,nginx安装完,需根据具体环境修改配置文件,再启动服务。mysql,php安装完服务自动启动。
环境:
软件安装路径:/opt/apps/
数据存放目录:/opt/data/
安装包下载目录:/opt/src/
具体软件版本如下:
nginx-1.10.1
mysql-5.6.32
php-7.0.10
脚本如下:
# more lnmp_install.sh#!/bin/sh##############################defind functions that install lnmp....#############################nginx##########################Install_nginx (){echo -e "\033[33m Install nginx....\033[0m"if [ -d /opt/apps/nginx/ ]; then echo -e "\033[31m Nginx already exists in your system......\033[0m" exitfi echo -e "\033[33m Install base environment of nginx......\033[0m" yum -y install pcre* openssl* echo -e "\033[33m Download nginx(1.10.1)......\033[0m" if [ ! -f /opt/src/nginx-1.10.1.tar.gz ]; then wget http://nginx.org/download/nginx-1.10.1.tar.gz -P /opt/src fi cd /opt/src/ tar -zxvf nginx-1.10.1.tar.gz cd nginx-1.10.1 echo -e "\033[33m Compose nginx......\033[0m" ./configure --prefix=/opt/apps/nginx --conf-path=/opt/conf/nginx/nginx.conf --error-log-path=/opt/logs/nginx/error.log --http-log-path=/opt/logs/nginx/access.log --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-http_ssl_module --with-http_realip_module --http-client-body-temp-path=/opt/apps/nginx/client_body_temp --http-fastcgi-temp-path=/opt/apps/nginx/fastcgi_temp --http-proxy-temp-path=/opt/apps/nginx/proxy_temp --http-uwsgi-temp-path=/opt/apps/nginx/uwsgi_temp --http-scgi-temp-path=/opt/apps/nginx/scgi_temp make && make install if [ $? -eq "0" ]; then echo -e "\033[32m Nginx is installed successfully......\033[0m" exit else echo -e "\033[31m Something was wrong during installing nginx,please check and try again......\033[0m" exit fi}######mysql############################Install_mysql (){#Removing default rpm packages of mysql if they have been installed....if [ -f /usr/bin/mysqld_safe ];then echo -e "\033[33m Remove default mysql-server RPM packages......\033[0m" yum -y remove mysql-serverfiif [ -f /usr/bin/mysqldump ];then echo -e "\033[33m Remove default mysql-client RPM packages......\033[0m" yum -y remove mysql fi#Adding mysql's user and group..if [ ! -d /opt/data/mysql];then mkdir -p /opt/data/mysqlfiecho -e "\033[33m Setting Environment variables......\033[0m" userdel -r mysqlgroupdel -r mysqlgroupadd mysqluseradd -r -g mysql -s /sbin/nologin mysql#setting the env of mysql......base_dir=/opt/apps/mysql/data_dir=/opt/data/mysql/src_dir=/opt/src/#Download mysql and installif [ ! -d /opt/src/mysql-5.6.32/ ];then if [ ! -f /opt/src/mysql-5.6.32.tar.gz ];then wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.32.tar.gz -P /opt/src/ fi cd /opt/src/ tar -zxvf /opt/src/mysql-5.6.32.tar.gzfi cd /opt/src/mysql-5.6.32cmake . -DCMAKE_INSTALL_PREFIX=${base_dir} -DMYSQL_DATADIR=${data_dir} -DMYSQL_UNIX_ADDR=${data_dir}mysql.sock -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_TCP_PORT=3306 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_DEBUG=0if [ "$?" -ne "0" ];then echo -e 'Configure mysql failure,Please check compile Environment...' exit 2fimake -j 3 if [ "$?" -ne "0" ];then echo 'Error,please look config.log for more information...' exit 2fimake installif [ "$?" -eq "0" ];then echo -e 'Mysql install complete done...'else echo -e 'Something wrong between Installation...'fi#Initialization mysql..echo -e 'Initialization mysql...'cd ${src_dir}mysql-5.6.32cp support-files/my-default.cnf ${data_dir}/my.cnfcp support-files/mysql.server /etc/init.d/mysqldsed -i -e '46s/basedir=/basedir=${base_dir}/' -e '47s/datadir=/datadir=${data_dir}/' /etc/init.d/mysqldchmod a+x /etc/init.d/mysqldchkconfig --add mysqldsed -i -e "s#@HOSTNAME@#hostname#" ./scripts/mysql_install_db.shsh ./scripts/mysql_install_db.sh --user=mysql --basedir=${base_dir} --datadir=${data_dir} > /dev/null 2>&1chown -R mysql.mysql /opt/apps/mysql/chown -R mysql.mysql /opt/data/mysql/#Start mysql...ulimit -s unlimitedservice mysqld start}#######php###########################################################Install_php (){if [ ! -f /opt/src/php-7.0.10.tar.gz ];then echo -e "\033[33m Download php-7.0.10.tar.gz......\033[0m" wget http://cn2.php.net/get/php-7.0.10.tar.gz/from/this/mirror -P /opt/src cd /opt/src && mv mirror php-7.0.10.tar.gzfiecho -e "\033[33m Complising and installing php-7.0.10 ......\033[0m" tar -zxvf php-7.0.10.tar.gzcd php-7.0.10yum install -y php-mcrypt libmcrypt libmcrypt-devel libjpeg-turbo-devel.x86_64 ./configure --prefix=/opt/apps/php --with-config-file-path=/opt/apps/php/etc --with-mcrypt=/usr/include --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-gd --with-iconv --with-zlib --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --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-curl --with-jpeg-dir --with-freetype-dir --enable-opcacheif [ $? -eq "0"];then echo -e "\033[31m Php install faild....Please check and try again....\033[0m" exitfimake && make installcp php.ini-production /opt/apps/php/etc/php.inicp sapi/fpm/init.d.php-fpm /etc/init.d/php7-fpm cp /opt/apps/php/etc/php-fpm.conf.default /opt/apps/php/etc/php-fpm.conf cp /opt/apps/php/etc/php-fpm.d/www.conf.default /opt/apps/php/etc/php-fpm.d/www.confecho "zend_extension=/opt/apps/php/lib/php/extensions/no-debug-non-zts-20151012/opcache.so" >> /opt/apps/php/etc/php.inichmod 775 /etc/init.d/php7-fpmecho -e "\033[33m Starting php7-frm service......\033[0m" /etc/init.d/php7-fpm startif [ $? -eq "0" ];then echo -e "\032[33m PHP installed and started successfully......\033[0m" else: echo -e "\033[31m PHP installed successfully,but start failed,please check the configuration of php......\033[0m" fi}###############################Main program######################################mkdir -p /opt/{apps,conf,src,data}read -p "Which part of lnmp you want to install?(nginx|mysql|php|all):" softwarcase ${softwar} in nginx) Install_nginx;;mysql) Install_mysql;;php)Install_php;;all)if [ -d /opt/apps/nginx ];then echo -e "\033[33m Nginx was already installed in your system...\033[0m"else Install_nginxfiif [ -d /opt/apps/mysql ];then echo -e "\033[33m Mysql was already installed in your system...\033[0m"else Install_mysqlfiif [ -d /opt/apps/php ];then echo -e "\033[33m PHP was already installed in your system...\033[0m"else Install_phpfi;;*)echo -e "\033[33m Sorry,please input a right choice\033[0m"esac