作业(七)

作业(七)

通过编写 shell 脚本实现二进制安装 LAMP 架构的 word press

#!/bin/bash
#
#***************************************************
#Author:           hukun
#QQ:               429095598
#Date:             2020-10-31
#FuleName:         word_press.sh
#Description:          The test script
#***************************************************
#二进制安装LAMP架构的word_press
. /etc/init.d/functions
#HTTPD变量
#准备好wordpress程序文件wordpress-5.4.2-zh_CN.tar.gz
HTTP=httpd-2.4.46
APR=apr-1.7.0
APR_UTIL=apr-util-1.6.1
HTTPD_DATA=/apps/httpd
WP=wordpress-5.4.2-zh_CN.tar.gz
WPDATA=${WP%%-*}
#MYSQL变量
#准备好MYSQL二进制安装包mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
NAME='mysql-5.7.30-linux-glibc2.12-x86_64'
PASS1=123456
MYSQLD_DATA=/apps/mysql
#PHP变量
#准备好PHP源码包php-7.4.7.tar.bz2
PHP=php-7.4.7.tar.bz2
PHPDATA=${PHP%.tar.bz2*}
DATA=/apps/php

http_install (){
    #安装相关包
    yum -y install wget lbzip2 gcc make pcre-devel openssl-devel expat-devel
    #下载源码包
    wget -P /usr/local/src/ https://downloads.apache.org//apr/${APR}.tar.bz2
    wget -P /usr/local/src/ https://downloads.apache.org//apr/${APR_UTIL}.tar.bz2
    wget -P /usr/local/src/ https://downloads.apache.org//httpd/${HTTP}.tar.bz2
    #解压源码包
    cd /usr/local/src/
    tar xf ${APR}.tar.bz2
    tar xf ${APR_UTIL}.tar.bz2
    tar xf ${HTTP}.tar.bz2
    #将apr和apr-util源码与httpd源码合并
    mv ${APR} ${HTTP}/srclib/apr
    mv ${APR_UTIL} ${HTTP}/srclib/apr-util
    #编译安装
    cd ${HTTP}/
    ./configure --prefix=${HTTPD_DATA} --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 -j 4 && make install
    #创建apache用户
    useradd -s /sbin/nologin -r apache
    #指定运行httpd的用户
    sed -i -e "s/^User .*/User apache/" -e "s/^Group .*/Group apache/" -e "s/^#LoadModule proxy_module modules\/mod_proxy.so/LoadModule proxy_module modules\/mod_proxy.so/" -e "s/^#LoadModule proxy_fcgi_module modules\/mod_proxy_fcgi.so/LoadModule proxy_fcgi_module modules\/mod_proxy_fcgi.so/" -e "s/DirectoryIndex index.html/DirectoryIndex index.php index.html/" ${HTTPD_DATA}/conf/httpd.conf
    #配置环境变量
    echo "PATH=/apps/httpd/bin:\$PATH" >> /etc/profile.d/httpd.sh
    . /etc/profile.d/httpd.sh
    #配置帮助
    echo "MANDATORY_MANPATH                       /apps/httpd/man" >> /etc/man_db.conf
    #创建service unit文件
    cat > /usr/lib/systemd/system/httpd.service<<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
ExecStart=${HTTPD_DATA}/bin/apachectl start
ExecReload=${HTTPD_DATA}/bin/apachectl graceful
ExecStop=${HTTPD_DATA}/bin/apachectl stop
KillSignal=SIGCONT
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF
    #设置开机启动
    systemctl daemon-reload
    systemctl enable --now httpd.service
}

