Ubuntu服务器部署多语言项目(Node.js/Python)方式实践

news2025/5/21 1:56:00

Ubuntu服务器部署多语言项目(Node.js/Python)方式实践

  • 服务器脚本运行方式
    • 命令行直接执行
    • nohup后台执行进程
  • Screen
    • 概述
    • 安装
    • 基本操作命令
      • 启动 Screen
      • 退出当前会话(不终止进程)
      • 查看所有会话
      • 重连会话
      • 关闭会话
    • 常用快捷键
    • 典型使用场景
      • 后台运行任务
      • 多任务并行
      • 远程服务器管理
    • 常见问题
      • 如何杀死挂起的 Screen 会话?
      • Screen 会话占用资源如何优化?
  • supervisor
    • 概述
    • 安装
    • 文件解读
    • 添加配置文件
    • 命令管理
      • 启动应用
      • 停止应用
      • 重启应用
      • 查看应用状态
    • 管理指令界面
    • 配置文件参数明晰

服务器脚本运行方式

命令行直接执行

nodejs main.jspython main.py,由于一直挂在窗口,一般用于开发测试。

nohup后台执行进程

也就是在命令行直接执行时加上&

在这里插入图片描述

可以在nohup命令中直接使用重定向操作符来将标准输出(stdout)和标准错误(stderr)都重定向到同一个日志文件,如:nohup your_command > output.log 2>&1 &,这里:

  • > 是输出重定向操作符,它将标准输出(stdout)重定向到output.log文件;
  • 2>&1表示将标准错误(stderr)也重定向到标准输出(即重定向到output.log);
  • & 是让命令在后台运行的符号。
    以下是针对 screen 工具 的入门文档,涵盖基础安装、常用命令及典型使用场景,适合初学者快速上手:

Screen

概述

screen 是一个终端会话管理工具,支持:

  • 多窗口管理(在一个终端中切换多个会话)
  • 会话分离与重连(断开连接后仍可恢复)
  • 后台运行任务(即使关闭终端,进程仍继续运行)

其实就是它可以新开多窗口,我们能在其它窗口直接适用命令行运行脚本,一个是不会影响其它操作,另一个是退出后不会kill掉脚本进程。

安装

sudo apt update
sudo apt install screen

验证安装:输入 screen --version,若显示版本号则安装成功。

在这里插入图片描述

基本操作命令

启动 Screen

screen

或指定会话名称:

screen -S my_session

退出当前会话(不终止进程)

Ctrl+A,然后按 D(分离会话)。

查看所有会话

screen -ls

在这里插入图片描述

重连会话

上图中该screenPID73877

screen -r 73877  # 使用 PID 重连
# 或
screen -r my_session  # 使用会话名称重连

关闭会话

重连会话后,输入 exit 或按 Ctrl+D

常用快捷键

快捷键功能
Ctrl+A C创建新窗口
Ctrl+A N切换到下一个窗口
Ctrl+A P切换到上一个窗口
Ctrl+A "显示窗口列表并切换
Ctrl+A D分离当前会话
Ctrl+A K关闭当前窗口

提示:所有快捷键均以 Ctrl+A 为前缀,后续按键需快速连续按下。

典型使用场景

后台运行任务

  1. 启动 Screen 会话:
    screen -S long_task
    
  2. 在会话中运行任务:
    ./my_long_running_script.sh
    
  3. Ctrl+A D 分离会话,任务继续在后台运行。

多任务并行

  1. 启动多个 Screen 会话:
    screen -S task1
    screen -S task2
    
  2. 在不同会话中执行任务,使用 Ctrl+A " 切换窗口。

远程服务器管理

  • 通过 SSH 登录服务器后启动 Screen:
    screen -S server_management
    
  • 执行维护任务,分离会话后断开 SSH,任务不受影响。
  • 重新连接 SSH 后,通过 screen -r server_management 恢复会话。

常见问题

如何杀死挂起的 Screen 会话?

screen -S <session_name> -X quit

示例:

screen -S my_session -X quit

Screen 会话占用资源如何优化?

  • 使用 tmux 作为替代工具(功能更强大)。
  • 定期清理无用会话:screen -wipe

supervisor

概述

在部署Supervisor时,Supervisor是一个用于管理多个进程的Python应用程序,通常与Celery这样的任务队列一起使用,以实现分布式任务处理。Supervisor可以监控、启动、停止和管理进程。

安装

sudo apt-get update
sudo apt-get install supervisor

验证安装成功:supervisorctl --help

文件解读

supervisor所在文件路径:/etc/supervisor
此目录下有子目录conf.d 和子文件supervisord.conf,其中:

  • conf.d 用来存放后续新增的进程配置文件
  • supervisord.conf属于supervisor的配置文件

添加配置文件

nodejs为例,进入/etc/supervisor/conf.d新增op_js.conf

[program:op_js]
command=nodejs /home/OmniEnvPatch/main.js
directory=/home/OmniEnvPatch
user=root
autostart=true
autorestart=true
stderr_logfile=/var/log/op_js.err.log
stdout_logfile=/var/log/op_js.out.log

