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

很多人觉得企业网络管理很虚,其实核心就三件事:让机器自动干活(Shell)、把网站跑起来(LNMP)、把环境打包带走(Docker)。本文不讲理论,只讲怎么用。


一、为什么是这三个技术?

在企业里,运维工程师的日常通常是这样的:

  1. 服务器磁盘快满了,要自动清理日志 → Shell脚本

  2. 公司要上线一个新官网 → LNMP架构

  3. 开发说"在我电脑上好好的",到了服务器就报错 → 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架构:企业网站的标配

LNMP(Linux + Nginx + MySQL + PHP)是目前最流行的Web服务架构之一。相比传统的Apache,Nginx在高并发下性能更好。

1. 架构逻辑

  • Linux:操作系统地基。

  • Nginx:接待员,负责接收用户请求,分发静态文件(图片、CSS)。

  • PHP:厨师,处理动态逻辑(比如用户登录)。

  • MySQL:仓库,存储账号、文章内容等数据。

2. 核心配置思路(以CentOS为例)

(1)安装Nginx

复制代码
yum install nginx -y
systemctl start nginx

访问服务器IP,看到"Welcome to nginx!"说明成功。

(2)安装MySQL(MariaDB)

复制代码
yum install mariadb-server -y
systemctl start mariadb
mysql_secure_installation  # 设置root密码,移除匿名用户

(3)安装PHP

复制代码
yum install php php-fpm php-mysql -y
systemctl start php-fpm

(4)让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;
}

重启Nginx:systemctl restart nginx

(5)测试

在 /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 80

(2)准备Nginx配置(default.conf)

复制代码
server {
    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​ 环境一致性 镜像即环境,一次打包,随处运行​
相关推荐
梦想不只是梦与想1 小时前
docker-compose.yml
docker·docker-compose·docker run
福兮说3 小时前
设计稿是 #4A7C6F,页面量出来是 #4B7C6F:HEX、HSL、透明度、canvas 来回转的七个坑
前端·javascript·css·canvas
郑州光合科技余经理3 小时前
海外版外卖加盟:总站与分站配送规则怎么分开管
java·开发语言·前端·后端·uni-app·php·ai编程
小呆呆6664 小时前
副业搞起来,小说,漫画,漫剧的成本优化思路
前端·后端·面试
Dovis(誓平步青云)4 小时前
浇水提醒刚弹出又消失,植物状态别只存一个百分比
开发语言·前端·javascript·pdf·ecmascript·电脑
码艺-Alimjan5 小时前
Vben Admin 新增维吾尔语 Vben-Modal的关键坑之一
前端·javascript·vue.js
可乐鸡翅yeah_5 小时前
hls.js 手动自定义 http 请求 loader,修改请求头实战
开发语言·前端·javascript·网络协议·http·ecmascript·m3u8在线
IT_陈寒5 小时前
Vite静态资源导入这个坑我帮你们踩过了
前端·人工智能·后端
广州华水科技6 小时前
大坝安全监测解决方案:单北斗GNSS形变监测系统应用与维护
前端
yivifu6 小时前
中文古籍电子书注释集成
前端·javascript·python·beautifulsoup·epub