Ubuntu系统使用LAMP架构搭建博客系统
#!/bin/bash
#-----------------------------------------------
# 脚本名称: LAMP_BLOG_SYSTEM.sh
# 作者: whao
# 创建时间: 2025-04-23
# 版本: v0.1
# 描述: Ubuntu系统使用LAMP架构搭建博客系统
#------------------------------------------------
#颜色定义
G="\e[32m"
W="\e[0m"
R="\e[31m"
Y="\e[33m"
B="\e[34m"
P="\e[35m"
#更新源
echo -e "$R===============进入服务安装阶段==============$W"
read -t1
apt update &>/dev/null
if [ $? -eq 0 ]; then
echo "软件包列表更新成功"
else
echo "软件包列表更新失败"
exit
fi
apt install firewalld -y &>/dev/null
if [ $? -eq 0 ]; then
echo "防火墙下载安装完成"
systemctl stop firewalld
systemctl disable firewalld
else
systemctl disable firewalld
fi
#下载服务软件
apt install apache2 -y &>/dev/null
if [ $? -eq 0 ]; then
echo "Apache下载安装完成"
systemctl start apache2
if [ $? -eq 0 ]; then
echo "Apache2启动成功"
else
echo "Apache2启动失败"
echo "注意查看端口等服务知否被占用"
fi
else
echo "Apache下载失败"
fi
apt install php -y &>/dev/null
if [ $? -eq 0 ]; then
VERSION=$(php -v | head -n1 | awk '{print $2}' | awk -F"." '{print $1"."$2}')
echo "PHP下载安装完成"
# systemctl start php${VERSION}-fpm.service
# if [ $? -eq 0 ]; then
# echo "PHP${VERSION}启动成功"
# else
# echo "PHP${VERSION}启动失败"
# fi
else
echo "PHP下载安装失败"
fi
apt install mysql-server -y &>/dev/null
if [ $? -eq 0 ]; then
echo "MySQL下载安装完成"
systemctl start mysql
if [ $? -eq 0 ]; then
echo "MySQL启动成功"
else
echo "MySQL启动失败"
fi
else
echo "MySQL下载失败"
fi
which wget &>/dev/null
if [ $? -eq 0 ];then
echo "wget 命令已有"
else
apt install wget -y &>/dev/null
echo "wget 命令下载完成"
fi
which unzip &>/dev/null
if [ $? -eq 0 ];then
echo "unzip 命令已有"
else
apt install unzip -y &>/dev/null
echo "unzip 命令下载完成"
fi
which curl &>/dev/null
if [ $? -eq 0 ];then
echo "curl 命令已有"
else
apt install curl -y &>/dev/null
echo "curl 命令下载完成"
fi
which net-tools &>/dev/null
if [ $? -eq 0 ];then
echo "ifconfig 命令包已有"
else
apt install net-tools -y &>/dev/null
echo "net-tools 命令包下载完成"
fi
echo -e "$R===========进入PHP服务定制阶段===============$W"
echo "VERSION=$(php -v | head -n1 | awk '{print $2}' | awk -F"." '{print $1"."$2}')
export VERSION" >> /etc/apache2/envvars
echo "PFM_PHP_DEPLOY=$(curl -s ${ip}/index.php |head -n 45 |tail -n1 |awk -F">" '{print $5}' |awk '{print $1}')N
export PFM_PHP_DEPLOY" >> /etc/apache2/envvars
#定制PHP
ls /etc/apache2/sites-enabled/000-default.conf
if [ $? -eq 0 ]; then
echo "目录下已文件,跳过步骤"
else
ln -s /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-enabled/
echo "已设置软链接"
fi
#步骤确认
echo '<?php phpinfo(); ?>' > /var/www/html/index.php
systemctl restart apache2
apt install curl -y &>/dev/null
# ip=$(ifconfig |grep -w "inet" |head -n1|awk '{print $2}')
# index=$(curl -s $ip/index.php)
#if [ $index == '<?php phpinfo(); ?>' ];then
# echo "PHP成功连接到/var/www/html"
# echo "进入FPM方式部署PHP"
#else
# echo "PHP可能安装有问题,中断脚本"
# exit
# fi
#FPM方式部署PHP
apt install php-fpm -y &>/dev/null
VERSION=$(php -v | head -n1 | awk '{print $2}' | awk -F"." '{print $1"."$2}')
FPM=$(ls /etc/php/${VERSION} |grep -w fpm)
if [ $FPM = 'fpm' ];then
echo "fpm配置下载成功"
else
echo "fpm配置下载失败"
fi
ln -sv /etc/apache2/mods-available/proxy_fcgi.load /etc/apache2/mods-enabled/proxy_fcgi.load
if [ $? -eq 0 ]; then
echo "proxy_fcgi.load设置软链接成功"
else
echo "proxy_fcgi.load软链接已设置"
fi
ln -sv /etc/apache2/mods-available/proxy.conf /etc/apache2/mods-enabled/proxy.conf
if [ $? -eq 0 ]; then
echo "proxy.conf设置软链接成功"
else
echo "proxy.conf软连接已设置"
fi
ln -sv /etc/apache2/mods-available/proxy.load /etc/apache2/mods-enabled/proxy.load
if [ $? -eq 0 ]; then
echo "proxy.load设置软链接成功"
else
echo "proxy.load软连接已设置"
fi
#验证软链接设置成功
PROXY=$(ls /etc/apache2/mods-enabled/ |grep -E "^proxy*" |xargs)
if [ "${PROXY}" = "proxy.conf proxy_fcgi.load proxy.load" ]; then
echo "软链接全部设置成功!!!!"
else
echo "软链接设置有问题,中断脚本查看原因"
fi
echo -e "$G===============定制php功能访问==============$W"
VERSION=$(php -v | head -n1 | awk '{print $2}' | awk -F"." '{print $1"."$2}')
echo -e '<FilesMatch ".+\.ph(ar|p|tml)$">\n SetHandler "proxy:unix:/run/php/php${VERSION}-fpm.sock|fcgi://localhost"\n </FilesMatch>' > /etc/apache2/mods-enabled/proxy.conf
#重启Apache2
systemctl restart apache2
if [ $? -eq 0 ]; then
echo "Apache2重启成功"
else
echo "Apache2重启失败"
exit
fi
echo -e "$G===========验证fpm-php是否部署完成==========$W"
ip=$(ifconfig |grep -w "inet" |head -n1|awk '{print $2}')
PFM_PHP_DEPLOY=$(curl -s ${ip}/index.php |head -n 45 |tail -n1 |awk -F">" '{print $5}' |awk '{print $1}')
if [ "${PFM_PHP_DEPLOY}" = "FPM/FastCGI" ]; then
echo "fpm-php部署成功!!!!"
else
echo "fpm-php部署失败!!!!"
exit
fi
#mysql部署
echo -e "$G==============进入MySQL部署阶段=============$W"
#安装php和mysql的模块
apt install php-fpm php-mysqlnd php-json php-gd php-xml php-mbstring php-zip -y &>/dev/null
if [ $? -eq 0 ]; then
echo "连接模块安装成功"
else
echo "连接模块安装失败"
exit
fi
mkdir /var/www/html/blog.com/ -p
echo '<?php echo "hello world"; ?>' > /var/www/html/blog.com/test.php
TEST_PHPa=$(cat /var/www/html/blog.com/test.php)
if [ "${TEST_PHPa}" = '<?php echo "hello world"; ?>' ]; then
echo "虚拟主机文件创建成功"
echo "写入数据完成"
else
echo "虚拟主机文件有问题,请注意!!!"
exit
fi
rm -rf /etc/apache2/sites-enabled/000-default.conf
if [ $? -eq 0 ]; then
echo "默认配置文件已删除"
else
echo "默认文件删除失败"
exit
fi
touch /etc/apache2/sites-enabled/blog.com.conf
VERSION=$(php -v | head -n1 | awk '{print $2}' | awk -F"." '{print $1"."$2}')
echo -e '<virtualhost *:80>\n DocumentRoot /var/www/html/blog.com/\n ServerName blog.sswang.com\n <FilesMatch \.php$>\n SetHandler "proxy:unix:/run/php/php${VERSION}-fpm.sock|fcgi://localhost"\n </FilesMatch>\n <Directory /var/www/html/blog.com/>\n Require all granted\n </Directory>\n</virtualhost>' > /etc/apache2/sites-enabled/blog.com.conf
if [ $? -eq 0 ]; then
echo "定制网站关联php配置编写完成"
else
echo "定制网站关联php配置编写失败"
exit
fi
systemctl restart apache2.service
if [ $? -eq 0 ]; then
echo "apache2.service重启成功"
else
echo "apache2.service重启失败"
exit
fi
ip=$(ifconfig |grep -w "inet" |head -n1|awk '{print $2}')
TEST_PHPb=$(curl -s ${ip}/test.php)
if [ "${TEST_PHPb}" = "hello world" ]; then
echo "php配置测试成功"
else
echo "php配置测试失败"
exit
fi
#设置mysql配置允许外部访问
sed -i "/^bind-address/s#127.0.0.1#${ip}#" /etc/mysql/mysql.conf.d/mysqld.cnf
TESTC=$(grep bind-address /etc/mysql/mysql.conf.d/mysqld.cnf |awk 'NR==1 {print $3}')
if [ "${TESTC}" = "$ip" ]; then
echo "MySQL配置ip设置成功"
else
echo "MySQL配置ip设置失败"
fi
#重启MySQL
systemctl restart mysql.service
if [ $? -eq 0 ]; then
echo "MySQL.service重启成功"
else
echo "MySQL.service重启失败"
exit
fi
ss -tan |grep ${ip}:3306
if [ $? -eq 0 ]; then
echo "MySQL配置ip验证成功"
else
echo "MySQL配置ip验证失败"
echo "请检查具体配置"
exit
fi
echo -e "$G==============进入MySQL定制阶段=============$W"
#设定MySQL登录信息
MYSQL_USER="root"
MYSQL_PASSWORD="123456"
#设定MySQL命令
MySQL_COMMANDS="
create database wordpress;
create user 'wordpresser'@'10.0.0.%' identified with mysql_native_password by '123456';
grant all on wordpress.* to 'wordpresser'@'10.0.0.%';
flush privileges;
"
#执行MySQL命令
mysql -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" <<< "$MySQL_COMMANDS"
echo -e "$G==============安装博客系统=============$W"
mkdir /data/softs -p
wget -P /data/softs/ https://cn.wordpress.org/latest-zh_CN.zip
if [ $? -eq 0 ]; then
echo "博客系统安装包下载完成"
else
echo "博客系统安装包下载失败"
exit
fi
unzip -q /data/softs/latest-zh_CN.zip -d /data/softs/
if [ $? -eq 0 ]; then
echo "安装包解压完成"
else
echo "安装包解压失败"
exit
fi
mv /data/softs/wordpress/* /var/www/html/blog.com/
if [ $? -eq 0 ]; then
echo "解压包转移完成"
else
echo "解压包转移失败"
exit
fi
chown -R www-data:www-data /var/www/html/blog.com
if [ $? -eq 0 ]; then
echo "属性定制完成"
else
echo "属性定制失败"
exit
fi
#清屏
clear
#结束语
echo -e "$P 至此,脚本之行已毕。 $W"
read -t1
echo -e "$P 仿若一场幽梦初醒,诸般指令皆如仙履轻踏,有序而终。$W"
read -t1
echo -e "$P 望此脚本如良驹,能为君驱驰于数字之野; $W"
read -t1
echo -e "$P 似灵舟,可载君遨游于信息之洋。 $W"
read -t1
echo -e "$P 他日若有新需,再启征程,共赴胜境 $W"
read -t1