Linux 基本操作与服务器部署
一、Linux 系统基础
Linux 是开源的类 Unix 操作系统内核,广泛应用于服务器、云计算和嵌入式设备。核心特点:
- 开源免费:可自由修改和分发
- 多用户多任务:支持多用户同时操作
- 安全性高:完善的权限管理机制
- 稳定性强:服务器可长期运行不重启
1.1 Linux 发行版比较
发行版 | 特点 | 适用场景 |
---|---|---|
Ubuntu | 用户友好,社区支持强 | 开发环境、初学者 |
CentOS | 企业级稳定,兼容 RHEL | 生产服务器 |
Debian | 极其稳定,软件丰富 | 服务器、嵌入式 |
Alpine | 轻量级(仅 5MB) | 容器环境 |
1.2 终端基础操作
# 查看系统信息
uname -a # 显示所有系统信息
lsb_release -a # 显示发行版信息# 文件目录操作
pwd # 显示当前目录
cd ~ # 进入用户主目录
ls -l # 详细文件列表
mkdir demo && cd demo # 创建并进入目录
二、文件系统与权限管理
2.1 Linux 文件系统结构
Linux 文件系统采用树形层级结构,所有目录从根目录 /
开始。这种设计遵循 FHS(Filesystem Hierarchy Standard) 标准,核心目录的作用如下:
核心系统目录
目录 | 全称 | 作用 | 示例内容 |
---|---|---|---|
/ | Root | 文件系统的起点 | 所有目录的父目录 |
/bin | Binary | 基础命令(所有用户可用) | ls , cp , bash , cat |
/sbin | System Binary | 系统管理命令(需 root 权限) | fdisk , ifconfig , reboot |
/etc | Etcetera | 系统配置文件 | nginx.conf , passwd , hosts |
/lib | Library | 共享库文件(32 位系统) | libc.so.6 , 内核模块 |
/lib64 | Library (64-bit) | 64 位共享库(64 位系统特有) | ld-linux-x86-64.so.2 |
/boot | Boot | 启动文件 | vmlinuz (内核), initramfs , GRUB |
/dev | Device | 设备文件 | sda (硬盘), tty (终端), null |
/proc | Process | 内核和进程的虚拟文件(实时生成) | cpuinfo , meminfo , 1/ (PID 1 的进程信息) |
/tmp | Temporary | 临时文件(自动清理,通常 10 天) | 缓存文件、安装包 |
/var | Variable | 可变数据(日志、缓存等) | /var/log , /var/cache |
用户相关目录
目录 | 作用 | 示例路径 |
---|---|---|
/home | 普通用户的家目录(每个用户独立子目录) | /home/john/ , /home/sara/ |
/root | root 用户的家目录(超级管理员专用) | /root/.ssh/ |
/usr | 用户程序资源(User System Resources) | |
├─ /usr/bin | 用户级命令(比 /bin 更多) | python3 , git , vim |
├─ /usr/sbin | 系统管理命令(非核心) | useradd , sshd |
├─ /usr/lib | 用户级库文件 | Python 库、Java JAR |
├─ /usr/local | 手动安装的软件(优先级最高) | nginx/ , mysql/ |
└─ /usr/share | 共享数据(文档、图标等) | man/ , icons/ |
运行与数据目录
目录 | 作用 | 重要子目录 |
---|---|---|
/run | 运行时数据(系统启动后生成) | /run/lock/ (锁文件) |
/var | 动态数据(Variable Data) | |
├─ /var/log | 系统/应用日志(关键!) | syslog , nginx/access.log |
├─ /var/cache | 应用缓存 | APT 包缓存 |
├─ /var/lib | 数据库、Docker 镜像等 | mysql/ , docker/ |
├─ /var/mail | 用户邮箱 | |
└─ /var/spool | 队列数据(打印任务、cron 任务等) |
其他重要目录
目录 | 作用 | 使用场景 |
---|---|---|
/opt | 第三方大型软件(可选软件包) | /opt/google/chrome/ |
/srv | 服务数据(Service Data) | Web 站点的 /srv/www/ |
/mnt | 临时挂载点(手动挂载设备) | mount /dev/sdb1 /mnt/usb |
/media | 自动挂载点(U 盘、光盘等自动挂载) | /media/cdrom/ |
/lost+found | 文件系统修复后的残留文件 | fsck 后恢复的文件 |
2.2 权限系统详解
权限表示:-rwxr-xr--
- 第1位:文件类型(- 普通文件,d 目录)
- 2-4位:所有者权限(rwx)
- 5-7位:所属组权限(r-x)
- 8-10位:其他用户权限(r--)
权限修改:
# 权限数字表示法
chmod 755 script.sh # rwxr-xr-x
chmod +x script.sh # 添加执行权限# 更改所有者
chown user:group file.txt
2.3 文件操作命令
# 文件查看
cat file.txt # 显示全部内容
head -n 5 log.txt # 显示前5行
tail -f app.log # 实时追踪日志# 文件搜索
grep "error" *.log # 在日志中搜索错误
find /var -name "*.log" -mtime -7 # 查找7天内修改的日志
三、用户与进程管理
3.1 用户管理
# 创建用户
sudo useradd -m -s /bin/bash john # 创建用户并生成主目录
sudo passwd john # 设置密码# 用户组管理
sudo groupadd developers # 创建组
sudo usermod -aG developers john # 添加用户到组
3.2 进程管理
# 进程监控
top # 动态查看进程
htop # 增强版top(需安装)
ps aux # 查看所有进程# 进程控制
kill 1234 # 终止进程
killall nginx # 终止所有nginx进程
pkill -f "python" # 终止匹配进程# 后台进程管理
./server.sh & # 后台运行
jobs # 查看后台任务
fg %1 # 切换到前台
四、网络配置与服务管理
4.1 网络配置
# 查看网络信息
ifconfig # 查看网络接口(旧版)
ip addr # 新版IP查看
netstat -tuln # 查看监听端口# 网络测试
ping baidu.com
traceroute google.com
curl -I https://example.com # 查看HTTP头
4.2 防火墙管理
# UFW防火墙(Ubuntu)
sudo ufw allow 22 # 允许SSH
sudo ufw allow 80/tcp # 允许HTTP
sudo ufw enable # 启用防火墙# firewalld(CentOS)
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --reload
4.3 服务管理
# systemd服务管理
sudo systemctl start nginx # 启动
sudo systemctl stop nginx # 停止
sudo systemctl restart nginx # 重启
sudo systemctl enable nginx # 设置开机启动
五、服务器部署实战
Java 应用部署
# 1. 安装JDK
sudo apt install openjdk-17-jdk# 2. 上传应用
scp app.jar user@server:/opt/myapp/# 3. 创建systemd服务
sudo nano /etc/systemd/system/myapp.service[Unit]
Description=My Java Application
After=network.target[Service]
User=appuser
ExecStart=/usr/bin/java -jar /opt/myapp/app.jar
SuccessExitStatus=143
Restart=always[Install]
WantedBy=multi-user.target# 4. 启动服务
sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp
六、安全加固
6.1 基础安全措施
SSH 安全加固:
sudo nano /etc/ssh/sshd_config# 修改以下配置
Port 2222 # 更改默认端口
PermitRootLogin no # 禁止root登录
PasswordAuthentication no # 禁用密码登录
AllowUsers john # 只允许特定用户sudo systemctl restart sshd
防火墙配置:
sudo ufw default deny incoming # 默认拒绝所有入站
sudo ufw default allow outgoing # 允许所有出站
sudo ufw allow 2222 # 只开放SSH端口
sudo ufw enable
定期维护任务
# Ubuntu
sudo apt update && sudo apt upgrade -y# CentOS
sudo yum update -y
日志监控:
# 查看失败登录尝试
sudo grep "Failed password" /var/log/auth.log# 使用logrotate管理日志
sudo nano /etc/logrotate.conf
七、故障排查与监控
常见问题排查
sudo journalctl -u nginx --since "1 hour ago" # 查看日志
sudo nginx -t # 测试配置
磁盘空间不足:
df -h # 查看磁盘使用
du -sh /var/log/* # 检查日志目录
sudo journalctl --vacuum-size=100M # 清理日志
内存不足:
free -h # 查看内存
top # 检查内存占用进程
ps aux --sort=-%mem | head -10 # 查看内存占用TOP10
监控工具
基础监控:
# 实时监控
htop
nmon# 网络监控
nload
iftop