部署服务器项目及发布

news2024/9/25 11:10:19

当技术总监直接丢给我一个服务器账号密码时,我该怎么完成映射本机;配置网关;配置代理和发布项目呢?

我使用的是putty远程登录到服务器

输入ip后,点open

输入账号密码


登录的账号如果不是root;使用sudo su切换到root账号;再用命令cd /到根目录

服务器共享本机

首先将服务器共享到本机,更方便管理;全局安装Samba;

Samba的作用有以下两点:

  • Samba 是一个提供 SMB/CIFS 协议实现的开源软件包,允许 Linux 系统与 Windows 系统进行文件和打印共享。
  • 可用于设置网络共享目录,允许不同操作系统的用户访问和共享文件。

安装步骤(如果没在root用户下运行加上sudo)

1、安装Samba


        apt update(sudo apt update)
        apt install -y samba ( sudo apt install -y samba)

2、验证安装

检查 Samba 服务是否已成功安装和正在运行: 

systemctl status smbd

出现以上active字样就是正常运行中;接下来就是配置Samba

配置Samba

1、编辑Samba配置文件:

nano /etc/samba/smb.conf (sudo nano /etc/samba/smb.conf)

2、添加共享目录配置:


[printers]
   comment = All Printers
   browseable = yes
   path = /var/spool/samba
   printable = yes
   guest ok = yes
   read only = yes
   create mask = 0700

# Windows clients look for this share name as a source of downloadable
# printer drivers
[print$]
   comment = Printer Drivers
   path = /var/lib/samba/printers
   browseable = yes
   read only = yes
   guest ok = no

[共享文件1发布使用自己命名]
    comment = 说明内容自己写
    path = /usr/share/nginx // 共享路径
    valid users = 本机用户名自己写 root // 权限给到哪些用户
    write list = 本机用户名自己写 root
    read only = no // 读权限
    writable = yes // 写权限
    public = no // 是否允许匿名访问
    #guest ok = yes //是否允许未验证的用户访问 `#`表示设置未启用
    create mask = 0777 // 指定新文件创建时默认权限掩码
    force create mode = 0777 //强制新文件创建时具有的权限
    directory mask = 0777 // 指定新目录创建时的默认权限掩码
    force directory mode = 0777 // 强制新目录创建时具有的权限

[共享文件2代理使用自己命名]
    comment = 说明内容自己写
    path = /etc/nginx/conf.d
    valid users = 本机用户名自己写 root
    write list = 本机用户名自己写 root
    read only = no
    writable = yes
    public = no
    create mask = 0777
    force create mode = 0777
    directory mask = 0777
    force directory mode = 0777

例子:

配置完后ctrl + o保存;ctrl + x退出;然后启动Samba服务

3、重启Samba服务

systemctl restart smbd(sudo systemctl restart smbd)
systemctl restart nmbd(sudo systemctl restart nmbd)


4、添加用户到Samba

smbpasswd -a your_username (sudo smbpasswd -a your_username)

设置密码

5、启用Samba用户

smbpasswd -e your_username (sudo smbpasswd -e your_username)

自己设置的密码要记住咯。这时可以测试连接,在 Windows 中,确保使用正确的网络凭据尝试连接到 Samba 共享。格式通常是 \\<服务器IP>\share。确保输入的用户名和密码正确无误,并与服务器上的 Samba 用户一致。

例子:

win + R 输入\\<服务器IP>;enter回车输入账号密码;勾选记住我的凭据点确定

进来是这样

如果遇到了权限不够的情况可以使用这条命令:chown -R 用户名 ./(想给权限的路径,这里我是都给就可以使用./)

部署服务器

配置环境

  • 更新系统包列表:

    sudo apt update

  • 安装 Node.js

         Yarn 依赖于 Node.js,所以需要先安装 Node.js。推荐使用 NodeSource 提供的安装脚本

   curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -  //查看自己项目需要node是什么版本,我的是需要16版本的,用的setup_16.x

  apt install -y nodejs (sudo apt install -y nodejs)

如果你需要在同一服务器上管理多个 Node.js 版本,看作者另一篇博客。