每次修改或添加新的配置文件后,需要重新加载Supervisor配置:

sudo supervisorctl reread 
sudo supervisorctl update

在这里插入图片描述

每次更新后它都会自动启动新配置

在这里插入图片描述

命令管理

启动应用

sudo supervisorctl start op_js

停止应用

sudo supervisorctl stop op_js

重启应用

sudo supervisorctl restart op_js

查看应用状态

sudo supervisorctl status 
sudo supervisorctl status op_js

管理指令界面

我们可以通过supervisorctl进入指令界面,然后手动更细重启对应的配置项。

在这里插入图片描述

配置文件参数明晰

[program:op_js]  # 配置项名,如此处是op_js
command=/path/to/command arg1 arg2  # 要执行的命令及其参数。
process_name=%(program_name)s_%(process_num)02d  # 使用多进程时,需要配置该参数,实现动态生成进程名。
numprocs=1  # 启动的进程数量。
loglevel=info  # 记录级别,指示写入supervisord活动日志的内容。
numprocs_start=1  # 从12001开始占用端口 
directory=/path/to/directory  # 进程的工作目录。
autostart=true  # 是否在supervisord启动时自动启动这个程序。
autorestart=true  # 是否在程序退出时自动重启。
startsecs=1  # 启动后多久才算启动成功(秒)。
startretries=3  # 启动失败时的重试次数。
stdout_logfile=/path/to/stdout.log  # 标准输出的日志文件路径。
stderr_logfile=/path/to/stderr.log  # 标准错误的日志文件路径。
redirect_stderr=true  # 是否将标准错误重定向到标准输出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2380372.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机网络 - 2.基础协议

1.TCP协议 1.TCP(Transmission Control Protocol):传输控制协议2.TCP协议是一种面向连接的、可靠的、 基于字节流的传输层通信协议 1.面向连接:两个使用TCP协议的应用(通常一个客户和一个服务器)在彼此交换数据包之前必须先建立一个TCP连接2.可靠的 1.数据传输之前都要建立…

初识css,css语法怎样学好css以及常见问题与避坑

一、CSS 是什么&#xff1f; CSS&#xff08;Cascading Style Sheets&#xff09;是一种用于描述网页文档&#xff08;HTML 或 XML&#xff09;呈现样式的语言。它负责控制网页元素的视觉表现&#xff0c;如颜色、字体、布局等&#xff0c;使内容与展示分离。 二、CSS 语法结构…

Axure疑难杂症:垂直菜单展开与收回(4大核心问题与专家级解决方案)

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢!如有帮助请订阅专栏! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:垂直菜单展开与收回 主要内容:超长菜单实现、展开与收回bug解释、Axure9版本限制等问题解…

vue2.0 组件生命周期

个人简介 &#x1f468;‍&#x1f4bb;‍个人主页&#xff1a; 魔术师 &#x1f4d6;学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全栈发展 &#x1f6b4;个人状态&#xff1a; 研发工程师&#xff0c;现效力于政务服务网事业 &#x1f1e8;&#x1f1f3;人生格言&…

在Linux服务器上部署Jupyter Notebook并实现ssh无密码远程访问

Jupyter notebook版本7.4.2&#xff08;这个版本AI提示我Jupyter7&#xff08;底层是 jupyter_server 2.x&#xff09; 服务器开启服务 安装Jupyter notebook 7.4.2成功后&#xff0c;终端输入 jupyter notebook --generate-config 这将在 ~/.jupyter/ 目录下生成 jupyter_…

GPU 超级节点:AWS Trainium2 UltraServer

目录 文章目录 目录时间线Inferentia1Trainium1Inferentia2Trainium2Trainium2 ServerTrainium2 UltraServerTrainium2 UltraClustersTrainium3AWS GPU 实例矩阵与竞品分析SuperNode RackTrn2 ServerTrn2U Server ScaleUp 网络PCIe Gen5&#xff1a;CPU-Trainium2 ScaleUpNeuro…

git仓库中.git 文件很大,怎么清理掉一部分

查询 .git 文件大小&#xff0c;在 git-bash 里执行&#xff08;后面有些命令不能执行&#xff0c;也请在 git-bash 里执行&#xff09; windows11 安装好后右键没有 git bash 命令-CSDN博客 du -sh .git // 592m .git 操作前最好先备份一份&#xff0c;避免推送到远程时出错…

MySQL安装实战指南:Mac、Windows与Docker全平台详解

MySQL作为世界上最流行的开源关系型数据库&#xff0c;是每位开发者必须掌握的基础技能。本指南将手把手带你完成三大平台的MySQL安装&#xff0c;从下载到配置&#xff0c;每个步骤都配有详细说明和截图&#xff0c;特别适合新手学习。 一、Mac系统安装MySQL 1.1 通过Homebre…

Rocky Linux 远程服务器画面GUI传输到本地显示教程——Xming

