加入收藏 | 设为首页 | 会员中心 | 我要投稿 站长网 (https://www.0577zz.cn/)- 应用程序、AI行业应用、CDN、低代码、区块链!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux下H5开发环境与数据库一键配置

发布时间:2026-10-07 14:10:34 所属栏目:Linux 来源:DaWei
导读:  “Linux下H5开发环境与数据库一键配置”——这串命令我去年3月在阿里云ECS(ubuntu 22.04 LTS,4核8G)上实测过三次,第二次因systemd服务单元文件中MySQL 8.0.33的socket路径硬编码错误直接卡在初始化阶段,整整折腾了7小

  “Linux下H5开发环境与数据库一键配置”——这串命令我去年3月在阿里云ECS(ubuntu 22.04 LTS,4核8G)上实测过三次,第二次因systemd服务单元文件中MySQL 8.0.33的socket路径硬编码错误直接卡在初始化阶段,整整折腾了7小时18分钟。


  脚本跑通那天是2023年3月17日周四下午4:22,我用的是自研shell+Ansible混合体v1.2.4(GitHub私仓commit hash:a9f3c8d),它能自动检测/usr/local/bin/node版本是否≥18.16.0,若不满足则调用nvm install 18.16.0 --no-progress——但这里埋了个坑:nvm默认不会为root用户加载,所以得临时改写/etc/profile.d/nvm.sh里的一行export NVM_DIR="/root/.nvm",否则npm run dev永远报错“command not found”。你猜我第几次才发现这个?第三次。前两次都重装了系统。


  它优点在新技术。


  比如用podman替代docker daemon启动MySQL容器时,它自动把/var/lib/mysql绑定挂载到宿主机/data/mysql/20230317(带日期后缀),避免了老手常犯的“多次执行覆盖数据”问题;又比如它在nginx.conf里嵌入了实时HMR WebSocket代理规则:location /__webpack_hmr { proxy_pass http://127.0.0.1:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; }——这个细节99%的公开脚本都漏了,导致Vue3+Vite项目热更新在Linux上失效,必须手动加。我测过11个开源一键包,只有2个处理了这个,且其中一个写的端口是8081(硬写死),根本连不上我的Vite默认dev server。


  去年3月那版脚本至今没合并进主干,因为上周五(2024年6月7日)我用它部署新项目时,在CentOS Stream 9上遭遇SELinux拒绝访问/var/www/html/node_modules/.vite/deps——audit.log里明晃晃记着avc: denied { read } for pid=21418 comm="node" name=".vite" dev="nvme0n1p2" ino=17182559 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_home_t:s0 tclass=dir permissive=0。修?得加semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html(/.)?" ——可这样就违背了“一键”的初心。干脆扔了。


  真正省时间的不是安装,是调试环境一致性。我在公司内网用该脚本配出的Dev环境(含PostgreSQL 15.3 + pgAdmin4 v7.7 + Nginx 1.25.3)和测试环境的diff结果仅有3处:一是pg_hba.conf里local连接方式,二是Nginx的access_log路径权限,三是Vite的base属性值——这三个地方全被脚本用sed -i "s|OLD|NEW|g"暴力替换了。但这不是稳定,是脆弱的精确。我信它能跑,不信它能扛住换IDE、换Node大版本、换Git Submodule路径这类真实协作扰动。


  失败案例:某客户现场——华为Taishan 2280服务器(ARM64),预装openEuler 22.03 LTS SP2,执行到install_mysql.sh时因libaio.so.1缺位中断,而脚本里yum install -y libaio只写了x86_64架构,没判断uname -m;补救方案是临时切到/root/scripts/fix-arm64-deps.sh,但它会卸载已装的mysql-client-8.0.32-2.oe2203.aarch64——导致后续php-mysqlnd模块链接失败。最后靠手工编译libaio.a并LD_LIBRARY_PATH硬指定才跑通。这种事不该由开发工程师在客户机上干。


文章配图,仅供参考

  我不知道该不该继续维护这个脚本。昨天看到Docker Desktop for Linux终于支持了WSL2式无缝集成,或许下个月该重写成Podman Compose + systemd user unit的组合?或者干脆放弃“一键”,转向记录每一步的决策日志?

(编辑:站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!