#!/bin/bash
#
#***********************************************************************
#Author:                yangxiaohao
#QQ:                    1443964024
#Date:                  2020-10-31
#FileName:              install_LAMP.sh
#Description:           The test script
#Copyright(C):         2020All rights reserved
#**********************************************************************
SRC_DIR=/usr/local/src
NAME="mariadb-10.2.31-linux-x86_64.tar.gz"
MYSQL="mariadb-10.2.31-linux-x86_64"
FULL_NAME=${SRC_DIR}/${NAME}
DATA_DIR="/data/mysql"
RURPLE="\033[1;35m"
RED="\033[1;31m"
END="\033[0m"
HTTPD='httpd-2.4.43.tar.bz2'
APR='apr-1.7.0.tar.bz2 '
APRU='apr-util-1.6.1.tar.gz'
WORDPRESS='wordpress-5.4.2-zh_CN.tar.gz'
PHP='php-7.4.7.tar.bz2'

echo -e " $RURPLE 开始安装基于LAMP的wordpress $END"
sleep 2

check_file(){
    cd $SRC_DIR
    echo -e "$RED 请将相关软件放在${SRC_DIR}目录下 $END"
if [ ! -e ${HTTPD} ];then
  echo -e "$RED 缺少 ${HTTPD}文件 $END"
        exit
elif [ ! -e ${APR} ];then
  echo -e "$RED 缺少 ${APR}文件  $END"
        exit
elif [ ! -e ${APRU} ];then
  echo -e $RED "缺少 ${APRU}文件 $END"
        exit
elif [ ! -e ${PHP} ];then
  echo -e "$RED 缺少 ${PHP}文件 $END"
        exit
elif [ ! -e ${WORDPRESS} ];then
  echo -e "$RED缺少 ${WORDPRESS}文件 $END"
    exit
elif [ ! -e ${NAME} ];then
  echo -e "$RED 缺少 ${NAME}文件 $END"
    exit
else
  echo -e " $RURPLE 相关文件已经准备好 $END"
fi
}

install_mysql(){
 echo -e " $RED 开始安装MYSQL数据库$END"
  echo -e "$RURPLE 开始安装有关安装包,请耐心等候... $END"
yum -y install wget libaio numactl-libs  &> /dev/null
echo -e  "$RURPLE 安装包下载完毕! $END"
sleep 2

echo -e "$RURPLE 填写配置文件my.cnf  $END"
cat > /etc/my.cnf <<EOF
[mysqld]
datadir=/data/mysql
skip_name_resolve=1
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid

[client]
socket=/data/mysql/mysql.sock
EOF
echo -e "$RURPLE 配置文件编写完成!$END"

if [ -f ${FULL_NAME} ];then
    echo -e "$RURPLE 安装文件存在$END"
else
    echo -e "$RURPLE 安装文件不存在 $END"
    exit 1
fi
if [ -h /usr/local/mysql ];then
    echo -e "$RURPLE mysql 已经安装! $END"
    exit 2
else
    tar xf ${FULL_NAME} -C /usr/local/
    ln -s /usr/local/${MYSQL}/ /usr/local/mysql &> /dev/null
    if id mysql;then
        echo -e "$RURPLE mysql 用户已经存在! $END"
    else
        groupadd mysql
        useradd -r -g mysql -s /bin/false mysql
    fi

    if id mysql;then
        chown -R root.root /usr/local/mysql/
        if [ ! -d /data/mysql ];then
            mkdir -p /data/mysql && chown -R mysql.mysql /data/mysql &> /dev/null
            /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/data/mysql --basedir=/usr/local/mysql/ &> /dev/null
           cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld &> /dev/null
            chmod +x /etc/init.d/mysqld
            ln -s /usr/local/mysql/bin/* /usr/bin/ &> /dev/null
            chkconfig --add mysqld
        service mysqld start
        else
            echo -e " $RURPLE  mysql数据目录已经存在 $END"
            exit 3
        fi
    fi
fi
mysql -u root -e "create database wordpress;
                  create user wordpress@'10.0.0.7' identified by 'magedu';
                  grant all on wordpres.* to wordpress@'10.0.0.7';"
echo -e "$RED 数据库安装配置完毕 $END"
}

install_httpd(){
   echo -e "$RED 开始安装apache服务 $END"
    yum -y install lrzsz gcc pcre-devel openssl-devel expat-devel bzip2
    cd ${SRC_DIR}
    tar xvf ${APR}
    tar xvf ${APRU}
    tar xvf ${HTTPD}
   echo -e "$RED 进行合并编译,请等候..... $END"
    mv apr-1.7.0 httpd-2.4.43/srclib/apr
    mv apr-util-1.6.1 httpd-2.4.43/srclib/apr-util
     cd httpd-2.4.43/
./configure --prefix=/apps/httpd24 \
 --enable-so \
 --enable-ssl \
 --enable-cgi \
 --enable-rewrite \
 --with-zlib \
 --with-pcre \
 --with-included-apr \
 --enable-modules=most \
 --enable-mpms-shared=all \
 --with-mpm=event    
make && make install
[ $? -eq 0 ] && echo -e "$RED apache编译安装成功 $END"  || { echo -e "$RED apache编译安装失败!退出$END";exit;}
 echo 'PATH=/apps/httpd24/bin:$PATH' > /etc/profile.d/lamp.sh   
. /etc/profile.d/lamp.sh
useradd -s /sbin/nologin -r -u 88 apache  
sed -i.bak  -e  's/^User.*/User  apache/' -e 's/^Group.*/Group  apache/'   /apps/httpd24/conf/httpd.conf
sed -i 's/^#LoadModule proxy_module modules\/mod_proxy.so/LoadModule proxy_module modules\/mod_proxy.so/' /apps/httpd24/conf/httpd.conf
sed -i 's/^#LoadModule proxy_fcgi_module modules\/mod_proxy_fcgi.so/LoadModule proxy_fcgi_module modules\/mod_proxy_fcgi.so/' /apps/httpd24/conf/httpd.conf
sed -i 's/DirectoryIndex index.html/DirectoryIndex index.php index.html/' /apps/httpd24/conf/httpd.conf
apachectl start
cat > /usr/lib/systemd/system/httpd.server<<EOF
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
Documentation=man:httpd(8)
Documentation=man:apachectl(8)
[Service]
Type=forking
#EnvironmentFile=/etc/sysconfig/httpd
ExecStart=/apps/httpd24/bin/apachectl start
#ExecStart=/apps/httpd24/bin/httpd $OPTIONS -k start
ExecReload=/apps/httpd24/bin/apachectl graceful
#ExecReload=/apps/httpd24/bin/httpd $OPTIONS -k graceful
ExecStop=/apps/httpd24/bin/apachectl stop
KillSignal=SIGCONT
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF

echo -e "
AddType application/x-httpd-php .php
#AddType application/x-httpd-php-source .phps
ProxyRequests Off
<virtualhost *:80>
servername 10.0.0.7
documentroot /data/wordpress
<directory /data/wordpress>
require all granted
</directory>
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/wordpress/$1
ProxyPassMatch ^/(fpm_status|ping)$ fcgi://127.0.0.1:9000/$1
CustomLog "logs/access_wordpress_log" common
</virtualhost>
" >>  /apps/httpd24/conf/httpd.conf

apachectl restart
echo -e "$RED apache服务安装完毕! $END"

}

