博客的再一次折腾

博客之前一直都是用的军哥的LNMP(Linux+Nginx+MySQL+PHP)一键安装脚本搭建WordPress网站,中间偶尔也用过宝塔、1pancel等,但用的最久的还是LNMP,但从2023年下半年,随着作者军哥用爱发电很多年后将网站卖给某公司,有大神发现LNMP.COM网站的代码里被恶意植入了后门代码,而该公司同时收购了oneinstack,同时期出现了恶意代码,LNMP和oneinstack一键网站环境安装包被广泛弃用。

当然替代方案还是有很多的,但还是想借此机会折腾一下新的,那就尝试一下秋水在佬的LCMP(Linux + Caddy + MariaDB + PHP)脚本(Github地址)。Caddy 2是一款现代、轻量级的开源Web服务器,以其简单的配置语法、内置自动HTTPS支持、动态配置和服务发现、现代的HTTP/2和HTTP/3支持、插件系统以及易于部署和管理而脱颖而出。当然论功能、生态、性能等,目前还是Nginx更强。

下面就来介绍如何用秋水大佬的LCMP一键脚本搭建WordPress。

目前支持的系统

  • Enterprise Linux 7 (CentOS 7, RHEL 7)
  • Enterprise Linux 8 (CentOS Stream 8, RHEL 8, Rocky Linux 8, AlmaLinux 8, Oracle Linux 8)
  • Enterprise Linux 9 (CentOS Stream 9, RHEL 9, Rocky Linux 9, AlmaLinux 9, Oracle Linux 9)
  • Debian 10
  • Debian 11
  • Debian 12
  • Ubuntu 20.04
  • Ubuntu 22.04

目前支持的软件

  • Caddy 2
  • MariaDB 10.11
  • PHP-7.4, PHP-8.0, PHP-8.1, PHP-8.2, PHP-8.3

开搞之前先把依赖安装一下

apt update && apt -y upgrade
apt install wget -y
apt install socat -y
apt install git -y

