从零搭建企业级Web服务:Shell脚本 + LNMP + Docker 实战指南

📅 2026/7/13 13:39:51
从零搭建企业级Web服务:Shell脚本 + LNMP + Docker 实战指南
很多人觉得企业网络管理很虚其实核心就三件事让机器自动干活Shell、把网站跑起来LNMP、把环境打包带走Docker。本文不讲理论只讲怎么用。一、为什么是这三个技术在企业里运维工程师的日常通常是这样的服务器磁盘快满了要自动清理日志 →Shell脚本公司要上线一个新官网 →LNMP架构开发说“在我电脑上好好的”到了服务器就报错 →Docker容器掌握这三样你就掌握了中小企业80%的运维需求。二、Shell脚本服务器的“自动化管家”Shell不是编程语言而是命令的集合。它的核心价值在于把重复的人工操作变成一键执行。1. 最常见的应用场景每天凌晨2点备份数据库监控CPU/内存使用率超标发邮件新服务器初始化创建用户、装软件2. 实战自动备份网站目录假设你的网站放在/var/www/html你想每天打包备份。#!/bin/bash # 定义变量方便修改 BACKUP_DIR/backup WEB_DIR/var/www/html DATE$(date %Y%m%d) # 创建备份目录如果不存在 mkdir -p $BACKUP_DIR # 打包压缩 tar -czf $BACKUP_DIR/web_backup_$DATE.tar.gz $WEB_DIR # 删除7天前的旧备份节省空间 find $BACKUP_DIR -name web_backup_*.tar.gz -mtime 7 -delete echo 备份完成$BACKUP_DIR/web_backup_$DATE.tar.gz关键点解释#!/bin/bash告诉系统用bash解释器执行。$(date %Y%m%d)获取当前日期避免文件名重复。find ... -mtime 7 -delete这是运维的经典清理命令。如何运行chmod x backup.sh # 赋予执行权限 ./backup.sh # 运行脚本三、LNMP架构企业网站的标配LNMPLinux Nginx MySQL PHP是目前最流行的Web服务架构之一。相比传统的ApacheNginx在高并发下性能更好。1. 架构逻辑Linux操作系统地基。Nginx接待员负责接收用户请求分发静态文件图片、CSS。PHP厨师处理动态逻辑比如用户登录。MySQL仓库存储账号、文章内容等数据。2. 核心配置思路以CentOS为例1安装Nginxyum install nginx -y systemctl start nginx访问服务器IP看到“Welcome to nginx!”说明成功。2安装MySQLMariaDByum install mariadb-server -y systemctl start mariadb mysql_secure_installation # 设置root密码移除匿名用户3安装PHPyum install php php-fpm php-mysql -y systemctl start php-fpm4让Nginx识别PHP关键步骤编辑Nginx配置文件/etc/nginx/conf.d/default.conf找到location ~ \.php$这一段取消注释并修改为location ~ \.php$ { root /usr/share/nginx/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }重启Nginxsystemctl restart nginx5测试在/usr/share/nginx/html下新建info.php?php phpinfo(); ?浏览器访问http://你的IP/info.php能看到PHP信息页说明LNMP搭建成功。四、Docker一次构建到处运行Docker解决了“环境不一致”的难题。你可以把应用和它依赖的环境打包成一个“镜像”然后在任何安装了Docker的机器上运行。1. 核心概念镜像Image类似Windows的安装光盘只读模板。容器Container镜像运行后的实例相当于一台微型虚拟机。2. 实战用Docker部署一个LNMP环境不用手动装Nginx、PHP了直接用现成的镜像。1编写Dockerfile# 使用官方Nginx镜像作为基础 FROM nginx:latest # 删除默认的Nginx配置 RUN rm /etc/nginx/conf.d/default.conf # 将自己本地的Nginx配置文件复制到容器内 COPY default.conf /etc/nginx/conf.d/ # 将本地的网站代码复制到Nginx的根目录 COPY html /usr/share/nginx/html # 暴露80端口 EXPOSE 802准备Nginx配置default.confserver { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm index.php; } location ~ \.php$ { fastcgi_pass php-fpm:9000; # 这里连接另一个PHP容器 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name; include fastcgi_params; } }3构建与运行docker build -t my-web-app . docker run -d -p 80:80 --name web-container my-web-app现在访问服务器IP看到的将是你放在html文件夹里的网站内容。五、总结技术解决的问题一句话心法Shell​重复性劳动变量 命令 定时任务 (Cron)​LNMP​网站服务搭建Nginx处理静态PHP处理动态MySQL存数据​Docker​环境一致性镜像即环境一次打包随处运行​