Linux 服务器常用运维命令与部署实践
系统基础排查与审计
在日常运维工作中,快速定位问题往往从审计开始。我们需要记录用户的历史操作,以便后续复盘或排查故障。
# 导出当前会话的执行历史到指定日志文件
history >> ~/ops_logs/command_trace.log
对于图形化界面的系统资源监控,若桌面环境可用,可调用资源监视器;若在命令行环境下,建议使用 top 或 htop 工具替代。
# 启动 GNOME 桌面下的系统监控工具(需安装 desktop 环境)
gnome-system-monitor
定位进程查找特定文件时,相比于 find 的全盘扫描,利用建立索引的 locate 命令效率更高。
# 快速搜索配置文件路径
locate application-prod.yml
网络端口与安全策略
确认应用是否成功绑定了目标端口是验证服务启动的关键步骤。我们可以结合 grep 进行过滤查看。
# 方式一:使用 lsof 查看指定端口占用详情
sudo lsof -i :9000
# 方式二:使用 netstat 配合管道筛选活跃连接
netstat -anptu | grep 'LISTEN' | grep 9000
在基于 firewalld 的系统上,动态开放端口需要修改规则并重新加载配置以确保生效。
# 列出当前区域开放的端口列表
firewall-cmd --list-ports
# 向 public 区域永久添加 TCP 3306 访问权限
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重载防火墙配置使变更立即生效
firewall-cmd --reload
Web 服务管理与配置
Nginx 和 Apache 是两类主流的 Web 服务器软件,它们的控制方式略有不同。
Apache HTTP Server
现代 Ubuntu 版本通常推荐使用 systemd 来管理服务生命周期,而非传统的 init.d 脚本。
# 重启 Apache 服务
sudo systemctl restart apache2
# 实时查询服务运行状态
sudo service apache2 status
# 重载配置文件而不中断连接
sudo systemctl reload apache2
SSL 证书的配置通常位于虚拟主机配置文件中,修改后需重启或重载服务。例如编辑 Laravel 站点的配置文件以指定证书路径:
vim /etc/apache2/sites-enabled/site_laravel.conf
Nginx Web Server
Nginx 提供了更灵活的控制信号机制来管理进程。
# 直接通过二进制启动(确保权限)
/usr/local/nginx/sbin/nginx
# 优雅重载配置
nginx -s reload
# 通过系统服务停止进程
systemctl stop nginx
# 编辑主配置文件
vim /usr/local/nginx/conf/nginx.conf
中间件与数据库服务
Java 中间件 Tomcat 依赖特定的 Shell 脚本进行启停,而关系型数据库则依赖操作系统服务管理。
Tomcat 容器
# 启动 Tomcat 应用服务器
bin/startup.sh start
# 关闭服务
bin/shutdown.sh
# 调整服务端点配置
vim bin/server.xml
MySQL 数据库
# 重置 MySQL 数据服务
sudo systemctl restart mysql
# 优化数据库内核参数
vim /etc/mysql/mysql.conf.d/mysqld.cnf
容器化编排
Docker 引擎本身也是一个需要管理的守护进程,可以通过 system 命令来控制其生命周期。
# 开启容器引擎
sudo systemctl start docker
# 暂停所有容器活动
sudo systemctl stop docker
# 刷新环境配置并重启引擎
sudo systemctl restart docker
全栈项目构建与发布流程
以下为一个典型的前后端分离项目的自动化部署脚本逻辑,包含编译、静态资源分发及后端服务拉起。
前端资源处理
# 进入源码目录安装依赖
cd /opt/project/source/web-student
npm ci
# 执行生产环境打包
npm run build
# 将生成的静态文件复制至 Web 服务器目录
cp -r dist/student /srv/www/html/
cp -r dist/admin /srv/www/html/
后端服务初始化
# Maven 项目本地构建
mvn clean package -DskipTests
# 后台运行 Java Jar 包并指定时区
nohup java -Duser.timezone=Asia/Shanghai \
-Dspring.profiles.active=prod \
-jar target/service-core.jar \
> /var/log/app/start.out 2>&1 &
Web 服务最终激活
# 更新 Nginx 路由指向新的静态资源目录
nginx -s reload
# 刷新浏览器缓存即可访问最新内容