NodeJs项目 CentOs linux服务器线上部署

本文详细介绍如何在Linux服务器上安装Node.js,并配置环境变量,同时演示如何将项目上传至服务器并通过域名访问。此外,还介绍了使用pm2保持服务常驻的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、安装NodeJs

官网仓库下载好NodeJs的Linux包(我用的 node-v9.9.0-linux-x64.tar.gz)到本地然后通过FTP(filezilla)上传到服务器;或者可以直接在服务器终端使用 wget 命令下载。

[root@10 /] wget https://nodejs.org/dist/v9.9.0/node-v9.9.0-linux-x64.tar.gz
1、解压 node-v9.9.0-linux-x64.tar.gz
  • 找到你上传的位置目录

    [root@10 /]# ls
      bin   dev  home  lib64  media  node-v9.9.0-linux-x64.tar.gz  opt  ...
    
  • 解压到当前目录

    [root@10 /]# tar -zvxf node-v9.9.0-linux-x64.tar.gz
    
  • 移动到安装目录并重命名 node

    [root@10 /]# mv node-v9.9.0-linux-x64 /opt/node
    
2、配置环境变量
  • 打开etc目录下的 profile 文件

    [root@10 /]# vi /etc/profile
    
  • 在文件的最后添加如下内容

    export NODE_HOME=/opt/node
    export PATH=$NODE_HOME/bin:$PATH
    
  • 使刚配置好的环境变量生效

    [root@10 /]# source /etc/profile
    
3、检查环境
[root@10 /]# node -v
v9.9.0
[root@10 /]# npm -v
6.9.0

// 另外如果我们习惯使用 yarn, 可以安装 yarn
[root@10 /]# npm i yarn -g
....
[root@10 /]# yarn -v
1.16.0
2、项目上传到 域名配置文件目录(比如 wwwroot)

我直接用服务器命令 wget下载代码到服务器

不过需要注意的是,如果你的代码托管在github, tar包路径是:

https://github.com/***/blog/blob/master/nodejs/build/grap-new.tar.gz

一定要替换 “blob” 为 “raw”, 不然 wget 到的不是一个 gzip 格式的包。

[root@10 test]# wget https://github.com/***/blog/raw/master/nodejs/build/grap-new.tar.gz

然后解压:

[root@10 test]# tar -zxvf grap-new.tar.gz
// 安装依赖
[root@10 grap-new]# yarn
//启动服务
[root@10 grap-new]# yarn dev

这样的话 就可以你的域名下访问了,如果不是放在你的域名下,外网IP是无法访问的。

如果你的服务器的SSH一直运行着,你可以一直访问你的页面。如果关闭了,会导致服务也会关闭。

所以,我们需要安装 pm2 依赖这个服务,可以让我们的任务一直运行在service里面。

[root@10 grap-new]# yarn add global pm2
[root@10 grap-new]# pm2 start server.js

更多知识点,去 pm2 官网即可了解到。