Rocky Linux 远程服务器画面GUI传输到本地显示教程——Xming 下载Xming安装Xming安装Xming字体Xming的使用设置测试 Xming可以提供GUI环境&#xff0c;在Linux服务器上执行GUI应用时&#xff0c;可通过Xming在Windows上执行GUI操作。 下载Xming 下载链接&#xff1a;https://…

游戏引擎学习第283天:“让‘Standing-on’成为一个更严谨的概念

如果同时使用多个OpenGL上下文&#xff0c;并且它们都有工作负载&#xff0c;GPU或GPU驱动程序如何决定调度这些工作&#xff1f;我注意到Windows似乎优先处理活动窗口的OpenGL上下文&#xff08;即活动窗口表现更好&#xff09;&#xff0c;挺有意思的…… 当多个OpenGL上下文…

React集成百度【JSAPI Three】教程(001):快速入门

文章目录 1、快速入门1.1 创建react项目1.2 安装与配置1.3 静态资源配置1.4 配置百度地图AK1.5 第一个DEMO1、快速入门 JSAPI Three版本是一套基于Three.js的三维数字孪生版本地图服务引擎,一套引擎即可支持2D、2.5D、3D全能力的地理投影与数据源加载,帮助开发者轻松搞定平面…

python学习day2

今天主要学习了变量的数据类型&#xff0c;以及如何使用格式化符号进行输出。 一、认识数据类型 在python里为了应对不同的业务需求&#xff0c;也把数据分为不同的类型。 代码如下&#xff1a; """ 1、按类型将不同的变量存储在不同的类型数据 2、验证这些…

【C++】模版(1)

目录 1. 泛型编程 2. 函数模版 2.1 函数模版概念 2.2 函数模版格式 2.3 函数模版的原理 2.4 函数模版实例化方式 隐式实例化 显式实例化 2.5 模版参数的匹配原则 3. 模版类 模版类的定义格式 模版类的实例化 1. 泛型编程 如何实现一个通用的交换函数呢&#xff1f…

基于开源AI智能名片链动2+1模式S2B2C商城小程序源码的去中心化商业扩散研究

摘要&#xff1a;本文探讨在去中心化商业趋势下&#xff0c;开源AI智能名片链动21模式S2B2C商城小程序源码如何助力企业挖掘数据价值、打破信息孤岛&#xff0c;实现商业高效扩散。通过分析该技术组合的架构与功能&#xff0c;结合实际案例&#xff0c;揭示其在用户关系拓展、流…

5月19日day30打卡

模块和库的导入 知识点回顾&#xff1a; 导入官方库的三种手段导入自定义库/模块的方式导入库/模块的核心逻辑&#xff1a;找到根目录&#xff08;python解释器的目录和终端的目录不一致&#xff09; 作业&#xff1a;自己新建几个不同路径文件尝试下如何导入 一、导入官方库 …

白杨SEO:不到7天,白杨SEO博客网站百度搜索显示和排名恢复正常!顺带说说上海线下GEO聚会分享和播客红利

大家好&#xff0c;我是白杨SEO&#xff0c;专注SEO十年以上&#xff0c;全网SEO流量实战派&#xff0c;AI搜索优化研究者。 5月开始&#xff0c;明显就忙起来了&#xff0c;不管是个人陪跑还是企业顾问&#xff0c;不管是需要传统SEO还是新媒体流量&#xff0c;还是当下这个A…

Java 应用中的身份认证与授权:OAuth2.0 实现安全的身份管理

Java 应用中的身份认证与授权&#xff1a;OAuth2.0 实现安全的身份管理 在当今的软件开发领域&#xff0c;身份认证与授权是构建安全可靠应用的关键环节。而 Java 作为广泛使用的编程语言&#xff0c;在实现这一功能上有着诸多成熟的框架和方案。其中&#xff0c;OAuth2.0 凭借…

【氮化镓】偏置对GaN HEMT 单粒子效应的影响

2025年5月19日,西安电子科技大学的Ling Lv等人在《IEEE Transactions on Electron Devices》期刊发表了题为《Single-Event Effects of AlGaN/GaN HEMTs Under Different Biases》的文章,基于实验和TCAD仿真模拟方法,研究了单粒子效应对关断状态、半开启状态和开启状态下AlG…

Mysql 索引概述

索引&#xff08;index&#xff09;是帮助Mysql高效获取数据的数据结构 索引优点&#xff1a;1. 提高排序效率 2. 提高查询效率 索引缺点&#xff1a;1.索引占用空间&#xff08;可忽略&#xff09;2.索引降低了更新表的速度&#xff0c;如进行insert,update,delette 时效率降…

解决RAGFlow部署中镜像源拉取的问题

报错提示 Error response from daemon: Get "https://registry-1.docker.io/v2/ ": context deadline exceeded 解决方法 这个原因是因为拉取镜像源失败&#xff0c;可以在/etc/docker/daemon.json文件中添加镜像加速器&#xff0c;例如下面所示 {"registry…