通过编写 shell 脚本实现二进制安装 LAMP 架构的 word press
1. 准备httpd脚本
#!/bin/bashinstall_httpd(){. /etc/init.d/functionsinstall_dir=/apps/httpdmake_dir=/usr/localAPR=https://downloads.apache.org//apr/apr-1.7.0.tar.bz2APR_FILE=${APR##*/}APR_DIR=${APR_FILE%.tar*}APR_UTIL=https://downloads.apache.org//apr/apr-util-1.6.1.tar.gzAPR_UTIL_FILE=${APR_UTIL##*/}APR_UTIL_DIR=${APR_UTIL_FILE%.tar*}HTTPD=https://downloads.apache.org//httpd/httpd-2.4.46.tar.gzHTTPD_FILE=${HTTPD##*/}HTTPD_DIR=${HTTPD_FILE%.tar*}echo "开始编译安装httpd..."#安装httpd相关的包yum install -y wget gcc make pcre-devel openssl-devel expat-devel bzip2 &> /dev/null || { action "安装相关包失败" false; exit; }#下载并解压源码包cd $make_dir/src#wget $APR || { action "下载apr源码包失败" false; exit; }#wget $APR_UTIL || { action "下载apr-util源码包失败" false; exit; }#wget $HTTPD || { action "下载httpd源码包失败" false; exit; }tar xf $APR_FILE -C $make_dirtar xf $APR_UTIL_FILE -C $make_dirtar xf $HTTPD_FILE -C $make_dircd $make_dirmv $APR_DIR $HTTPD_DIR/srclib/aprmv $APR_UTIL_DIR $HTTPD_DIR/srclib/apr-utilcd $HTTPD_DIRecho "正在生成httpd数据文件..."./configure --prefix=/apps/httpd --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-included-apr --enable-modules=most --enable-mpms-shared=all --with-mpm=eventmake &> /dev/null && make install &> /dev/null && action "编译成功!" || { action "编译失败" false; exit; }#创建apache账户及htppd用户id apache &> /dev/null || useradd -s /sbin/nologin -r apachesed -i "s/^User .*/User apache/" $install_dir/conf/httpd.confsed -i "s/^Group .*/Group apache/" $install_dir/conf/httpd.conf#配置path变量echo 'PATH=/apps/httpd/bin:$PATH' > /etc/profile.d/httpd.shsource /etc/profile.d/httpd.sh#创建service unit文件(CentOS 7 以上版本)cat > /usr/lib/systemd/system/httpd.service <<EOF[Unit]Description=The Apache HTTP ServerAfter=network.target remote-fs.target nss-lookup.targetDocumentation=man:httpd(8)Documentation=man:apachectl(8)[Service]Type=forking#EnvironmentFile=/etc/sysconfig/httpdExecStart=/apps/httpd/bin/apachectl start#ExecStart=/apps/httpd/bin/httpd $OPTIONS -k startExecReload=/apps/httpd/bin/apachectl graceful#ExecReload=/apps/httpd/bin/httpd $OPTIONS -k gracefulExecStop=/apps/httpd/bin/apachectl stopKillSignal=SIGCONTPrivateTmp=true[Install]WantedBy=multi-user.targetEOF#修改httpd的配置支持php-fpmsed -i 's/^#LoadModule proxy_module .*/LoadModule proxy_module modules\/mod_proxy.so/ ' $install_dir/conf/httpd.confsed -i "s/^#LoadModule proxy_fcgi_module .*/LoadModule proxy_fcgi_module modules\/mod_proxy_fcgi.so/" $install_dir/conf/httpd.confsed -i "s/^ DirectoryIndex .*/ DirectoryIndex index.php index.html/" $install_dir/conf/httpd.confecho 'AddType application/x-httpd-php .php#AddType application/x-httpd-php-source .phpsProxyRequests Off<virtualhost *:80>servername blog.magedu.orgdocumentroot /data/wordpress<directory /data/wordpress>require all granted</directory>ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/wordpress/$1#实现status和ping页面ProxyPassMatch ^/(fpm_status|ping)$ fcgi://127.0.0.1:9000/$1CustomLog "logs/access_wordpress_log" common</virtualhost>' >> /apps/httpd/conf/httpd.confsystemctl daemon-reloadsystemctl enable --now httpd &> /dev/null && action "httpd 服务启动成功" || { action "httpd 启动失败" false ;exit; }}
2. 准备数据库脚本
install_mariadb(){#FILE="https://mirrors.tuna.tsinghua.edu.cn/mariadb//mariadb-10.2.34/bintar-linux-systemd-x86_64/mariadb-10.2.34-linux-systemd-x86_64.tar.gz"NAME=mariadb-10.2.31-linux-systemd-x86_64.tar.gzMARIADB='mariadb-10.2.31-linux-systemd-x86_64'BASEDIR='/usr/local/mysql'PASSWORD='123456'echo "开始安装${MARIADB}..."#yum install libaio numactl-libs wget &> /dev/nullif id mysql &> /dev/null ;thenecho "mysql用户已经创建,"elseuseradd -r -s /sbin/nologin mysqlecho "mysql用户创建成功"fi#wget -P /usr/local/src $FILEcd /usr/local/srcecho "正在解压二进制包,请稍等..."tar xf $NAME -C /usr/local && echo "解压完成!" || { echo "解压失败,自动退出" ; exit ; }ln -s /usr/local/$MARIADB $BASEDIRchown -R mysql:mysql $BASEDIRecho 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.shsource /etc/profile.d/mysql.shcp /etc/my.cnf{,.bak}cat > /etc/my.cnf <<EOF[mysqld]datadir=/data/mysqlskip_name_resolve=1socket=/data/mysql/mysql.socklog-error=/data/mysql/mysql.logpid-file=/data/mysql/mysql.pid[client]socket=/data/mysql/mysql.sockEOFecho "数据库安装文件准备成功,正在生成数据库文件..."cd $BASEDIRbash scripts/mysql_install_db --datadir=/data/mysql/ --user=mysql --basedir=$BASEDIR &> /dev/nullif [ $? = 0 ];thenecho "数据库文件生成成功,正在启动..."elseecho "数据库文件生成失败,自动退出!"exitficp support-files/systemd/mariadb.service /etc/systemd/system/systemctl daemon-reloadif systemctl start mariadb ;thenecho "数据库启动成功,正在执行安全加固脚本..."elseecho "数据库启动失败,自动退出"exitfiln -s /data/mysql/mysql.sock /tmp/mysql.sockbash $BASEDIR/bin/mysql_secure_installation &> /dev/null <<EOFy$PASSWORD$PASSWORDyyyyEOFecho "${MARIADB}已经安装完成"#为wordprss创建数据库用户账号/usr/local/mysql/bin/mysql -uroot -p123456 -e 'create database wordpress'/usr/local/mysql/bin/mysql -uroot -p123456 -e "grant all on wordpress.* to wordpress@'10.0.%.%' identified by '123456'"}
3. 准备php脚本
install_php(){. /etc/init.d/functionsmake_dir=/usr/localPHP=https://www.php.net/distributions/php-7.3.15.tar.xzPHP_FILE=${PHP##*/}PHP_DIR=${PHP_FILE%.tar*}INSTALL_DIR=/apps/phpecho "正在准备安装${PHP_DIR}..."#安装php的相关包yum -y install gcc libxml2-devel bzip2-devel libmcrypt-devel openssl-devel wget &> /dev/null || { action "PHP安装相关包失败" false; exit; }#下载php源码包#wget -P $make_dir/src $PHP || { action "下载php包失败" false; exit; }cd $make_dir/srctar xf $PHP_FILE -C $make_dircd $make_dir/$PHP_DIRecho "php正在编译中,请稍等..."./configure --prefix=/apps/php --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --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-fileinfomake && make install && action "php编译成功!" || { action "php编译失败" false; exit; }#配置path变量echo 'PATH=/apps/php/bin:$PATH' > /etc/profile.d/php.shsource /etc/profile.d/php.sh#准备php配置文件和启动脚本cp $make_dir/$PHP_DIR/php.ini-production $INSTALL_DIR/etc/php.inicp $make_dir/$PHP_DIR/sapi/fpm/php-fpm.service /usr/lib/systemd/system/cd $INSTALL_DIR/etccp php-fpm.conf.default php-fpm.confcd php-fpm.d/cp www.conf.default www.confsed -i "s/^user .*/user = apache/" $INSTALL_DIR/etc/php-fpm.d/www.confsed -i "s/^group .*/group = apache/" $INSTALL_DIR/etc/php-fpm.d/www.conf#sed -i.bak "s/^;pm.status_path .*/pm.status_path = //fpm_status/" $INSTALL_DIR/etc/php-fpm.d/www.conf#sed -i.bak "s/^;ping.path .*/ping.path = //ping/" $INSTALL_DIR/etc/php-fpm.d/www.confecho 'pm.status_path = /fpm_status' >> $INSTALL_DIR/etc/php-fpm.d/www.confecho 'ping.path = /ping' >> $INSTALL_DIR/etc/php-fpm.d/www.confmkdir $INSTALL_DIR/etc/php.d/cat > $INSTALL_DIR/etc/php.d/opcache.ini <<EOF[opcache]zend_extension=opcache.soopcache.enable=1EOFsystemctl daemon-reloadsystemctl enable --now php-fpm.service &> /dev/null && action "php 服务启动成功" || { action "php 启动失败" false ;exit; }}
4. 准备wordpress文件
echo "准备wordpress文件..."#wget -P /usr/local/src https://cn.wordpress.org/latest-zh_CN.zip &> /dev/nulltar xf wordpress-5.4.2-zh_CN.tar.gzmv wordpress/ /datachown -R apache.apache wordpress/
5. 最后修改windows的hosts文件

在最末尾加上10.0.1.17 blog.magedu.org

完成,接下来根据提示配置即可
**
