前端小白node项目简单部署到服务器(docker+宝塔面板)

1,263 阅读3分钟

我正在参加「掘金·启航计划」

想学习下服务器部署,找了半天教程各说各话,试了很多注意不到的坑,写个绝对好用流畅的小白教程贴.

一:买服务器

本人用的阿里云的 腾讯华为什么的也都可以 测试学习选最便宜的就行 刚开始有一个月免费试用期

image.png 买了之后需要实例那里重置下密码 初始用户名root 密码搞一搞 端口配置在安全组配置规则那里

image.png

二:创建node项目

本地起个node-demo项目(github我传了个demo

image.png

packeage.json配置start命令 "start": "node index.js"

dist文件夹先随便放了个html

入口文件index.js

const express = require('express');
const path = require('path')
const app = express();
//这里方便输入命令的时候控制监听端口比如npm start --port=3000 会解析挂到 env.npm_config_port 比传参用process.argv好用
const port = process.env.npm_config_port|| 80;
app.use('/dist',express.static('dist'))
app.get('/test',(req,res)=>{
    res.json({
        message:'test'
    })
})
app.get('/',(req,res)=>{
    res.sendFile(path.resolve('./dist/index.html'))
})
app.listen(port,()=>{
    console.log('express启动成功http://0.0.0.0:'+port);
})

三:配置宝塔 安装环境

配置好宝塔面板用宝塔顺便装下docker 宝塔官网有教程选linux在线安装就行www.bt.cn/new/index.h…

先把项目代码上用宝塔上传下

image.png

部署用了两种方式

1>>>装node直接部署

然后在网站菜单 > 装好node环境 > 点添加node项目 > 添加完项目会自动启动

image.png 按提示填写配置, 可以自定义启动命令 因为项目代码那里我配置了可以获取命令传递的端口参数所以只要空闲的服务器端口都可以用。端口这里要注意比如你指定用8095的话,服务器安全组那边配置完,宝塔系统防火墙这里也需要添加端口规则。

image.png

然后你服务器地址加项目端口就可以访问了

image.png

完结撒花~~~

2>>>忘了还有docker

宝塔文件上传项目后终端进入项目根目录 终端启动docker

systemctl start docker

拉取node镜像

docker pull node:16-alpine

查看已有镜像

docker images

项目里创建dockerfile文件 Dockerfile 是一个包含用于组合镜像命令的文本文档Docker 通过读取Dockerfile中的指令自动生成镜像

image.png

构建私有镜像

docker build -t hello .

构建完用docker images查看下镜像 然后基于刚创建的镜像创建容器 镜像和容器的关系就相当于月饼模子和月饼 先查看所有容器

docker ps -a

创建名为nodeapptest的容器 并后台运行(itd是后台运行) b0f90f642d51是镜像id也可以用镜像名称 8095是服务器开放闲置端口去服务器控制台安全组配置下规则 3000是你项目内用的端口

docker run -itd -p 8095:3000 --name nodeapptest b0f90f642d51

没报错就是可以了,用你ip加8095端口访问就可以

如果报错可能就是名字重复 或者8095端口已经被占了

记录下dokcer部分命令

docker ps #查看当前运行中的容器

docker ps -a #查看所有容器,包括未运行中的 

docker logs CONTAINER ID/IMAGE #如未查看到刚才运行的容器,则用容器id或者名字查看启动日志排错

docker run -d webcentos8:v1 #后台运行容器

docker stop $(docker ps -a -q)#停止所有容器

docker rm $(docker ps -a -q)#删除所有容器

docker images#查看镜像

docker rmi <image id> #删除指定id镜像

docker rmi $(docker images -q)#删除全部镜像

至于管理服务器的其他工具还有比如xshell配合xftp MobaXterm.个人更喜欢mobaxterm

image.png

完结撒花~~~

参考链接:

help.aliyun.com/document_de…

blog.csdn.net/sinat_39308…

developer.aliyun.com/article/100…