#准备相关包mariadb-10.2.31-linux-x86_64.tar.gz,php-7.3.15.tar.xz,wordpress-5.4.2-zh_CN.tar.gz
#!/bin/bash
. /etc/init.d/functions
DIR=`pwd`
#二进制安装mariadb
#-------------------------------------------------------------------
echo -e "\e[1;31m 二进制安装mariadb \e[0m"
#安装依赖包
yum install libaio perl-Data-Dumper libtinfo* libncurses* autoconf -y
#解压二进制程序
tar xvf mariadb-10.2.31-linux-x86_64.tar.gz -C /usr/local &> /dev/null && action "解压二进制程序成功"
#将原文件创建为软链接
ln -sv /usr/local/mariadb-10.2.31-linux-x86_64 /usr/local/mysql &> /dev/null && action "创建软链接成功"
#创建mysql用户
id mysql &> /dev/null || useradd mysql -r -s /sbin/nologin -d /data/mysql && action "创建mysql用户成功"
chown -R mysql.mysql /usr/local/mysql/*
#创建mysql数据目录
ls -d /data/mysql &> /dev/null || mkdir -pv /data/mysql && chown -R mysql.mysql /data/mysql
#准备配置文件
cp /usr/local/mysql/support-files/my-large.cnf /etc/my.cnf
sed -r -i '/^\[mysqld\]/adatadir=/data/mysql' /etc/my.cnf
#创建数据库文件
/usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/data/mysql --basedir=/usr/local/mysql/ &> /dev/null && action "创建数据库文件成功"
#准备服务启动文件
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
/usr/sbin/chkconfig --add mysqld
/usr/sbin/chkconfig mysqld on # 设置为开机启动
service mysqld start
#环境变量
echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh
ln -sv /usr/local/mysql/bin/* /usr/bin/ &> /dev/null
action "环境变量创建成功"
#在数据库中创建wordpress数据库和用户
mysql -e "create database wordpress;"; mysql -e "grant all on wordpress.* to wpuser@'10.0.0.%' identified by '123456';"
action "数据库安装完成"
#编译安装http2.4.46
#-------------------------------------------------------------------
echo -e "\e[1;31m 编译安装http2.4.46 \e[0m"
cd $DIR
# 安装相关包
yum -y install wget gcc make pcre-devel openssl-devel expat-devel &> /dev/null && action "安装依赖包成功"
# 下载源代码并解压缩
target_dir=/usr/local/src
install_dir=/apps/httpd
wget -P $target_dir https://mirror.bit.edu.cn/apache//apr/apr-1.7.0.tar.gz &> /dev/null
wget -P $target_dir https://mirror.bit.edu.cn/apache//apr/apr-util-1.6.1.tar.gz &> /dev/null
wget -P $target_dir https://mirrors.bfsu.edu.cn/apache//httpd/httpd-2.4.46.tar.gz &> /dev/null
cd $target_dir
tar xf apr-1.7.0.tar.gz
tar xf apr-util-1.6.1.tar.gz
tar xf httpd-2.4.46.tar.gz
action "源码下载解压完成"
# 将apr和apr-util源码与httpd源码合并,三者共同编译安装
mv apr-1.7.0 httpd-2.4.46/srclib/apr
mv apr-util-1.6.1 httpd-2.4.46/srclib/apr-util
cd httpd-2.4.46/
./configure \
--prefix=$install_dir \
--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 &> /dev/null && action "编译完成" || { action "编译失败" false; exit; }
make -j `lscpu | grep "^CPU(s)" | awk '{print $NF}'` && make install &> /dev/null; action "httpd安装完成"
# 创建apache账户
id apache &> /dev/null || useradd -s /sbin/nologin -r apache
# 修改配置文件
sed -i 's/^User.*/User apache/' /apps/httpd/conf/httpd.conf
sed -i 's/^Group.*/Group apache/' /apps/httpd/conf/httpd.conf
# 配置环境变量
echo 'PATH="/apps/httpd/bin:$PATH"' > /etc/profile.d/httpd.sh
source /etc/profile.d/httpd.sh
# 配置man帮助
echo 'MANDATORY_MANPATH /apps/httpd/man' >> /etc/man_db.conf
# 创建service unit文件,设置开机启动
cat > /lib/systemd/system/httpd.service << EOF
[Unit]
Description=The Apache HTTP Server
Wants=httpd-init.service
After=network.target remote-fs.target nss-lookup.target httpd-init.service
Documentation=man:httpd.service(8)
Documentation=man:apachectl(8)
[Service]
Type=forking
ExecStart=/apps/httpd/bin/apachectl start
ExecReload=/apps/httpd/bin/apachectl graceful
ExecStop=/apps/httpd/bin/apachectl stop
KillSignal=SIGCONT
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
#启动服务
systemctl daemon-reload
systemctl enable --now httpd.service &> /dev/null && action "httpd服务启动成功" || { action "httpd服务启动失败,请检查配置文件" false; exit; }
#编译安装httpd模块方式 php-7.3
#-------------------------------------------------------------------
echo -e "\e[1;31m 编译安装php-7.3 \e[0m"
cd $DIR
#安装相关包
yum -y install gcc libxml2-devel bzip2-devel libmcrypt-devel &> /dev/null && action "依赖包安装成功"
#解压源码包
tar xf php-7.3.15.tar.xz && action "php源码包解压成功"
#编译php
cd php-7.3.15/
./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-fileinfo &> /dev/null && action "编译完成" || { action "编译失败" false; exit; }
make -j `lscpu | grep "^CPU(s)" | awk '{print $NF}'` && make install &> /dev/null; action "php安装完成"
#准备PATH环境变量
echo 'PATH="/apps/php/bin:$PATH"' > /etc/profile.d/php.sh
source /etc/profile.d/php.sh
#准备php配置文件和启动文件
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
cd php-fpm.d/
cp www.conf.default www.conf
#修改进程所有者
sed -i 's/^user.*/user = apache/' /apps/php/etc/php-fpm.d/www.conf
sed -i 's/^group.*/group = apache/' /apps/php/etc/php-fpm.d/www.conf
#支持status和ping页面
sed -i 's/^;pm.status.*/pm.status_path = \/pm_status/' /apps/php/etc/php-fpm.d/www.conf
sed -i 's/^;ping.*/ping.path = \/ping/' /apps/php/etc/php-fpm.d/www.conf
#支持opcache加速
mkdir /etc/php.d/
cat > /etc/php.d/opcache.ini << EOF
[opcache]
zend_extension=opcache.so
opcache.enable=1
EOF
#启动fpm服务
systemctl daemon-reload
systemctl enable --now php-fpm.service
#编辑 apache 配置文件支持 php
sed -i 's/^#LoadModule proxy_module modules\/mod_proxy.so/LoadModule proxy_module modules\/mod_proxy.so/' /apps/httpd/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/httpd/conf/httpd.conf
echo -e "AddType application/x-httpd-php .php\nProxyRequests Off" >> /apps/httpd/conf/httpd.conf
sed -i 's/DirectoryIndex index.html/DirectoryIndex index.php index.html/' /apps/httpd/conf/httpd.conf
#实现第一个虚拟主机,数据目录放在/data/wordpress下
cat >> /apps/httpd/conf/httpd.conf << EOF
<virtualhost *:80>
servername blog.magedu.org
documentroot /data/wordpress
<directory /data/wordpress>
require all granted
</directory>
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/wordpress/$1
ProxyPassMatch ^/(pm_status|ping)$ fcgi://127.0.0.1:9000/$1
CustomLog "logs/access_wordpress_log" common
</virtualhost>
EOF
systemctl restart httpd #重启httpd
action "编辑apache配置文件支持php成功"
#部署wordpress
#-------------------------------------------------------------------
echo -e "\e[1;31m 部署wordpress \e[0m"
cd $DIR
#解压wordpress源包
tar xf wordpress-5.4.2-zh_CN.tar.gz && action "wordpress解压成功"
#移动到wordpress到/data目录下
mv wordpress/ /data
#修改wordpress文件权限
chown -R apache.apache /data/wordpress/
echo -e "\e[1;33m LAMP部署wordpress已完成,配置主机域名进行页面安装 \e[0m"
#测试访问