Ubuntu下安装Node.js;npm_ubuntu 安装nodejs npm-CSDN博客

  • 安装 Yarn

       使用官方 Yarn 仓库进行安装。

  curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - 

  echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list

   apt update (sudo apt update)

   apt install yarn (sudo apt install yarn)

如果遇到apt-key已弃用而安装不成功的使用以下方法进行安装

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarn-archive-keyring.gpg > /dev/null

echo "deb [signed-by=/usr/share/keyrings/yarn-archive-keyring.gpg] https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list

apt update (sudo apt update)
apt install yarn (sudo apt install yarn)

        验证安装

          yarn --version

  • 安装 PM2

  1. 全局安装 PM2

    sudo npm install -g pm2

  2. 验证安装:安装完成后,可以使用以下命令验证 PM2 是否安装成功并查看版本:

    pm2 -v

  • 安装 Nginx

          根据个人项目选择使用      

        1、全局安装nginx

   sudo apt install nginx

         2、启动nginx服务

   sudo systemctl start nginx   

         3、确保nginx在开机时自动启动

   sudo systemctl enable nginx

         4、验证nginx状态

   sudo systemctl status nginx

配置pm2启动文件

如果是服务端请求接口需要配置,如果是客户端请求接口无需配置

例子production.json:

{
  "apps": [
    {
      "name": "自定义项目名",
      "port": 端口,
      "cwd": "发布项目的文件路径",
      "script": ".项目运行的js",
      "log_date_format": "YYYY-MM-DD HH:mm Z",
      "out_file": "./logs/app-blog-out.log",
      "error_file": "./logs/app-blog-err.log",
      "instances": "1",
      "min_uptime": "30s",
      "max_restarts": 30,
      "max_memory_restart": "600M",
      "watch": false,
      "ignore_watch": [
        "logs",
        "node_modules"
      ],
      "merge_logs": true,
      "exec_interpreter": "node",
      "exec_mode": "fork",
      "autorestart": true,
      "restart_delay": "10",
      "vizion": false,
      "env": {
        "NODE_ENV": "production"
      }
    }
  ]
}

每次修改完production.json文件后都要重新启动才生效

cd到当前有production.json的文件夹下

pm2 restart production.json

配置反向代理

根据项目是否需要再使用

关于更多知识点及原理我找了两篇,

一篇19年Nginx配置SSL实现https请求_listen 443 ssl;-CSDN博客;

一篇24年Nginx 配置 SSL(HTTPS)详解_nginx ssl-CSDN博客;

区别就是19年的用的系统是Ubuntu;24年的用的系统是linux

#配置端口代码 www是我的文件名
#微前端使用
upstream 项目名 {
  server 0.0.0.1:8000;
}
server {
 listen       443 ssl http2;
#域名
  server_name server.com;
#证书
  ssl_certificate   /usr/share/nginx/www/cert/fullchain.pem;
#秘钥
  ssl_certificate_key  /usr/share/nginx/www/cert/privkey.key;
  ssl_session_timeout 1d;
  ssl_session_cache shared:SharedNixCraftSSL:10m;
  ssl_session_tickets off;
  proxy_connect_timeout 15s;
  proxy_read_timeout 15s;
  proxy_send_timeout 15s;
#add_header X-Frame-Options "SAMEORIGIN";
   add_header X-XSS-Protection "1; mode=block";
   add_header X-Content-Type-Options "nosniff";
   add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload" always;
   add_header X-Cache-Status $upstream_cache_status;
   ssl_stapling on;
   ssl_stapling_verify on;
#log
   ssl_trusted_certificate /usr/share/nginx/www/cert/fullchain.pem;
   error_log   /usr/share/nginx/www/logs/access.log error;
#头部协议
    proxy_pass_header Authorization;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $http_x_forwarded_for;

    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
#ssl动态路由(微前端使用更佳)
 location ~^/demo/(.*){
   proxy_poss http://项目名$request_uri;
 }
#ssl动态路由(常规项目使用)
 location ~^/demo/(.*){
   proxy_poss http://0.0.0.1:8000$request_uri;
 }
#ssl常规路由
 location = / {
    proxy_pass http://0.0.0.1:8000/;
  }
#client常规以个人中心为例
 location ~ ^/(user|customer)(.*) {
            root www/文件名/client;
        }  
}