<think>嗯,用户问的是怎么在Linux部署应用。首先,我需要确定用户的具体需求是什么。部署的应用类型有很多,比如Web应用、数据库、或者微服务?不过用户没有具体说明,可能需要给出一个通用的步骤,然后再举几个常见例子。 首先,我得考虑通用步骤。通常部署流程包括准备环境、安装依赖、获取应用代码、配置、启动应用,还有后续的维护。可能还需要提到自动化工具,比如Ansible或者Docker,这样用户可以根据需要选择。 然后,用户可能对Linux不太熟悉,所以步骤要详细,但也不能太复杂。比如,系统更新和依赖安装,可能需要用apt或yum,根据不同的发行版。要提醒用户注意权限问题,可能需要sudo。 接下来,获取应用代码的方式,比如git clone或者下载压缩包。配置部分,环境变量和配置文件的位置,比如/etc目录或者用户目录下的隐藏文件。启动应用的话,如果是服务,可能需要systemd来管理,这样开机启动和日志都方便。 然后,安全方面,防火墙设置,比如ufw或者firewalld,还有SSH的安全配置,比如禁用root登录,使用密钥认证。这些虽然用户没提,但部署时很重要,应该包含进去。 举例部分,选常见的应用,比如Nginx、Node.js应用、Docker部署。Nginx比较简单,安装步骤明确。Node.js应用可能需要PM2来守护进程,Docker的例子可以展示容器化部署的便捷性。 还要考虑用户可能遇到的问题,比如权限错误,端口冲突,依赖缺失。在注意事项里提醒他们查看日志,使用systemctl status之类的命令。备份和监控也是维护的重要部分,应该提到。 另外,用户可能不知道如何选择部署方式,所以比较一下物理机、虚拟机、容器的优缺点,帮助他们做决定。最后,提供参考链接,比如官方文档和自动化工具的资料,方便用户深入阅读。 要确保回答结构清晰,分步骤,每个部分有标题,代码用反引号包裹,变量用$符号。检查一下LaTeX有没有错误,虽然这个问题可能用不上数学公式,但系统指令里提到行内数学表达式要用$...$,所以如果有变量或代码中的$符号要注意转义。 总之,先写通用步骤,再举例子,最后注意事项和扩展建议。确保语言简洁,步骤明确,用户能跟着操作。可能需要多次检查命令的正确性,比如apt install和systemctl的命令是否正确,避免用户复制时出错。</think>在Linux系统上部署应用通常需要以下步骤,以下是通用流程及常见场景示例: ### 一、基础部署流程 1. **系统准备** ```bash # 更新系统软件包 sudo apt update && sudo apt upgrade -y # Debian/Ubuntu sudo yum update -y # CentOS/RHEL # 安装常用工具 sudo apt install -y curl wget git vim # Debian/Ubuntu ``` 2. **环境依赖安装** ```bash # 示例:安装Python环境 sudo apt install -y python3 python3-pip pip3 install virtualenv # 示例:安装Java环境 sudo apt install -y openjdk-17-jdk ``` 3. **获取应用文件** ```bash # 通过Git克隆代码 git clone https://github.com/username/repo.git cd repo # 或下载预编译包 wget https://example.com/app.tar.gz tar -xzvf app.tar.gz ``` 4. **配置文件修改** ```bash # 典型配置文件路径 vim config/appsettings.conf # 常见需修改项 • 数据库连接信息 • 服务监听端口(如:`PORT=8080`) • 日志存储路径 ``` 5. **启动应用** ```bash # 直接启动(适合测试) python3 app.py # 后台运行(生产推荐) nohup ./start.sh > output.log 2>&1 & # 使用systemd托管(以myapp.service为例) sudo systemctl enable myapp.service sudo systemctl start myapp ``` ### 二、常见部署场景示例 #### 场景1:部署Nginx Web服务器 ```bash # 安装 sudo apt install -y nginx # 配置 sudo vim /etc/nginx/sites-available/default # 启动服务 sudo systemctl enable nginx sudo systemctl restart nginx # 验证 curl http://localhost ``` #### 场景2:部署Node.js应用 ```bash # 安装Node.js curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt install -y nodejs # 安装PM2进程管理器 sudo npm install -g pm2 # 启动应用 pm2 start app.js pm2 save pm2 startup ``` #### 场景3:使用Docker部署 ```bash # 安装Docker curl -fsSL https://get.docker.com | sudo sh # 运行容器(以MySQL为例) sudo docker run -d \ --name mysql-server \ -e MYSQL_ROOT_PASSWORD=your_password \ -p 3306:3306 \ mysql:8.0 # 查看运行状态 sudo docker ps ``` ### 三、关键注意事项 1. **安全配置** ```bash # 配置防火墙 sudo ufw allow 22/tcp # 开放SSH sudo ufw allow 80/tcp # 开放HTTP sudo ufw enable # 定期更新系统 sudo apt update && sudo apt upgrade -y ``` 2. **日志监控** ```bash # 查看实时日志 journalctl -u nginx -f # 查看错误日志 tail -f /var/log/nginx/error.log ``` 3. **备份策略** ```bash # 定时备份数据库 0 3 * * * mysqldump -u root -pPASSWORD dbname > /backups/db_$(date +\%F).sql ``` ### 四、进阶部署方式对比 | 方式 | 优点 | 缺点 | |------------|-----------------------|-----------------------| | 物理机部署 | 最高性能 | 维护成本高 | | 虚拟机部署 | 资源隔离 | 性能损耗约5-15% | | 容器化部署 | 快速部署,环境一致 | 需要学习容器技术 | ### 五、问题排查技巧 1. 检查端口占用: ```bash sudo lsof -i :8080 ``` 2. 查看系统资源: ```bash htop # 实时监控 free -h # 内存使用 df -h # 磁盘空间 ``` ### 扩展建议 • 学习使用自动化部署工具(Ansible/Terraform) • 掌握基础Shell脚本编写 • 了解CI/CD流水线搭建(Jenkins/GitLab CI) > **官方文档参考**: > - [Nginx官方文档](https://nginx.org/en/docs/) > - [Docker文档](https://docs.docker.com/) > - [Systemd使用指南](https://www.freedesktop.org/wiki/Software/systemd/)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值