#!/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 "\033[33m用户\033[32m www \033[0m已经存在\033[0m"
    else
      echo -e "\033[31m将创建LNMP管理用户www\033[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 "\033[33m用户\033[32m mysql \033[0m已经存在\033[0m"
    else
      echo -e "\033[31m将创建LNMP管理用户mysql\033[0m" && sleep 2
      useradd -s /sbin/nologin mysql
    fi
CMAKE() {
  echo -e "\033[32m 正在安装cmake\033[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 "\033[32m 正在安装boost\033[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 "\033[32m 正在安装mysql\033[0m\n"  && 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 "\033[31m 安装成功\033[0m"
          else
           rm -rf /usr/local/src/mysql-5.7.37 
           rm -rf /usr/local/mysql 
           userdel -r mysql && echo -e "\033[31m 安装失败,正在清除\033[0m"
           exit 0
        fi
  fi
}
MYSQL_init() {
    echo -e "\033[32m 将开启MYsql\033[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 "\033[32m 开始写入配置 \033[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 "\033[0m即将开始安装Nginx服务......\033[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 "\033[32mNginx编译成功......\033[0m"
      else 
        echo -e "\033[31mNginx编译失败......\033[0m"
        sleep 2
        exit 1
   fi 
fi    
}

nginx_init() {
cat > /usr/local/nginx/conf/nginx.conf <<EOF
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 "\033[32mNginx主配置文件已写入...\033[0m\n" && 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 <<EOF
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 "\033[32mNginx区域配置文件已写入...\033[0m\n" && sleep 4
}
NGINX() {
    nginx_install
    nginx_init
}
php_install() {
echo -e "\033[32m 开始安装PHP需要的依赖........ \033[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 "\033[32m 开始安装PHP\033[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 "\033[31m 编译PHP时出现问题... \033[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 <<EOF
[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 "\033[32mPHP主配文件写入完毕\033[0m\n" && sleep 2
cat > /usr/local/php/etc/php-fpm.d/www.conf <<EOF
[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 "\033[32mPHP子配文件写入完毕\033[0m\n" && sleep 2
    /usr/local/php/sbin/php-fpm -t 2>> /root/lanmp_error.log
    if [ $? -eq 0 ]
      then
        echo -e "\033[32m配置文件正确......\033[0m"
      else
        echo -e "\033[31m配置文件存在问题,请在安装结束后进行调整......\033[0m"
        echo -e "\033[31m 详细请查看\033[32m /root/lanmp_error.log\033[0m文件\033[0m"
        sleep 6
    fi
fi
}
PHP() {
    php_install
    php_init
}
sql_nginx() {
    echo -e "\033[32m即将开始mysql数据库初始化......\n请按提示操作\033[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 "\033[31m\n上面输出的\033[32m root:xxxx \033[0m\nroot后面的字符为你的mysql初始root密码\033[0m"
    source /etc/profile && sleep 2
    read -p "你的初始密码是:" you_put
    read -p "请设置新的MYSQLroot密码:" NEW_pwd
    service mysql start
    echo -e "\033[32m请更改root密码(与上面一致)\033[0m \033[31m格式:set password='密码';\033[0m \n然后回车,再\"exit;\""
    sleep 2
    mysql -uroot -p$you_put
    sleep 2
    echo -e "\033[32m开始创建nginx的数据库\033[0m"
    read -p "请输入数据库名称:" SQL_name
    read -p "请设置数据库用户名:" SQL_user
    read -p "请设置数据库密码:" SQL_pwd
    echo -e "\033[31m主机名必须经过更改,否则默认的\033[32mlocalhost\033[0m会出现'与数据库建立连接失败'\033[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 "\033[32mNginx的CMS拷贝完毕\033[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 "\033[41;36m请运行脚本前修改主机名,后面时请输入你修改的主机名 \033[0m"
echo -e "\033[32m为了支持脚本运行你需要准备:\033[33m\n boost_1_59_0.tar.gz\n cmake-3.9.0.tar.gz\n mysql-5.7.37.tar.gz\n nginx-1.21.6.tar.gz\n php-8.0.20.tar.gz\n wordpress-6.0-zh_CN.tar.gz\n\033[0m以上6个安装包(位置:\033[31m/usr/local/src\033[0m)\033[0m"
echo -e "\033[36m安装包链接链接:链接:https://pan.baidu.com/s/1uPMMqK2v7-TKKcqARD9tpA 提取码:1234\033[0m"
read -p "你是否已准备好(yes or no):" I
if [ $I == "no" ];then
   echo "即将退出......" && sleep 4
   exit 0
  else
   echo "将继续执行......" && sleep 2
fi
echo -e "\033[31m 提示:请按照顺序来安装\033[33m \n1.MYSQL\n2.NGINX\n3.PHP\n4.sql_nginx\033[0m \033[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 "\033[32m即将启动服务......\033[0m"
      /usr/local/nginx/sbin/nginx && sleep 2
      /usr/local/php/sbin/php-fpm && sleep 2
      echo -e "\033[32m重要账号信息位于:/root/.lanmp_count.txt\033[0m"
      echo -e "\033[32m现在可以通过IP:\033[33m`ip a|grep ens|grep inet|awk '{print$2}'|awk -F'/' '{print$1}'`\033[0m在浏览器访问了\033[0m"
      ;;
*)
      echo "你输入的是其他选择,现在只能选择这些"
esac

LNMP脚本一键部署相关推荐

  1. shell脚本一键部署lnmp架构

    shell脚本一键部署lnmp架构 1. 创建存放脚本的目录 2. 创建脚本文件 3. 编写脚本 4. 通过IP地址直接访问PHP界面 1. 创建存放脚本的目录 [root@localhost ~]# ...

  2. shell脚本 一键部署 Lnmp 及社区论坛 服务架构

    shell脚本 一键部署 Lnmp 一键部署 Lnmp 一键部署 注:亲,记得把所需要的软件包,先放到/opt目录中:以及该机子的内存大小.核数先设置好! #!/bin/bash #先配置好yum e ...

  3. shell脚本一键部署LNMP

    前言 使用shell脚本一键部署LNMP需要的安装包 nginx-1.15.9.tar.gz mysql-boost-5.7.20.tar.gz php-7.1.10.tar.bz2 Discuz_X ...

  4. Centos6.5可视化界面脚本一键部署服务

    该脚本目前支持Jdk.Tomcat.Oracle.Mysql.MongDb.LAMP.LNMP.服务的部署[Oracle支持Centos所有版本] 该脚本一些命令,思想参考了百度,甚至是csdn大佬一 ...

  5. lnmp的一键部署(脚本)

    #!/bin/bash #安装环境依赖包 systemctl stop firewalld systemctl disable firewalld setenforce 0 yum -y instal ...

  6. 使用shell脚本一键部署LNMP架构

    #/bin/bash##将需要的安装包传到/opt目录下,并关闭防火墙 systemctl stop firewalld systemctl disable firewalld &>/d ...

  7. centos7 ssr一键脚本_RHEL7(Centos7)下使用shell脚本一键部署服务

    今天配置服务觉得有些麻烦,想着写一个能一键配置nfs服务端的shell脚本,当然在安装之前需要配置一个yum源,所以我一并将这些功能写在了一个shell脚本里. 脚本如下: #author:Roya ...

  8. 脚本一键部署 (DHCP、dns、pxe、raid、nfs+apache+expect、lvm、磁盘分区、监控资源)

    目录 一.DHCP 二.DNS 三.PXE(一键装机) 四.RAID 五.DFS+APACHE+免密登录(expect) 六.LVM 七.磁盘分区 八.监控资源(cpu.内存等) 九.系统信息(主机名 ...

  9. 脚本一键部署(dhcp、dns、pxe、raid、nfs+apache+expect、lvm、磁盘分区、监控资源)

    目录 一.DHCP 二.DNS 三.PXE(一键装机) 四.RAID 五.DFS+APACHE+免密登录(expect) 六.LVM 七.磁盘分区 八.监控资源(cpu.内存等) 九.系统信息(主机名 ...

最新文章

  1. Android Preference 须知
  2. 科目三中模拟灯光使用考试常见的错误 广州学车网光大国际驾校学车
  3. web service基础知识
  4. perl 中文处理 乱码
  5. 智慧故事----每次进来看看都会有收获
  6. mysql查找多个表并更新值_Mysql子查询,连接,多表更新
  7. unique path 阶梯
  8. 华为交换机S3700基本配置
  9. Excel文件内容比对 -- Java Apache Poi
  10. Spring与Spring Framework的入门介绍以及学习文章整理
  11. 利用msf 对靶机metasploittable2 进行信息收集
  12. 自定义组件使用v-modle
  13. 大数据揭秘区块链人才大迁徙:那个你身边悄悄离职的人去哪儿了?
  14. 【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令-用户账户管理-文件(夹)共享(net)
  15. 什么是计算机?计算机硬件详细介绍和参数解读[2]
  16. 如何做好微信朋友圈推广?
  17. 实名认证需谨慎,避免陷入隐私泄露风险
  18. 王垠的面试 和 P 与 NP
  19. fatal: 无法访问 ‘‘github.com/“:GnuTLS recv error (-110): The TLS connection was non-properly terminated.
  20. HiPER月光网吧宽带安全网关接入解决方案(转)

热门文章

  1. ipvsadm命令方法
  2. 教你用canvas画n角星星
  3. 华为APP安装问题:更新包与已安装应用的签名不一致
  4. 怎么理清自己的编程思路
  5. 分组密码与高级加密标准(一)
  6. java群面_【埃森哲Java面试】一共有三面吧,第一面群面,第二面技术吧。-看准网...
  7. Python发送网络请求(requests)
  8. 车载诊断测试——无诊断数据库怎么使用CANoe做诊断测试?
  9. 华为云网站备案操作流程
  10. gearman java_gearman安装,提示错误:configure: error: could not find boost