保存配置,

启动nginx:systemctl restart nginx

只要更改过文件,都要重启

重启nginx:systemctl reload nginx

现在粗略看看等有空再细致更新啦。

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

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

相关文章

表中记录的操作

一、查询表中的记录 二、在表中插入记录&#xff0c;删除记录&#xff0c;修改记录 三、常用的运算符 四、数据类型

string.format()拼接参数

string.format()拼接参数 private static void testString() {String queryParams String.format("?pwdErrNum%s&userSts%s&lockSts%s", 123, 1, 1);System.out.println(queryParams);}打印结果

事务的原理(学习笔记)

redo log 如果没有redo log 我们在执行完增删改查语句后会将脏页直接刷新到磁盘中&#xff0c;此时用户事务已经提交&#xff0c;一旦刷新失败则无法修复数据。如果不适用redo log 还会存在性能问题&#xff0c;事务中的一组操作都是随机操作数据页&#xff0c;涉及到大量随机…

DeepSeek Coder V2开源发布,首超GPT4-Turbo的代码能力

击败GPT4-Turbo&#xff0c;最强开源代码模型DeepSeek-Coder-V2问世&#xff5c;SiliconCloud上新 6月17日&#xff0c;深度求索正式开源了DeepSeek-Coder-V2模型。 根据相关评测榜单&#xff0c;这是全球首个在代码、数学能力上超越GPT-4-Turbo、Claude3-Opus、Gemini-1.5Pro…

DolphinDB 编程进阶:掌握这十个细节,让你的代码更出色

众所周知&#xff0c;编程细节不仅关乎代码的美观与整洁&#xff0c;更是确保软件质量、提升开发效率、减少维护成本以及保障系统稳定性的基石。 今天和大家分享的内容是&#xff1a;使用 DolphinDB 编程时&#xff0c;十个常被忽略但至关重要的细节。本文涵盖了元编程技巧、数…

攻防演练号角吹响,聚铭铭察高级威胁检测系统助您零失分打赢重保攻坚战

在数字化浪潮中&#xff0c;攻防演练成为了衡量网络安全防御力的核心标尺&#xff0c;其重要性与日俱增。这项由政府、行业监管或企业内部主导的安全活动&#xff0c;随着互联网普及而兴起&#xff0c;现已发展成为全球公认的检验网络安全体系效能的标准。它不仅关乎技术实力的…

JaCoCo - Java Code Coverage Library

概述 JaCoCo&#xff08;Java Code Coverage&#xff09;是一个开源的Java代码覆盖率库。它可以帮助开发人员测量单元测试和集成测试中代码的覆盖情况。通过使用JaCoCo&#xff0c;开发人员可以识别哪些代码没有被测试覆盖&#xff0c;从而提高代码的质量和可靠性。 功能 1.…

C语言宠物系统

功能有增加宠物信息&#xff0c;显示宠物信息&#xff0c;删除宠物信息&#xff0c;修改功能和排序功能&#xff0c;可以选择姓名排序&#xff0c;年龄排序&#xff0c;价格排序。进阶的功能有文件操作&#xff0c;动态内存开辟。。 test.c源文件 #include "Pet.h"v…

角色管理功能助你打造精准智慧校园系统

在智慧校园的信息化架构中&#xff0c;角色管理功能犹如一把精细的钥匙&#xff0c;开启着系统安全与高效运作的大门。它不仅关乎信息的访问权限&#xff0c;更深层次地影响着校园内各类活动的顺畅进行。 智慧校园的角色管理&#xff0c;首先体现在对用户群体的细致划分上。系统…

【Linux】进程间通信:详解 VSCode使用 | 匿名管道

目录 0. 引入&#xff1a;vscode 的使用 下载 推荐插件 连接云服务器 1. 进程间通信 1.1 是什么 1.2 为什么 1.3 怎么办 介绍 &#xff1a; 2. 匿名管道 2.1 引入 2.2 原理 3. 建立管道的系统调用pipe 3.1 介绍 形参 返回值 3.2 代码 3.3 站在内核的角度 编…

