#!/bin/bash # 导入通用函数 source "$(dirname "$0")/../utils/common.sh" # 检查root权限 check_root # 检查Docker是否已安装 check_docker() { if ! command -v docker &> /dev/null; then log_info "Docker未安装,正在安装..." install_docker else log_info "Docker已安装" fi } # 安装Docker install_docker() { log_info "安装Docker..." curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh rm get-docker.sh # 将当前用户添加到docker组 sudo usermod -aG docker $USER log_info "Docker安装完成" } # 克隆DNMP仓库 clone_dnmp() { log_info "克隆DNMP仓库..." # 创建安装目录 sudo mkdir -p /opt/dnmp # 如果目录已存在且不为空,则清理 if [ -d "/opt/dnmp" ] && [ "$(ls -A /opt/dnmp)" ]; then log_info "清理已存在的DNMP目录..." sudo rm -rf /opt/dnmp/* fi # 克隆DNMP仓库 sudo git clone https://github.com/garymengcom/dnmp.git /opt/dnmp # 设置目录权限 sudo chown -R $USER:$USER /opt/dnmp log_info "DNMP仓库克隆完成" } # 配置DNMP configure_dnmp() { log_info "配置DNMP..." cd /opt/dnmp # 复制配置文件 cp docker-compose.sample.yml docker-compose.yml cp env.sample .env # 修改.env文件 sed -i 's/PHP_VERSION=7.4/PHP_VERSION=8.2/' .env sed -i 's/MYSQL_VERSION=5.7/MYSQL_VERSION=8.0/' .env sed -i 's/REDIS_VERSION=4.0/REDIS_VERSION=7.0/' .env # 创建网站目录 mkdir -p www # 创建默认网站 cat > www/index.php << EOF /opt/dnmp/bash.alias << EOF # PHP开发环境别名 alias dphp='docker exec -it php82 bash' alias dcomposer='docker exec -it php82 composer' alias dphpunit='docker exec -it php82 phpunit' alias dphpcs='docker exec -it php82 phpcs' alias dphpcbf='docker exec -it php82 phpcbf' EOF # 添加别名到用户shell配置 if [ -f ~/.zshrc ]; then echo "source /opt/dnmp/bash.alias" >> ~/.zshrc elif [ -f ~/.bashrc ]; then echo "source /opt/dnmp/bash.alias" >> ~/.bashrc fi log_info "命令别名文件创建完成" log_info "请运行 'source ~/.zshrc' 或 'source ~/.bashrc' 使别名生效" } # 主函数 main() { log_info "开始安装PHP开发环境..." # 检查并安装Docker check_docker # 克隆DNMP仓库 clone_dnmp # 配置DNMP configure_dnmp # 启动DNMP start_dnmp # 创建别名文件 create_alias_file log_info "PHP环境安装完成!" log_info "访问 http://localhost 查看PHP信息页面。" log_info "默认MySQL密码:123456" log_info "默认Redis密码:123456" log_info "DNMP安装目录:/opt/dnmp" log_info "" log_info "如需手动安装Composer,请执行以下步骤:" log_info "1. 进入PHP容器: dphp" log_info "2. 下载Composer: curl -sS https://getcomposer.org/installer | php" log_info "3. 安装Composer: mv composer.phar /usr/local/bin/composer" log_info "4. 配置镜像: composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/" } # 执行主函数 main