部署服务器项目及发布

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

我使用的是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

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

相关推荐
java叶新东老师19 分钟前
linux 部署 flink 1.15.1 并提交作业
linux·运维·flink
程序员JerrySUN1 小时前
Linux系统架构核心全景详解
linux·运维·系统架构
无敌的牛1 小时前
Linux文件理解,基础IO理解
linux·运维·服务器
angushine1 小时前
鲲鹏服务器logstash采集nginx日志
运维·服务器·nginx
未来之窗软件服务1 小时前
跨平台 WebSocket 服务器的设计与实现 —— 基于.NET 8 的跨操作系统解决方案linux,macos,windows——开发工具
linux·服务器·websocket·仙盟创梦ide·东方仙盟
睿思达DBA_WGX2 小时前
由于主库切换归档路径导致的 Oracle DG 无法同步问题的解决过程
运维·数据库·oracle
杰哥的狗2 小时前
nacos连接失败,启动失败常见问题
linux·docker
Jackilina_Stone2 小时前
【faiss】用于高效相似性搜索和聚类的C++库 | 源码详解与编译安装
android·linux·c++·编译·faiss
XXYBMOOO2 小时前
Xilinx-FPGA-PCIe-XDMA 驱动内核兼容性问题修复方案
linux·运维·服务器