Mars 6ddba3e722 Initial commit
feat: 完成 Zsh 插件配置脚本的优化和测试 - 修复 autojump 配置冲突 - 清理重复的插件安装 - 优化脚本结构和注释

feat: 优化shell脚本 - 1. 增强错误处理和恢复机制 2. 添加网络连接优化和镜像源支持 3. 改进进度显示和用户交互 4. 优化配置文件管理和备份 5. 改进插件管理机制 6. 增强依赖检查和安装 7. 添加完整的日志记录功能 8. 修复字体安装相关问题

docs: 完善shell、system和utils部分的README文档 - 1. 添加详细的脚本说明和使用方法 2. 补充依赖要求和注意事项 3. 添加常见问题解答 4. 更新版本日志

feat(editor): 优化 neovim 和 nvchad 安装脚本,添加性能优化配置和详细文档

feat: 优化Python开发环境安装脚本,分离基础包和机器学习包,修复virtualenvwrapper配置

feat: 优化开发工具安装脚本,统一使用common.sh中的函数,改进错误处理

fix: 修复DNMP安装脚本,跳过自动配置PHP开发环境

fix: 提交删除的 init.sh 和 mysql.sh 文件
2025-03-25 16:14:03 +08:00

156 lines
3.6 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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
<?php
phpinfo();
EOF
log_info "DNMP配置完成"
}
# 启动DNMP
start_dnmp() {
log_info "启动DNMP..."
cd /opt/dnmp
# 启动服务
docker-compose up -d
# 等待服务启动
sleep 10
# 检查服务状态
docker-compose ps
log_info "DNMP启动完成"
}
# 创建别名文件
create_alias_file() {
log_info "创建命令别名文件..."
cat > /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