install_php(){
   echo -e " ${RED} 开始安装PHP $END"
    yum -y install gcc libxml2-devel bzip2-devel libmcrypt-devel sqlite-devel oniguruma-devel openssl-devel
    cd ${SRC_DIR}
    tar xf ${PHP}
    cd php-7.4.7
./configure \
 --prefix=/apps/php\
 --enable-mysqlnd \
 --with-mysqli=mysqlnd \
 --with-pdo-mysql=mysqlnd \
 --with-openssl \
 --with-zlib \
 --with-config-file-path=/etc \
 --with-config-file-dir=/etc/php.d \
 --enable-mbstring \
 --enable-xml \
 --enable-sockets \
--enable-fpm \
 --enable-maintainer-zts \
 --disable-fileinfo
make && make install
[ $? -eq 0 ]  && echo -e "$REDPHP编译安装成功!$END" || { echo -e  " $RED PHP编译安装失败,退出!$END";exit;}
echo 'PATH=/apps/php/bin:/apps/httpd24/bin:$PATH' > /etc/profile.d/php74.sh
. /etc/profile.d/php74.sh
cp php.ini-production /etc/php.ini  
cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/
 cd /apps/php/etc/
cp php-fpm.conf.default php-fpm.conf
cp /apps/php/etc/php-fpm.d/www.conf.default /apps/php/etc/php-fpm.d/www.conf
sed -i.bak  -e  's/^user.*/user = apache/' -e 's/^group.*/group = apache/' -e 's/;pm.status_path = /status/pm.status_path = /status/' -e 's/;ping.path = /ping /ping.path = /ping /' /apps/php/etc/php-fpm.d/www.conf

mkdir /etc/php.d
cat > /etc/php.d/opcache.ini<<EOF
[opcache]
zend_extension=opcache.so
opcache.enable=1
EOF
systemctl daemon-reload
systemctl enable --now php-fpm.service
mkdir /data/wordpress
echo -e "$RED PHP安装完成!$END"
}
install_wordpress(){
    cd ${SRC_DIR}
    tar xf ${WORDPRESS} -C /data/
    setfacl -R -m u:apache:rwx /data/wordpress/
   echo -e " $RURPLE WORDPRESS安装完成!!$END"
}

check_file
install_mysql
install_httpd
install_php
install_wordpress

