栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

LNMP脚本一键部署

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LNMP脚本一键部署

#!/bin/bash
#function:练习
#author:ming 20220614
if [ $USER == 'root' ]
    then
      echo '管理员,你好'
    else
      echo '你不是管理员,请使用管理员账号登录,以继续操作'
      sleep 2
      exit
fi
Websit=www.feixeer.com
ping $Websit -c 4 &> /dev/null
if [ $? == 0 ]
    then
      echo "外网可以正常访问"
    else
      echo "请检查你的网络设置"
fi
systemctl status firewalld.service &> /dev/null
if [ $? != 0 ]
    then
      echo "你的防火墙没有在运行"
    else
      systemctl stop firewalld.service
      systemctl disable firewalld.service
      echo "已关闭你的防火墙"
fi 
sed -i 's/SELINUX=.*/SELINUX=disabled/g'  /etc/selinux/config  && echo "关闭selinux"
     if [ `cat /etc/passwd |grep www |awk -F':' '{print$1}'` == "www" ] &> /dev/null;then
      echo -e "33[33m用户33[32m www 33[0m已经存在33[0m"
    else
      echo -e "33[31m将创建LNMP管理用户www33[0m" && sleep 2
      useradd -s /sbin/nologin www
    fi
    if [ `cat /etc/passwd |grep mysql |awk -F':' '{print$1}'` == "mysql" ] &> /dev/null;then
      echo -e "33[33m用户33[32m mysql 33[0m已经存在33[0m"
    else
      echo -e "33[31m将创建LNMP管理用户mysql33[0m" && sleep 2
      useradd -s /sbin/nologin mysql
    fi
CMAKE() {
  echo -e "33[32m 正在安装cmake33[0m" && sleep 3
  cd /usr/local/src  
  if [ -f cmake-3.9.0.tar.gz ];then  
    tar xfz cmake-3.9.0.tar.gz
    cd cmake-3.9.0
    ./configure 2>/root/cmake_error.log
    make && make install
  fi
}
BOOST() {
  echo -e "33[32m 正在安装boost33[0m"  && sleep 2
  cd /usr/local/src
  if [ -f boost_1_59_0.tar.gz ];then
    tar xfz boost_1_59_0.tar.gz
    mv boost_1_59_0 /usr/local/boost
  fi
}
MYSQL_install() {
    echo -e "33[32m 正在安装mysql33[0mn"  && sleep 4
    if [ ! -d /usr/local/mysql/data ]
      then 
        mkdir -pv /usr/local/mysql/data
    fi      
    yum install -y ncurses-devel* libtirpc* rpcgen* gcc openssl* gcc-* bzip2-* bison
    cd /usr/local/src
  if [ -f mysql-5.7.37.tar.gz ];then
    tar xfz mysql-5.7.37.tar.gz
    cd mysql-5.7.37
cmake .
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql  -DMYSQL_DATADIR=/usr/local/mysql/data/
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock  -DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_MYISAM_STORAGE_ENGINE=1  -DENABLED_LOCAL_INFILE=1 -DEXTRA_CHARSETS=all
-DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_USER=mysql
-DWITH_DEBUG=0 -DWITH_EMBEDDED_SERVER=1 -DDOWNLOAD_BOOST=1 -DENABLE_DOWNLOADS=1 -DWITH_BOOST=/usr/local/boost 
    sleep 2
    make && make install
        if [ $? -eq 0 ];then
           echo -e "33[31m 安装成功33[0m"
          else
           rm -rf /usr/local/src/mysql-5.7.37 
           rm -rf /usr/local/mysql 
           userdel -r mysql && echo -e "33[31m 安装失败,正在清除33[0m"
           exit 0
        fi
  fi
}
MYSQL_init() {
    echo -e "33[32m 将开启MYsql33[0m"  && sleep 4
    cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
    chmod 755 /etc/init.d/mysql
    chown mysql.mysql /usr/local/mysql/ -R
    ln -sf /usr/local/mysql/bin /usr/bin
    ln -sf /usr/local/mysql/lib /usr/lib
    if [ ! -f /etc/my.cnf ];then
          touch /etc/my.cnf
          echo "[mysqld]" > /etc/my.cnf
          echo "datadir=/usr/local/mysql/data" >> /etc/my.cnf
          echo "socket=/usr/local/mysql/mysql.sock" >> /etc/my.cnf
          echo "log-error=/var/log/mysql.log" >> /etc/my.cnf
    fi      
    echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
    source /etc/profile && sleep 2
    echo -e "33[32m 开始写入配置 33[0m"
    if [ -f /etc/my.cnf ]
        then
          sed -i -e 's:datadir=.*:datadir=/usr/local/mysql/data:g' /etc/my.cnf
          sed -i -e 's:socket=.*:socket=/usr/local/mysql/mysql.sock:g' /etc/my.cnf
          sed -i -e 's:log-error=.*:log-error=/var/log/mysql.log:g' /etc/my.cnf
    fi
}
MYSQL() {
    CMAKE
    BOOST
    MYSQL_install
    MYSQL_init
}
nginx_install() {
    echo -e "33[0m即将开始安装Nginx服务......33[0m" && sleep 4 
    cd /usr/local/src
    yum install -y  gcc  openssl-devel  libxml2-devel  libxslt-devel gd-devel  perl-devel*   perl-ExtUtils-Embed
    sleep 4
if [ -f nginx-1.21.6.tar.gz ];then 
    tar xfz nginx-1.21.6.tar.gz
    cd nginx-1.21.6
./configure
--prefix=/usr/local/nginx  --user=www --group=www --with-http_ssl_module --with-http_realip_module
--with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module
--with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module
--with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module
--with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_perl_module=dynamic
--with-threads --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-stream_realip_module  
--with-http_slice_module --with-mail --with-mail_ssl_module --with-compat --with-file-aio --with-http_v2_module
   make && make install
   if [ $? -eq 0 ];then
        echo -e "33[32mNginx编译成功......33[0m"
      else 
        echo -e "33[31mNginx编译失败......33[0m"
        sleep 2
        exit 1
   fi 
fi    
}