mysql_install (){
    #安装mysql相关模块文件
    yum  -y install libaio numactl-libs
    #创建mysql用户
    useradd -s /sbin/nologin -r  mysql
    #准备数据库路径、二进制日志文件夹
    mkdir -vp /data/mysql
    #解压二进制安装文件
    tar xf ${NAME}.tar.gz -C  /usr/local
    cd /usr/local/
    ln -s /usr/local/${NAME} ${MYSQLD_DATA}
    chown -R root.root ${MYSQLD_DATA}
    chown -R mysql.mysql /data/mysql
    #设置PATH变量
    ln -s ${MYSQLD_DATA}/bin/* /usr/bin/
    #修改mysql配置文件
    cp /etc/my.cnf{,.bak}
    IP=`hostname -I | cut -d. -f4`
    cat > /etc/my.cnf << EOF
[mysqld]
server-id=${IP}
datadir=/data/mysql
skip_name_resolve=on
socket=/data/mysql/mysql.sock       
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
basedir=${MYSQLD_DATA}
log_bin
[client]
socket=/data/mysql/mysql.sock
EOF
    #生成数据库文件
    mysqld --initialize --user=mysql --datadir=/data/mysql
    #开机自启脚本复制到系统配置文件里
    cp ${MYSQLD_DATA}/support-files/mysql.server  /etc/init.d/mysqld
    #设置mysql开机自启
    chkconfig --add mysqld
    service mysqld start
    #设置mysql密码
    PASS2=`awk '/temporary password/{print $NF}' /data/mysql/mysql.log`
    mysqladmin -uroot -p"${PASS2}" password "${PASS1}"
    #为wordpress和discuz应用准备数据库和用户账号
    mysql -uroot -p"${PASS1}" -e "create database wordpress;"
    mysql -uroot -p"${PASS1}" -e "create database discuz;"
    mysql -uroot -p"${PASS1}" -e "grant all on wordpress.* to wordpress@'10.0.0.%' identified by '${PASS1}';"
    mysql -uroot -p"${PASS1}" -e "grant all on discuz.* to discuz@'10.0.0.%' identified by '${PASS1}';"
}

php_install (){
    #安装php相关包
    yum -y install bzip2 libxml2-devel bzip2-devel libmcrypt-devel sqlite-devel oniguruma-devel openssl-devel
    #编译安装php
    tar xf ${PHP} 
    cd ${PHPDATA}
    ./configure --prefix=${DATA} --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl    --with-zlib  --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --enable-mbstring --enable-xml --enable-sockets --enable-fpm --enable-maintainer-zts --disable-fileinfo
    make -j 4 && make install
    #设置环境变量
    echo "PATH=/apps/php/bin:\$PATH" >> /etc/profile.d/lamp.sh
    . /etc/profile.d/lamp.sh
    #准备php配置文件启动文件
    cp php.ini-production /etc/php.ini
    cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/
    cd ${DATA}/etc/
    cp php-fpm.conf.default php-fpm.conf
    cd php-fpm.d/
    cp www.conf.default www.conf
    #更改页面配置文件
    sed -i -e "s#^user .*#user = apache#" -e "s#^group .*#group = apache#" -e "s#^;pm\.status.*#pm\.status_path = /fpm_status#" -e "s#^;ping\.path .*#ping\.path = /ping#" www.conf
    #opcache加速
    mkdir /etc/php.d
    cat > /etc/php.d/opcache.ini <<EOF
[opcache]
zend_extension=opcache.so
opcache.enable=1
EOF

    #启动php服务
    systemctl daemon-reload
    systemctl enable --now php-fpm.service
}

config (){
    cat >> ${HTTPD_DATA}/conf/httpd.conf <<EOF
AddType application/x-httpd-php .php
ProxyRequests Off

<virtualhost *:80>
servername blog.php.local
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>

EOF
    #准备wordpress程序文件
    cd
    tar xf ${WP}
    mv ${WPDATA}/ /data/
    chown -R apache:apache /data/wordpress
    systemctl restart httpd
}
echo "正在安装apache..."
http_install &> /dev/null && action "apache安装完成!" || { action "apache安装失败,退出!" false ;exit 1; }

echo "正在安装mysql数据库..."
mysql_install &> /dev/null && action "mysql数据库安装完成!" || { action "mysql数据库安装失败,退出!" false ;exit 2; }

echo "正在安装php..."
php_install &> /dev/null && action "php安装完成!" || { action "php安装失败,退出!" false ;exit 3; }

echo "正在准备wordpress程序文件..."
config &> /dev/null && action "配置完成,请使用wordpress!" || { action "配置失败,请检查配置文件!" false ;exit 4; }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值