昨天买了个香港服务器,打算开始学习折腾一下服务器相关技能,写这篇笔记加深一下印象。
服务器信息: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 容器运行成功!"
}