开始安装LCMP

  • 如果是Debian 10+ / Ubuntu 20.04+:
    apt-get -y install wget git
    git clone https://github.com/teddysun/lcmp.git
    cd lcmp
    chmod 755 *.sh
    ./lcmp.sh 2>&1 | tee lcmp.log
  • 如果是Enterprise Linux 7 / 8 / 9:
    yum -y install wget git
    git clone https://github.com/teddysun/lcmp.git
    cd lcmp
    chmod 755 *.sh
    ./lcmp.sh 2>&1 | tee lcmp.log

    等出现如下实样就代表LCMP安装好了

    LCMP (Linux + Caddy + MariaDB + PHP) installation complete

    个人感觉LCMP的操作命令和LNMP有点相似,因为它的添加虚拟主机的方式如下:

    lcmp vhost add

    是不是有点眼熟,无非是C和N的区别,具体命令及使用方式参考秋水大佬的Github
    至于Wordpress的建站过程就不啰嗦了,这应该都不是事。不过我在使用Wordpress上传照片或下载插件时碰到了权限问题需要注意一下(可能是我的个例),以往都是赋予网站目录为www用户的权限,使用Caddy后这样操作还是会出现在后台无法访问的问题,后来翻了很多网站,发现需要将网站目录赋予caddy用户权限即可解决,具体操作为(假设网站目录为/data/www/下)

    chown -R caddy:caddy /data/www/*

    既然网站搭好了,必要的备份措施还是要的,秋水大佬的一键脚本里目前没有备份脚本,这里从军哥的Github里提取了backup.sh魔改一番就可以了,除了本地备份外还将备份文件上传到阿里云的OSS中,这样形成双备份以免意外发生,下面是大概的过程及代码:

    配置阿里云的ossutil

  • 安装ossutil(参考官方教程https://help.aliyun.com/zh/oss/developer-reference/install-ossutil?spm=a2c4g.11186623.0.0.5ed75436NQwjIE)
    sudo -v ; curl https://gosspublic.alicdn.com/ossutil/install.sh | sudo bash
  • 配置ossutil
    ossutil config

    根据提示分别设置Endpoint、AccessKey ID、AccessKey Secret和STSToken参数,对应的值怎么获取阿里云上都有,唯独需要注意的是stsToken这个值官方讲的我一直没怎么明白,浪费了很多时间,后来才知道可以直接回车留空即可,唉!

    魔改备份脚本

    # 设置网站备份路径
    Backup_Home="/data/www/backup/"
    # 设置数据库路径
    MySQL_Dump="/usr/bin/mysqldump"
    # 设置需要备份的网站路径
    Backup_Dir=("/data/www/a.com" "/data/wwww/b.com")
    # 设置需要备份的数据库名称,不同的数据表以空格间隔
    Backup_Database=("wordpress_" "typecho_")
    # 设置Mysql的用户名和密码
    MYSQL_UserName='root'
    MYSQL_PassWord='123456'
    TodayWWWBackup=www-*-$(date +"%Y%m%d").tar.gz
    TodayDBBackup=db-*-$(date +"%Y%m%d").sql
    OldWWWBackup=www-*-$(date -d -3day +"%Y%m%d").tar.gz
    OldDBBackup=db-*-$(date -d -3day +"%Y%m%d").sql
    Backup_Dir()
    {
    Backup_Path=$1
    Dir_Name=`echo ${Backup_Path##*/}`
    Pre_Dir=`echo ${Backup_Path}|sed 's/'${Dir_Name}'//g'`
    tar zcf ${Backup_Home}www-${Dir_Name}-$(date +"%Y%m%d").tar.gz -C ${Pre_Dir} ${Dir_Name}
    }
    Backup_Sql()
    {
    ${MySQL_Dump} -u$MYSQL_UserName -p$MYSQL_PassWord $1 > ${Backup_Home}db-$1-$(date +"%Y%m%d").sql
    }
    if [ ! -f ${MySQL_Dump} ]; then  
    echo "mysqldump command not found.please check your setting."
    exit 1
    fi
    if [ ! -d ${Backup_Home} ]; then  
    mkdir -p ${Backup_Home}
    fi
    echo "Backup website files..."
    for dd in ${Backup_Dir[@]};do
    Backup_Dir ${dd}
    done
    echo "Backup Databases..."
    for db in ${Backup_Database[@]};do
    Backup_Sql ${db}
    done
    echo "Delete old backup files..."
    rm -f ${Backup_Home}${OldWWWBackup}
    rm -f ${Backup_Home}${OldDBBackup}
    # 将备份的数据库上传到阿里云,将Bucket-name改为对应名称
    ossutil cp -r -f /data/www/backup/$TodayDBBackup oss://Bucket-name/
    ossutil cp -r -f /data/www/backup/$TodayWWWBackup oss://Bucket-name/

    测试一下,备份目录下有相应的文件,然后再到阿里云OSS中查看,都有说明就成功了,这里只将数据库文件上传到阿里云的OSS。最后记得添加一条计划任务,具体可参考如下:

    [root@localhost ~]# crontab -e
    选项:
    -e:    编辑crontab定时任务
    -l:    查询crontab任务
    -r:    删除当前用户所有的crontab任务
    0 14 * * * /bin/bash /data/www/backup/backup.sh

    终于折腾完了,可以看会剧去了。

6 条评论

  1. Microsoft Edge 122 Microsoft Edge 122 Windows 10 Windows 10

    我每天直接用群晖的套件进行备份,也很方便,保留十个版本,方便回滚。

    1. Microsoft Edge 122 Microsoft Edge 122 Windows 10 Windows 10

      群晖的套件保留Windows下确实方便,我自己也在用,Linux下倒是不知道有没有客户端可以实现

回复 Feng 博主 取消回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注