nginx_init() {
cat > /usr/local/nginx/conf/nginx.conf < user  www www;
worker_processes  2;
worker_rlimit_nofile  65535;
error_log  logs/error.log;
error_log  logs/error.log  notice;
error_log  logs/error.log  info;
pid        /var/run/nginx.pid;
events {
    worker_connections  10240;
}
http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  logs/access.log  main;
    server_tokens   off;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    include  /usr/local/nginx/conf/conf.d/*.conf;
}
EOF
echo -e "33[32mNginx主配置文件已写入...33[0mn" && sleep 2
if [ ! -d /usr/local/nginx/conf/conf.d ];then
    mkdir /usr/local/nginx/conf/conf.d
fi
cat > /usr/local/nginx/conf/conf.d/www.nginx.conf < server {
        listen       80;
        root       html/web01;
        server_name   localhost;
        index  index.php index.html index.htm;
        location ~ .php(.*)$ {
                fastcgi_pass   unix:/dev/shm/php-cgi.sock;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $DOCUMENT_ROOT$fastcgi_script_name;
                fastcgi_param PATH_INFO $2;
                include fastcgi.conf;
                fastcgi_connect_timeout 180;
                fastcgi_read_timeout 600;
                fastcgi_send_timeout 600;
        }
        location ~ /.ht {
                deny  all;
        }
        location / {
                 try_files $uri $uri/ /?$args;
        }
}
EOF
echo -e "33[32mNginx区域配置文件已写入...33[0mn" && sleep 4
}
NGINX() {
    nginx_install
    nginx_init
}
php_install() {
echo -e "33[32m 开始安装PHP需要的依赖........ 33[0m" && sleep 2
yum install -y gcc-c++ libxml2 libzip libxml2-devel openssl openssl-devel
bzip2 bzip2-devel libcurl libcurl-devel* libjpeg libjpeg-devel libpng libpng-devel
freetype freetype-devel gmp gmp-devel readline readline-devel libxslt libxslt-devel
gd net-snmp-devel* oniguruma* sqlite-devel*
yum install -y https://rpms.remirepo.net/enterprise/7/remi/x86_64/oniguruma5php-6.9.7.1-1.el7.remi.x86_64.rpm
yum install -y https://rpms.remirepo.net/enterprise/7/remi/x86_64/oniguruma5php-devel-6.9.7.1-1.el7.remi.x86_64.rpm
sleep 2
  echo -e "33[32m 开始安装PHP33[0m " && sleep 2
  cd /usr/local/src
  if [  -f php-8.0.20.tar.gz ];then
      tar xfz php-8.0.20.tar.gz
      cd php-8.0.20
./configure
--prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysqli=mysqlnd
--enable-pdo --with-pdo-mysql=mysqlnd --with-iconv-dir=/usr/local/ --enable-fpm --with-fpm-user=www
--with-fpm-group=www --with-pcre-regex --with-zlib --with-bz2 --enable-calendar --disable-phar --with-curl
--enable-dba --with-libxml-dir --enable-ftp --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir
--with-freetype-dir --enable-gd-jis-conv --with-mhash --enable-mbstring --enable-opcache=yes --enable-pcntl
--enable-xml --disable-rpath --enable-shmop --enable-sockets --enable-zip --enable-bcmath --with-snmp --disable-ipv6
--with-gettext --disable-rpath --disable-debug --enable-embedded-mysqli --with-mysql-sock=/usr/local/mysql/ 
    if [ $? -eq 0 ];then
        make && make install
      else
        echo -e "33[31m 编译PHP时出现问题... 33[0m"
        cd /usr/local/src
        rm -rf php-8.0.20
        exit 0
    fi
  fi
}

php_init() {
if [ -d /usr/local/php/etc ];then
    cp /usr/local/src/php-8.0.20/php.ini-production  /usr/local/php/etc/php.ini
    cp /usr/local/src/php-8.0.20/sapi/fpm/php-fpm.service  /etc/systemd/system/
    systemctl daemon-reload
    chown www.www /usr/local/php -R
cat > /usr/local/php/etc/php-fpm.conf < [global]
pid = /run/php-fpm.pid
error_log = /var/log/php-fpm.log
log_level = notice
daemonize = yes
include = /usr/local/php/etc/php-fpm.d/*.conf
EOF
echo -e "33[32mPHP主配文件写入完毕33[0mn" && sleep 2
cat > /usr/local/php/etc/php-fpm.d/www.conf < [www]
listen = /dev/shm/php-cgi.sock
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
user = www
group = www
listen.owner = www
listen.group = www
listen.mode = 0660
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
EOF
echo -e "33[32mPHP子配文件写入完毕33[0mn" && sleep 2
    /usr/local/php/sbin/php-fpm -t 2>> /root/lanmp_error.log
    if [ $? -eq 0 ]
      then
        echo -e "33[32m配置文件正确......33[0m"
      else
        echo -e "33[31m配置文件存在问题,请在安装结束后进行调整......33[0m"
        echo -e "33[31m 详细请查看33[32m /root/lanmp_error.log33[0m文件33[0m"
        sleep 6
    fi
fi
}
PHP() {
    php_install
    php_init
}
sql_nginx() {
    echo -e "33[32m即将开始mysql数据库初始化......n请按提示操作33[0m" && sleep 4
    /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/  --explicit_defaults_for_timestamp
    echo -e "33[31mn上面输出的33[32m root:xxxx 33[0mnroot后面的字符为你的mysql初始root密码33[0m"
    source /etc/profile && sleep 2
    read -p "你的初始密码是:" you_put
    read -p "请设置新的MYSQLroot密码:" NEW_pwd
    service mysql start
    echo -e "33[32m请更改root密码(与上面一致)33[0m 33[31m格式:set password='密码';33[0m n然后回车,再"exit;""
    sleep 2
    mysql -uroot -p$you_put
    sleep 2
    echo -e "33[32m开始创建nginx的数据库33[0m"
    read -p "请输入数据库名称:" SQL_name
    read -p "请设置数据库用户名:" SQL_user
    read -p "请设置数据库密码:" SQL_pwd
    echo -e "33[31m主机名必须经过更改,否则默认的33[32mlocalhost33[0m会出现'与数据库建立连接失败'33[0m" && sleep 2
    read -p "请设置预更改的主机名(或已更改的主机名):" SQL_host
    mysql -uroot -p$NEW_pwd -e "CREATE DATABASE $SQL_name;"
    mysql -uroot -p$NEW_pwd -e "CREATE USER '$SQL_user'@'localhost' IDENTIFIED BY '$SQL_pwd';"
    mysql -uroot -p$NEW_pwd -e "GRANT ALL ON $SQL_name.* TO '$SQL_user'@'$SQL_host' IDENTIFIED BY '$SQL_pwd';"
    mysql -uroot -p$NEW_pwd -e "GRANT ALL ON $SQL_name.* TO '$SQL_user'@'localhost' IDENTIFIED BY '$SQL_pwd';"
    mysql -uroot -p$NEW_pwd -e "FLUSH PRIVILEGES;"
    sleep 2
    cd /usr/local/src
    tar xfz wordpress-6.0-zh_CN.tar.gz
    mv wordpress/wp-config-sample.php wordpress/wp-config.php
    sed -i -e "s/database_name_here/$SQL_name/g" wordpress/wp-config.php
    sed -i -e "s/username_here/$SQL_user/g" wordpress/wp-config.php
    sed -i -e "s/password_here/$SQL_pwd/g" wordpress/wp-config.php
    sed -i -e "s/localhost/$SQL_host/g" wordpress/wp-config.php
    mkdir /usr/local/nginx/html/web01
    cp -r /usr/local/src/wordpress/* /usr/local/nginx/html/web01/
    sleep 2
    echo -e "33[32mNginx的CMS拷贝完毕33[0m"
    echo -e "新的MYSQLroot密码:$NEW_pwd n新创建的数据库名称:$SQL_name n新创建的数据库用户名:$SQL_user n新创建的数据库密码:$SQL_pwd n更改的主机名:$SQL_host" > /root/.lanmp_count.txt
}
yum -y install gcc*
echo -e "33[41;36m请运行脚本前修改主机名,后面时请输入你修改的主机名 33[0m"
echo -e "33[32m为了支持脚本运行你需要准备:33[33mn boost_1_59_0.tar.gzn cmake-3.9.0.tar.gzn mysql-5.7.37.tar.gzn nginx-1.21.6.tar.gzn php-8.0.20.tar.gzn wordpress-6.0-zh_CN.tar.gzn33[0m以上6个安装包(位置:33[31m/usr/local/src33[0m)33[0m"
echo -e "33[36m安装包链接链接:链接:https://pan.baidu.com/s/1uPMMqK2v7-TKKcqARD9tpA 提取码:123433[0m"
read -p "你是否已准备好(yes or no):" I
if [ $I == "no" ];then
   echo "即将退出......" && sleep 4
   exit 0
  else
   echo "将继续执行......" && sleep 2
fi
echo -e "33[31m 提示:请按照顺序来安装33[33m n1.MYSQLn2.NGINXn3.PHPn4.sql_nginx33[0m 33[0m"
read -p "请输入一个数字并按Enter键确认:"  QQ
case "$QQ" in
      1) 
      echo "正在安装MYSQL"
      MYSQL
      ;;
      2)
      echo "正在安装NGINX"
      NGINX
      ;;
      3)
      echo "正在安装PHP"
      PHP
      ;;
      4)
      echo "正在更改配置文件并安装cms"
      sql_nginx
      echo -e "33[32m即将启动服务......33[0m"
      /usr/local/nginx/sbin/nginx && sleep 2
      /usr/local/php/sbin/php-fpm && sleep 2
      echo -e "33[32m重要账号信息位于:/root/.lanmp_count.txt33[0m"
      echo -e "33[32m现在可以通过IP:33[33m`ip a|grep ens|grep inet|awk '{print$2}'|awk -F'/' '{print$1}'`33[0m在浏览器访问了33[0m"
      ;;
*)
      echo "你输入的是其他选择,现在只能选择这些"
esac

暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1016347.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号