Lecture02-Nginx-Ubuntu安装与AppArmor放行

文章目录

    [toc]

    单词词性音标含义
    installv./ɪnˈstɔːl/安装(用 apt 安装软件)
    statusn./ˈsteɪtəs/状态(服务当前运行情况)
    enablev./ɪˈneɪbl/启用(这里指设置开机自启)
    reloadv./ˌriːˈləʊd/重载(不中断服务地重新加载配置)
    AppArmorn./ˈæpˌɑːmər/Ubuntu 的访问控制模块(限制程序读写路径)

    Lecture02-Nginx-Ubuntu安装与AppArmor放行

    1、本节讲什么

    在 Ubuntu 上装好 Nginx,掌握启停、查看状态、配置文件位置。装完能用浏览器/curl 访问到 Nginx 默认欢迎页,就算成。

    2、照着做(命令逐步来)

    ① 更新软件源并安装

    sudo apt update
    sudo apt install nginx -y
    

    ② 查看安装版本和状态

    nginx -v                # 看版本,装成功的第一步
    sudo systemctl status nginx   # 看运行状态(active (running) 才对)
    

    ③ 启动、开机自启、重载配置

    sudo systemctl start nginx      # 启动
    sudo systemctl enable nginx     # 设置开机自启(服务器重启后自动起来)
    sudo systemctl reload nginx     # 改了配置后重载(不中断服务)
    sudo systemctl restart nginx    # 重启(会短暂中断,改了端口等才用)
    

    ④ 验证能访问

    curl http://localhost        # 返回 Nginx 欢迎页 HTML 就成功
    

    浏览器打开 http://服务器IP 看到 "Welcome to nginx!" 页面即可。

    ⑤ 认识配置文件位置(后面所有配置都在这里改)

    路径作用
    /etc/nginx/nginx.conf主配置文件(全局配置 + 引入其他配置)
    /etc/nginx/sites-available/站点配置的"草稿区"
    /etc/nginx/sites-enabled/站点配置的"启用区"(软链接到 available)
    /etc/nginx/conf.d/额外的 .conf 配置片段
    /var/log/nginx/日志目录(主题 6 会讲)

    3、补充:AppArmor 对 Nginx 的限制与放行

    正常用默认配置(80 端口、默认日志 / 站点路径),AppArmor 全放行,不用管。只有当你改了 Nginx 读写文件的自定义路径(如自定义 access_log / error_log 目录、自定义 root 静态目录)时,才可能被 AppArmor 拦。 注意:改监听端口(如 listen 8080)AppArmor 一般不拦(网络规则已放行),重点留意的是文件路径。

    ① 怎么判断是不是 AppArmor 拦的

    sudo dmesg | grep -i 'denied' | tail          # 或 journalctl -xe | grep -i apparmor
    # 看到 apparmor="DENIED" ... profile="nginx" ... 就是它拦的
    

    ② 看 Nginx 的 profile 状态

    sudo apt install apparmor-utils -y            # 提供 aa-status / aa-complain 等工具
    sudo aa-status | grep -i nginx                # 看 nginx 是 enforce(强制)还是 complain
    

    ③ 放行自定义路径(编辑 profile)

    sudo vim /etc/apparmor.d/usr.sbin.nginx       # 在 { } 里加允许规则
    

    在文件里追加(例:允许自定义日志和静态目录):

      /data/logs/*.log w,       # 允许写自定义日志
      /data/www/** r,           # 允许读自定义静态目录
    

    ④ 重载 profile 生效

    sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.nginx
    

    ⑤ 排查用 complain 模式(只警告、不拦截)

    sudo aa-complain /usr/sbin/nginx     # 临时只记不拦,看日志确认到底需要哪些路径
    sudo aa-enforce /usr/sbin/nginx      # 排查完切回强制模式
    

    正确 vs 误区:别一上来 aa-disable 把整个防护关掉;先看 DENIED 日志确认是哪个路径,再精准放行;用 complain 模式排查最安全。

    4、常见疑问

    • Q:改完配置怎么生效? A:先 sudo nginx -t 测语法(见下),通过后 sudo systemctl reload nginx。改配置不用重启,reload 就行。
    • Q:端口被占用 / 启动失败怎么办? A:sudo systemctl status nginx 看报错;常是 80 端口被别的程序占用。改 Nginx 监听端口(/etc/nginx/sites-available/default 里的 listen 80)再 reload。
    • Q:改了配置但没生效? A:八成是没 nginx -t 通过,或改错了文件没被 include。先测语法:
      sudo nginx -t     # 显示 syntax is ok 且 test is successful 才对
      


    5、本节验证

    • 会用 apt 安装 Nginx 并查看状态 ✅
    • 会启停、开机自启、重载配置 ✅
    • 认识配置文件位置(nginx.conf / sites-available / sites-enabled / conf.d)✅
    • 会用 dmesg / aa-status 判断 AppArmor 拦截并精准放行 ✅
    end