通俗易懂的告诉你大模型如何微调!

如今&#xff0c;大模型&#xff08;Large Language Models&#xff09;在人工智能领域可是炙手可热的话题。它们拥有庞大的参数和广泛的知识&#xff0c;能够处理各种复杂的任务。然而&#xff0c;就像一把锋利的刀需要经过磨砺才能更贴合手型一样&#xff0c;大模型也需要经过…

鸿道Intewell操作系统X86生态之:Intel J1900

在当今数字化转型的浪潮中&#xff0c;工业自动化和智能制造的需求日益增长&#xff0c;对实时操作系统的性能和可靠性提出了更高的要求。鸿道Intewell操作系统正是聚焦于如何将高性能的处理器与先进的操作系统相结合&#xff0c;以构建一个强大且稳定的工业控制系统。 鸿道I…

【算法系列】双指针

双指针算法 1. 双指针算法概述2 经典双指针算法题目分享1. **复写零**2. 快乐数&#xff08;medium&#xff09;3. 11. 盛最多水的容器4. 有效三⻆形的个数&#xff08;medium&#xff09;5. 四数之和 1. 双指针算法概述 常⻅的双指针有两种形式&#xff0c;⼀种是对撞指针&…

MMC和eMMC的区别

MMC 和 eMMC 的区别 1. MMC MMC&#xff08;MultiMediaCard&#xff09;是一种接口协议&#xff0c;定义了符合这一接口的内存器&#xff0c;称为 MMC 储存体或 MMC 卡。它是一种非易失性存储器件&#xff0c;广泛应用于消费类电子产品中。 1.1 外观及引脚定义 MMC卡共有七个…

文件解析漏洞合集

IIS 解析漏洞 IIS6 目录解析 打开windows——server2003&#xff0c;在 wwwroot 目录下创建 1.asp &#xff0c;在其中创建的所有文件都会在访问时以 asp 解析出来 畸形文件解析 在wwwroot目录下创建 2.asp;.jpg &#xff0c;此文件上传时是 .jpg 后缀,但解析时由于 iis6 文…

transformer死亡9问

transformer死亡20问 1. Transformer为何使用多头注意力机制&#xff1f;2. Transformer为什么Q和K使用不同的权重矩阵生成&#xff0c;为何不能使用同一个值进行自身的点乘3. Transformer计算attention的时候为何选择点乘而不是加法&#xff1f;两者计算复杂度和效果上有什么区…

C#桌面开发(那些年你总走进误区的技术):异步多线程、异步事务与递归技术

1. 异步多线程 (Asynchronous Multithreading) 在C#桌面开发中&#xff0c;异步多线程是提高应用程序响应速度和性能的关键技术之一。以下是几个深入的技术点和示例代码。 1.1 使用async和await实现异步操作 C#的async和await关键字使得编写异步代码变得更加简单。以下是一个…

老司机也会翻车?通过自动建模技术轻松实现工程机械翻滚保护分析

什么是ROPS分析&#xff1f; ROPS分析&#xff0c;指的是"Roll-Over Protective Structure"&#xff08;翻滚保护结构&#xff09;的简称&#xff0c;这是一种用于评估和设计特殊设备&#xff08;如前装载机、各种挖掘机、履带式推土机&#xff09;的被动安全标准&am…

slam过程中每一帧的gt位姿如何计算

一般得到的每一帧数据类似如下&#xff1a; 4*4的变化矩阵&#xff0c;都属于相机到世界坐标系下的变化矩阵&#xff0c;如果是x,y,z和四元数也可以转换为这种4*4的矩阵。 第一帧为世界坐标系的原点&#xff0c;后续的位姿都基于这个原点进行变化。 def load_poses(path, n_im…

HCIA概述

一、OSI七层模型 1.物理层&#xff08;七层&#xff09; 定义物理设备的标准&#xff0c;主要对物理连接方式&#xff0c;电气特性&#xff0c;机械特性等制定统一标准&#xff0c;传输比特流&#xff0c;因此最小的传输单位——位&#xff08;比特流&#xff09;。 2.数据链…