#!/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. .net core 读取配置文件的几种方式

    一.Json配置文件 1.这里的配置文件指的是下图 2.json配置文件示例 { "Logging": { "LogLevel": { "Defaul ...

  2. LeetCode 周赛 333,你管这叫 Medium 难度?

    本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 大家好,我是小彭. 上周是 LeetCode 第 333 场周赛,你参加了吗?这场周赛质量很高,但难度标得不 ...

  3. Python arcpy创建栅格、批量拼接栅格

      本文介绍基于Python语言arcpy模块,实现栅格影像图层建立与多幅遥感影像数据批量拼接(Mosaic)的操作.   首先,相关操作所需具体代码如下: import os import arcp ...

  4. 网关与网络地址(网络号)以及IP地址、广播地址

    转载新浪博客: http://blog.sina.com.cn/s/blog_406127500101i8bp.html

  5. 跳板攻击之:NPS代理转发

    跳板攻击之:NPS代理转发 目录 跳板攻击之:NPS代理转发 1 NPS介绍 2 NPS特点 3 实验环境 3.1 实验准备 3.2 实验拓扑 3.3 NPS配置 3.3.1 conf/nps.con ...

  6. .Net6 微服务之Ocelot+IdentityServer4入门看这篇就够了

    前言 .Net 6 使用 Consul 实现服务注册与发现 看这篇就够了.Net6 使用 Ocelot + Consul 看这篇就够了.Net6 微服务之Polly入门看这篇就够了 书接上文,本文将继 ...

  7. 解析关于Tomcat Servlet-request的获取请求参数及几种常用方法

    摘要:本文主要讲解Tomcat之Servlet-request请求参数.Servlet转发机制.常用方法 本文分享自华为云社区<浅谈Tomcat之Servlet-request获取请求参数及常用 ...

  8. 开源项目推荐:3D点云处理软件CloudCompare,

    3D point cloud and mesh processing software,Open Source Project,Based on Qt5. CloudCompare是一款基于GPL开源 ...

  9. 重磅!flink-table-store 将作为独立数据湖项目重新加入 Apache

    数据湖是大数据近年来的网红项目,大家熟知的开源数据湖三剑客 Apache hudi.Apache iceberg .Databricks delta 近年来野蛮生长,目前各自背后也都有商业公司支持,投 ...

  10. chai 3D 之网格对象

    推荐:将 NSDT场景编辑器 加入你的3D开发工具链 介绍 网格对象是由三角形和顶点组成的形状   在 CHAI3D 中,多边形网格是定义多面体对象形状的顶点和三角形的集合.   顶点是一个位置以及其 ...