shell 脚本实现二进制安装 LAMP 架构的 wordpress的更多相关文章

  1. Httpd服务进阶知识-基于Apache Modele的LAMP架构之WordPress案例

    Httpd服务进阶知识-基于Apache Modele的LAMP架构之WordPress案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装依赖包及数据库授权 博主推荐阅读 ...

  2. 脚本实现自动化安装lamp&lnmp

    #备注:前提是将lnmp和lnmp自动化脚本写好放在相应的路径, 脚本已写好,请查看我博客中的 shell脚本 专栏! #!/bin/bash #安装lamp或者lnmp path=/server/s ...

  3. ansible配合shell脚本批量编译安装python3.6.6

    [root@node1:/etc]# tree /etc/ansible/ /etc/ansible/ ├── ansible.cfg ├── hosts ├── python.yml └── rol ...

  4. [linux] shell脚本编程-xunsearch安装脚本学习

    安装脚本setup.sh #!/bin/sh # FULL fast install/upgrade script # See help message via `--help' # $Id$ # s ...

  5. shell脚本处理二进制数据

    正确处理二进制数据 正确处理二进制数据必须保证以下三个环节是二进制安全(Binary Safe)的: 从文件读取至内存: 处理数据过程中: 内存写入至文件. 那么二进制安全是什么?通俗来说就是不会特殊 ...

  6. suse 12 sp3 利用shell脚本离线编译安装ansible

    # 测试环境是suse 12 sp3的系统,机器都是内网使用的,安装ansible真的很难顶 # 测试环境使用的python版本:2.7.13-27 # 此脚本只在本人测试环境成功,其他环境,需要选择 ...

  7. shell脚本实现自动化安装linux版本的loadrunner agent(centos6.8)

    #!/bin/bash #Centos6下安装LoadRunner负载机 #@author Agoly #@date #@source 高级测试技术交流圈: yum -y install expect ...

  8. 编译安装LAMP并实现wordpress

    author:JevonWei 版权声明:原创作品 软件环境 centos7.3 apr-1.5.2.tar.bz2 apr-util-1.5.4.tar.bz2 httpd-2.4.27.tar.b ...

  9. Apache web服务器(LAMP架构)(week3_day4)--技术流ken

    apache介绍 1).世界上使用率最高的网站服务器,最高时可达70%:官方网站:apache.org 2).http 超文本协议 HTML 超文本标记语言 3).URL 统一资源定位符 http:/ ...

  10. Apache web服务器(LAMP架构)

    Apache web服务器(LAMP架构) apache介绍 1).世界上使用率最高的网站服务器,最高时可达70%:官方网站:apache.org 2).http 超文本协议 HTML 超文本标记语言 ...

随机推荐

  1. Python3中的“加和”函数

    技术背景 其实如果没有专门去研究python的一些内置函数的话,我们都没办法发现一些很神奇的功能,即使是我们最熟悉的python中的sum函数.不知道还有多少人,以为这只是一个只能用来做求和的函数? ...

  2. 我让 ChatGPT 写了个 ChatGPT

    这家伙实在是火得过头了,索性讲个它的故事. 去年11月份,OpenAI 推出了 ChatGPT.  这里就不赘述这个家喻户晓玩意的常识了. 要说刚开始也没多少人在意,一个聊天机器人-- 谁稀罕呐. 但 ...

  3. 安卓逆向 HOOK 第二课 普通方法的HOOK

    先分析关键代码 静态分析结果这是一个boolean返回值的方法,该将用户名和注册码作为参数传进来,默认返回false.当用户名为空时,直接返回false.如果用户名长度不等于0且注册码不等于空且注册码 ...

  4. 配置项目请求地址和axios以及实现token过期无痛刷新

    配置请求地址:config->index.js 一个项目里通常有一个config->index.js,该文件包含了当前项目的请求地址,以及项目的版本信息. // 请求地址 const AP ...

  5. reids(2)概述与安装

    前言 redis安装在Linux服务器上,系统为centos7,安装的版本为redis6.2.10 下载与安装 下载地址:https://redis.io/download/#redis-downlo ...

  6. Vulhub 漏洞学习之:Fastjson

    Vulhub 漏洞学习之:Fastjson 目录 Vulhub 漏洞学习之:Fastjson 0 背景知识 0.1 FastJson POC解析 0.1.1 基于rmi的利用方式 0.1.2 基于ld ...

  7. PostgreSQL数据库所有的等待事件

    Wait Event Type Wait Event Name Description LWLock ShmemIndexLock Waiting to find or allocate space ...

  8. 【javascript】slice()、substring()和substr() 三种字符串截取方法区别

    slice(start, end) :slice(start, end) 方法可提取字符串的某个部分,并以新的字符串返回被提取的部分.  1.start(包含) 和 end(不包含) 参数来指定字符串 ...

  9. go并发实战(读书笔记1)

    go并发实战,第一天 大部分本书第一章节是来介绍go语言基础的,其实如果你不是大师,只是一个才起飞的菜鸟,建议不要跳过喔! 为什么不要跳过?因为每个人对语言的认知是不一样的,看看别人是怎么理解一个新事 ...

  10. python collection Chainmap Counter

    chainmap是一个方便的工具类.它是使用链的方式将多个dict链在一起, 并不是真正的生成一个新的dict,从而允许程序可以这获取任意一个dict 所包含的所有key对应的value. 但是由于式 ...