编写 shell 脚本实现二进制安装 LAMP 架构的 word press
环境准备
- 虚拟机 VMware
- OS centos8
- http 2.46
- mariadb 10.5.6
- php 7.4.12
前期准备
- 关闭防火墙
- 设置selinux=disabled
[root@83 data]# cat install_lamp.sh
#!/bin/bash
echo “提前准备好相关软件包”
# 安装相关依赖包
yum -y install libxml2-devel bzip2-devel libmcrypt-devel sqlite-devel openssl-devel autoconf automake libtool &> /dev/null
yum -y install gcc gcc-c++ make gzip wget curl pcre-devel expat-devel libaio-devel ncurses-compat-libs &> /dev/null
install_mariadb(){
echo "开始编译安装mariadb10.5.6"
# 创建用户
useradd -r -s /sbin/nologin mysql
# 解压软件包到相关目录下
tar xf mariadb-10.5.6-linux-systemd-x86_64.tar.gz -C /usr/local/
# 创建软连接并授权
cd /usr/local/;ln -s mariadb-10.5.6-linux-systemd-x86_64 mysql;chown -R root.root mysql
# 准备数据保存目录,并授权
mkdir -p /data/mysql;chown -R mysql.mysql /data/mysql
# 编写my.cnf配置文件
cat > /etc/my.cnf <<EOF
[mysqld]
# 指定数据库数据存放路径
datadir=/data/mysql
# 指定套间字路径
socket=/data/mysql/mysql.sock
# 设置日志文件路径
log-error=/data/mysql/mysqld.log
#关闭DNS反向解析
skip_name_resolve=on
port=3306
#pid-file=/tmp/mysql.pid
[client]
port=3306
# 指定套间字路径
socket=/data/mysql/mysql.sock
EOF
# 准备PATH变量
echo 'PATH=/usr/local/mysql/bin/:$PATH' > /etc/profile.d/lamp.sh
source /etc/profile.d/lamp.sh
ln -s /usr/local/mysql/bin/* /usr/bin/
# 执行脚本,进行数据库初始化
cd /usr/local/mysql; ./scripts/mariadb-install-db --user=mysql --datadir=/data/mysql &> /dev/null
# 将MySQL添加到开机自启
cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
systemctl daemon-reload
chkconfig --add mysqld
service mysqld start
#为wordpress应用准备数据库和用户
mysql -e "create database wordpress;create user 'wordpress'@'10.0.0.%' identified by '123456';grant all on wordpress.* to 'wordpress'@'10.0.0.%';"
echo "mysql 已安装成功,为wordpress创建的用户为:wordpress,密码:123456"
}
# 编译安装httpd
install_httpd(){
echo "正在安装httpd,请稍等"
cd /data
tar xf httpd-2.4.46.tar.gz
tar xf apr-1.7.0.tar.gz
tar xf apr-util-1.6.1.tar.gz
# 将依赖包复制到/srclib目录下并改名
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 /data/httpd-2.4.46
./configure --prefix=/opt/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=prefork &> /dev/null
make -j 2 &> /dev/null && make install &> /dev/null
# 创建用户和组并对目录文件授权
groupadd -g 71 apache
useradd -u 71 -g apache -s /sbin/nologin -r apache
chown -R apache.apache /opt/httpd
# 修改配置文件
sed -ri -e 's/(^User ).*/\1apache/' -e 's/(^Group ).*/\1apache/' /opt/httpd/conf/httpd.conf
# 编写service服务启动文件
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
#EnvironmentFile=/etc/sysconfig/httpd
ExecStart=/opt/httpd/bin/httpd $OPTIONS -k start
ExecReload=/opt/httpd/bin/httpd $OPTIONS -k graceful
ExecStop=/bin/kill -WINCH {MAINPID}
KillSignal=SIGCONT
PrivateTmp=true
EOF
# 重新加载服务
systemctl daemon-reload
systemctl restart httpd
echo "http已安装完成"
}
# 编译安装php
install_php(){
echo "正在编译安装PHP,请稍等"
# 先编译安装oniguruma
cd /data/;unzip oniguruma.zip &> /dev/null;cd oniguruma;bash autogen.sh &> /dev/null
./configure --prefix=/opt/oniguruma --libdir=/lib64 &> /dev/null
make -j 2 &> /dev/null && make install &> /dev/null
# 编译安装PHP
cd /data/;tar xf php-7.4.12.tar.gz
cd /data/php-7.4.12
./configure --prefix=/opt/php --enable-mysqlnd --with-mysqli=mysqlnd --with-openssl --with-pdo-mysql=mysqlnd --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/opt/httpd/bin/apxs --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --enable-maintainer-zts --disable-fileinfo &> /dev/null
make -j 2 &> /dev/null && make install &> /dev/null
libtool --finish /data/php-7.4.12/libs &> /dev/null
cp /data/php-7.4.12/php.ini-production /etc/php.ini
echo "PHP安装完成"
}
# 部署wordpress
install_wordpress(){
echo "配置wordpress"
# 修改http配置文件支持php
sed -ri -e '/AddType application\/x-gzip .gz .tgz/a AddType application\/x-httpd-php .php' -e '/AddType application\/x-gzip .gz .tgz/a AddType application\/x-httpd-php-source .phps' /opt/httpd/conf/httpd.conf
sed -ri 's/(DirectoryIndex).*(index.html)/\1 index.php \2/' /opt/httpd/conf/httpd.conf
cd /data/;tar xf wordpress5.4-zh_CN.tar.gz -C /opt/httpd/htdocs/
# 授权
chown -R apache.apache /opt/httpd/htdocs/wordpress
# 重启服务
systemctl restart httpd mysqld
echo "wordpress 已安装完成"
}
install_mariadb
install_httpd
install_php
install_wordpress