day0-前端学服务器部署

1 阅读2分钟

昨天买了个香港服务器,打算开始学习折腾一下服务器相关技能,写这篇笔记加深一下印象。

服务器信息:2 核 2G 内存,5M 带宽,50G ssd,Ubuntu 22系统

服务器后台安装/开启 ssh 安装 ssh:apt install openssh-server -y

启动:systemctl start ssh

开机启动:systemctl enable ssh

查看状态:systemctl status ssh 显示 active (running) 说明正常,q 退出信息

开放 ssh 端口:ufw allow 22,或者直接关闭防火墙:ufw disable (学习使用,生产还是不要用)

ssh开启后,通过 ssh 进入:root@服务器 ip 输入密码

更新系统: apt update && apt upgrade -y

安装基础工具 apt install curl wget git vim unzip net-tools -y 拉代码用 git 拉代码用 git 下载用 wget 调接口用 curl

安装 docker: curl -fsSL https://get.docker.com | bash

验证:docker -v // 正常显示版本号如Docker version xx.xx

启动 docker:systemctl start docker

开机启动:systemctl enable docker

安装docker-compose:apt install docker-compose -y

创建docker-compose vim docker-compose.yml

version: '3'

services:

  mysql:
    image: mysql:8
    container_name: mysql
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    volumes:
      - ./mysql:/var/lib/mysql

  redis:
    image: redis
    container_name: redis
    ports:
      - "6379:6379"

  nginx:
    image: nginx
    container_name: nginx
    ports:

   - "80:80"
     lumes:
        - ./nginx/conf:/etc/nginx/conf.d
          ./nginx/html:/usr/share/nginx/html

验证:

用 express 验证

创建 dockfile

FROM node:20-slim
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "app.js"]

创建 package.json

{"name": "express-server","version": "1.0.0","main": "app.js","dependencies": {
​
  "express": "^4.18.2",
​
  "mysql2": "^3.6.0"}}

创建 app.js

const express = require('express');
const mysql = require('mysql2/promise'); // 建议用 promise 版,写起来舒服
const app = express();
​
// 核心:这里的 host 必须填你在 docker-compose 里的服务名 'db'
const dbConfig = {
  host: 'db',
  user: 'root',
  password: '123456', // 记得改成你 compose 里的密码
  database: 'my_db'
};
​
app.get('/', (req, res) => {
  res.json({ message: "Node 容器运行成功!" });
});
​
app.get('/check-db', async (req, res) => {
  try {
    const connection = await mysql.createConnection(dbConfig);
    const [rows] = await connection.execute('SELECT "连接成功" AS status');
    await connection.end();
    res.json({ db_status: rows[0].status });
  } catch (error) {
    res.status(500).json({ error: error.message });
  }
});
​
app.listen(3000, '0.0.0.0', () => {
  console.log('Server is running on http://0.0.0.0:3000');
});

启动项目

docker-compose up -d

测试:http://localhost:3000

正常返回,则部署成功

{
  message: "Node 容器运行成功!"
}