服务器与部署 / 技术笔记

Linux 环境配置

从一台刚创建的服务器开始,建立可重复、可维护并且方便排错的运行环境。

内容章节
6 节
阅读重点
权限与运行环境
示例语言
Shell

一台新服务器能够登录,只能说明远程连接已经可用。运行项目还需要清楚规划用户权限、目录、运行时、环境变量和服务管理。

文本示意

text

开发环境能运行服务器也要用相同版本和配置运行

环境配置最重要的目标是可以重复创建,每台服务器都能依据同一份记录得到一致结果。

1. Linux 环境配置的核心是可重复

手动输入过但没有记录的命令,很难在迁移服务器时重新执行。应当记录系统版本、软件版本、安装步骤和配置位置。

终端命令

bash

uname -anode --versionnginx -v

更进一步,可以把安装命令、服务文件和配置模板放进项目文档或自动化脚本中。

2. 用户、权限和目录怎样规划

应用不应该长期使用 root 身份运行。为服务建立独立用户,可以限制它能够访问的范围。

终端命令

bash

sudo useradd --system --create-home --shell /usr/sbin/nologin webappsudo mkdir -p /srv/webappsudo chown -R webapp:webapp /srv/webapp

代码、配置、日志和持久化数据最好分开。遇到权限错误时,先检查运行用户和目录所有者,不要直接使用 chmod 777

3. 环境变量放在哪里

环境变量适合保存会随环境变化的配置,例如端口、数据库地址和运行模式。

终端命令

bash

NODE_ENV=productionPORT=3000DATABASE_URL=mysql://app:password@127.0.0.1/app

敏感值不应该写进 Git。登录终端和 systemd 服务分别拥有自己的变量上下文,需要在实际运行环境中确认取值。

4. systemd 如何守护服务

systemd 可以启动应用、在异常退出后重启,并统一收集标准输出。

终端命令

bash

[Unit]Description=Web applicationAfter=network.target
[Service]User=webappWorkingDirectory=/srv/webappEnvironmentFile=/etc/webapp.envExecStart=/usr/bin/npm startRestart=on-failure
[Install]WantedBy=multi-user.target

修改服务文件后,需要重新加载配置并重启服务。

终端命令

bash

sudo systemctl daemon-reloadsudo systemctl enable --now webapp

5. 日志和端口怎样排查

服务无法访问时,先确认进程是否运行,再确认端口是否监听。

终端命令

bash

systemctl status webappjournalctl -u webapp -n 100 --no-pagerss -lntpcurl -I http://127.0.0.1:3000

如果本机可以访问而外部不行,再检查防火墙、安全组和反向代理。逐层验证比一次修改所有配置更可靠。

6. 一台新服务器的配置顺序

可以按下面的顺序建立环境:

文本示意

text

更新系统并校准时间创建应用用户和目录安装固定版本的运行时写入环境配置用 systemd 启动服务检查本机端口和日志最后接入防火墙与反向代理

每一步都留下可以验证的结果,后续排错时就能快速判断问题出现在哪一层。