Linux服务器安装部署 Nginx、Redis、PostgreSQL、Docker

Linux服务器安装部署 Nginx、Redis、PostgreSQL、Docker

本文将介绍在UbuntuCentOS系统中安装和配置DockerNginxRedis 以及PostgreSQL的详细步骤。以下所有操作均在 Parallels Desktop虚拟机里面操作。在实际部署时,请根据你的服务器环境、性能需求和安全要求进行适当调整。特别是对于生产环境,务必配置适当的安全措施,如防火墙规则、服务认证等。

Ubuntu 服务器安装操作

1. 安装Nginx 操作

1. 安装

运行sudo apt install nginx -y

如果出现以下错误

  1. 先执行sudo apt update

  2. 然后在sudo apt install nginx -y

出现下面截图 说明Nginx服务安装成功

2. 执行nginx -v 查看安装版本
3. 执行nginx -V 查看详情
4. 启动服务并配置开机自启

执行 sudo systemctl start nginx启动Nginx服务

执行sudo systemctl enable nginx设置开机自启

5. 验证启动

Nginx 服务启动后 默认端口是80,在内网可以通过IP直接访问

如果无法访问 防火墙配置(如果启用了ufw) 执行 sudo ufw allow 'Nginx Full'

6. 其它相关命令

在 Linux 系统中,当你使用 sudo systemctl start nginx 启动 Nginx 服务后

  1. 执行 sudo systemctl reload nginx 重新加载配置文件
  2. 执行 sudo nginx -s reload效果与 sudo systemctl reload nginx 相同
  3. 执行 sudo systemctl restart nginx 重启服务
  4. 执行 sudo nginx -t 可以测试 Nginx 配置是否正确
7. 总结
命令 作用 是否中断服务
sudo nginx -t 检查配置语法 ❌ 不中断
sudo systemctl reload nginx 平滑重载配置 ❌ 不中断
sudo nginx -s reload 同上(替代方案) ❌ 不中断
sudo systemctl restart nginx 完全重启 ⚠️ 会中断

推荐优先使用 reload,仅在必要时使用 restart

2. 安装 Redis 操作

1. 安装

执行sudo apt install -y redis-server安装 Redis

出现以下截图界面说明安装成功

执行redis-server -v 可以查看版本号

2. 启动服务并配置开机自启

执行 sudo systemctl start redis-server 启动服务

执行 sudo systemctl enable redis-server 配置开机自启

执行sudo systemctl status redis-server 查看运行状态

3. 设置Redis密码

执行 sudo nano /etc/redis/redis.conf 找到requirepass 设置密码

修改配置文件设置的密码永久生效,通过命令设置的密码 重启后会失效

然后执行sudo systemctl restart redis重启服务生效

4. 远程连接Redis配置

执行 sudo nano /etc/redis/redis.conf 找到bind 注释掉

然后执行sudo systemctl restart redis重启服务生效

5. 测试远程连接

可以使用 Navicat 远程连接测试

如果连接不上 记得执行 sudo ufw allow 6379 Redis 默认端口 6379 防火墙放行次端口

6. 总结
连接方式 命令示例
本地连接 redis-cli
指定主机和端口 redis-cli -h 127.0.0.1 -p 6379
带密码连接 redis-cli -a yourpasswordAUTH yourpassword
远程连接 redis-cli -h <server-ip> -p 6379 -a <password>
GUI 工具 Navicat / RedisInsight / Another Redis Desktop Manager

现在你应该可以成功连接 Redis 并进行操作了! 🚀

3. 安装 PostgreSQL 操作

1. 安装

执行 sudo apt install -y postgresql postgresql-contrib 安装PostgreSQL

出现下面界面界面说明安装成功

2. 启动服务并配置开机自启

执行 sudo systemctl start postgresql 启动服务

执行 sudo systemctl enable postgresql 配置开机自启

执行 sudo systemctl status postgresql 查看运行状态

3. 基本配置
  • 编辑配置文件 sudo nano /etc/postgresql/14/main/postgresql.conf 具体以安装版本为列 这里安装的版本是14,所以/etc/postgresql/14/main/postgresql.conf 找到 listen_addresseslocalhost改为*这样配置后,PostgreSQL服务器将监听所有主机发出的连接请求。

  • sudo nano /etc/postgresql/14/main/pg_hba.conf

  • 在配置文件里面找到host all all 127.0.0.1/32 scram-sha-256

host all all 127.0.0.1/32 scram-sha-256修改为host all all 0.0.0.0/0 md5

这里的0.0.0.0/0 表示允许任意IP地址访问。trust 表示信任所有的连接,不需要密码即可连接。出于安全考虑,可以将trust 改为md5或其他更安全的认证方法,这样就需要提供密码才能进行连接。

  • sudo service postgresql restart重启服务

  • sudo ufw allow 5432/tcp 确保防火墙允许 PostgreSQL 端口(默认为5432)的入站连接

  • 创建数据库密码

执行 sudo -i -u postgres切换到postgres用户

执行 psql

执行ALTER USER postgres WITH PASSWORD '你的密码'; 或者 CREATE USER 用户名 WITH PASSWORD '密码';创建用户密码

4. 测试远程连接

可以使用 Navicat 远程连接测试

4. 安装 Docker 操作

1.安装
  • 执行sudo apt install -y ca-certificates curl gnupg lsb-release
  • 执行 sudo mkdir -p /etc/apt/keyrings
  • 执行 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
  • 执行echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  • 执行sudo apt update
  • 执行sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin安装

出现以下截图说明安装成功

2. 启动服务并配置开机自启

执行 sudo systemctl start docker 启动服务

执行 sudo systemctl enable docker 配置开机自启

执行 sudo systemctl status docker 查看运行状态

2. 将当前用户加入 docker 组(避免每次使用 sudo
bash 复制代码
sudo usermod -aG docker $USER  # 将当前用户加入 docker 组
newgrp docker                  # 刷新用户组(或重新登录)
3. 修改 Docker 数据存储目录(可选
bash 复制代码
sudo systemctl stop docker           # 停止 Docker
sudo mv /var/lib/docker /data/      # 迁移数据
sudo ln -s /data/docker /var/lib/docker  # 创建软链接
sudo systemctl start docker         # 重新启动
4. 其它配置

根据实际情况自行添加

bash 复制代码
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://registry.cn-hangzhou.aliyuncs.com", # 阿里云镜像源
    "https://registry.docker-cn.com",
    "https://docker.mirrors.ustc.edu.cn"
  ],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  }

}
EOF
sudo systemctl restart docker
5. 拉取镜像

Nginx为列

官网拉取 docker pull nginx:latest 最新版

代理拉取 docker pull hub.uuuadc.top/library/nginx:latest

  • 启动容器Nginx 执行 docker run --name docker-nginx -p 8080:80 -d nginx

  • 持久化启动

bash 复制代码
docker run --name nginx-docker \
  -p 8080:80 \
  -v /your/local/html:/usr/share/nginx/html \      # 挂载网页目录
  -v /your/local/nginx.conf:/etc/nginx/nginx.conf \  # 挂载自定义配置
  -d nginx
  • 其它操作命令
bash 复制代码
docker run --name docker-nginx -p 8080:80 -d nginx
docker stop docker-nginx       # 停止容器
docker rm docker-nginx         # 删除容器
docker rm -f docker-nginx      # 强制删除运行中的容器
docker update --restart=always nginx-docker # 自动重启 比如服务器重启后容器自动恢复运行
  • 查看所以镜像列表 docker images 或者docker image ls
6. 以下是 Docker 常用命令速查表,涵盖镜像、容器、网络、日志等高频操作,方便日常使用:
  • 镜像管理
命令 说明
docker pull nginx:latest 拉取镜像(不指定标签默认 latest
docker images 查看本地镜像
docker rmi nginx 删除镜像(强制删除加 -f
docker build -t my-image . 构建镜像(基于当前目录的 Dockerfile)
docker save nginx > nginx.tar 导出镜像为文件
docker load < nginx.tar 从文件导入镜像

  • 容器生命周期
命令 说明
docker run -d --name my-nginx -p 80:80 nginx 启动容器(-d 后台运行)
docker start/stop/restart my-nginx 启动/停止/重启容器
docker rm -f my-nginx 强制删除运行中的容器
docker ps 查看运行中的容器(加 -a 显示所有)
docker update --restart=always my-nginx 设置容器开机自启

  • 容器交互与调试
命令 说明
docker exec -it my-nginx bash 进入容器交互终端
docker logs -f my-nginx 实时查看容器日志
docker cp my-nginx:/path/file.txt ./ 从容器复制文件到宿主机
docker inspect my-nginx 查看容器详细信息(IP、挂载等)
docker stats 查看容器资源占用(CPU/内存)

  • 网络管理
命令 说明
docker network ls 查看所有网络
docker network create my-net 创建自定义网络
docker run --network=my-net nginx 指定容器网络

  • 数据卷与挂载
命令 说明
docker volume create my-vol 创建数据卷
docker run -v my-vol:/app nginx 挂载数据卷到容器
docker run -v /host/path:/container/path nginx 挂载宿主机目录

  • 清理与维护
命令 说明
docker system df 查看 Docker 磁盘使用情况
docker prune 清理无用资源(镜像、容器、网络等)
docker system prune -a 彻底清理(包括未使用的镜像)

  • Docker Compose 常用命令
命令 说明
docker-compose up -d 启动服务栈(-d 后台运行)
docker-compose down 停止并删除服务栈
docker-compose logs -f 查看服务栈日志

CentOS 服务器安装操作

1. 安装Nginx操作

1. 安装

运行sudo yum install -y nginx

如果出现错误

  1. 先执行sudo yum install -y epel-release

  2. 然后在sudo yum install -y nginx

出现下面截图 说明Nginx服务安装成功

2. 执行nginx -v 查看安装版本
3. 执行nginx -V 查看详情
4. 启动服务并配置开机自启

执行 sudo systemctl start nginx启动Nginx服务

执行sudo systemctl enable nginx设置开机自启

5. 验证启动

Nginx 服务启动后 默认端口是80,在内网可以通过IP直接访问

如果无法访问防火墙配置执行

css 复制代码
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
6. 其它相关命令

在 Linux 系统中,当你使用 sudo systemctl start nginx 启动 Nginx 服务后

  1. 执行 sudo systemctl reload nginx 重新加载配置文件
  2. 执行 sudo nginx -s reload效果与 systemctl reload nginx 相同
  3. 执行 sudo systemctl restart nginx 重启服务
  4. 执行 sudo nginx -t 可以测试 Nginx 配置是否正确
7. 总结
命令 作用 是否中断服务
sudo nginx -t 检查配置语法 ❌ 不中断
sudo systemctl reload nginx 平滑重载配置 ❌ 不中断
sudo nginx -s reload 同上(替代方案) ❌ 不中断
sudo systemctl restart nginx 完全重启 ⚠️ 会中断

推荐优先使用 reload,仅在必要时使用 restart

2. 安装 Redis

1. 安装

执行 sudo yum install -y redis安装 Redis

出现以下截图界面说明安装成功

2. 启动服务并配置开机自启

执行 sudo systemctl start redis 启动服务

执行 sudo systemctl enable redis 配置开机自启

执行sudo systemctl status redis 查看运行状态

3. 设置Redis密码

执行 sudo nano /etc/redis/redis.conf 找到requirepass 设置密码

修改配置文件设置的密码永久生效,通过命令设置的密码 重启后会失效

然后执行sudo systemctl restart redis重启服务生效

4. 远程连接Redis配置

执行 sudo nano /etc/redis/redis.conf 找到bind 注释掉

然后执行sudo systemctl restart redis重启服务生效

5. 测试远程连接

可以使用 Navicat 远程连接测试

如果连接不上 记得

执行 sudo firewall-cmd --zone=public --add-port=6379/tcp --permanent Redis 默认端口 6379 防火墙放行此端口

执行 sudo firewall-cmd --reload 重新加载防火墙

3. 安装 PostgreSQL

1. 安装

执行 sudo yum install -y postgresql-server postgresql-contrib 安装PostgreSQL

出现下面界面界面说明安装成功

2. 启动服务并配置开机自启

执行 sudo postgresql-setup initdb 初始化数据库

执行 sudo systemctl start postgresql 启动服务

执行 sudo systemctl enable postgresql 配置开机自启

执行 sudo systemctl status postgresql 查看运行状态

3. 基本配置
  • 编辑配置文件 sudo vi /var/lib/pgsql/data/postgresql.conf 找到 listen_addresseslocalhost改为*这样配置后,PostgreSQL服务器将监听所有主机发出的连接请求。

  • sudo vi /var/lib/pgsql/data/pg_hba.conf

  • 在配置文件里面找到host all all 127.0.0.1/32 scram-sha-256

host all all 127.0.0.1/32 scram-sha-256修改为host all all 0.0.0.0/0 md5

这里的0.0.0.0/0 表示允许任意IP地址访问。trust 表示信任所有的连接,不需要密码即可连接。出于安全考虑,可以将trust 改为md5或其他更安全的认证方法,这样就需要提供密码才能进行连接。

  • sudo service postgresql restart重启服务

  • 防火墙设置

css 复制代码
sudo firewall-cmd --add-service=postgresql --permanent
sudo firewall-cmd --reload

确保防火墙允许 PostgreSQL 端口(默认为5432)的入站连接

  • 创建数据库密码

执行 sudo -i -u postgres切换到postgres用户

执行 psql

执行ALTER USER postgres WITH PASSWORD '你的密码'; 或者 CREATE USER 用户名 WITH PASSWORD '密码';创建用户密码

4. 测试远程连接

可以使用 Navicat 远程连接测试

4. 安装 Docker 操作

1.安装
  • 执行 sudo yum install -y yum-utils 安装必要工具

  • 执行 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 设置仓库镜像源

  • 执行sudo yum install -y docker-ce docker-ce-cli containerd.io安装

出现以下截图说明安装成功

2. 启动服务并配置开机自启

执行 sudo systemctl start docker 启动服务

执行 sudo systemctl enable docker 配置开机自启

执行 sudo systemctl status docker 查看运行状态

2. 将当前用户加入 docker 组(避免每次使用 sudo
bash 复制代码
sudo usermod -aG docker $USER  # 将当前用户加入 docker 组
newgrp docker                  # 刷新用户组(或重新登录)
3. 修改 Docker 数据存储目录(可选
bash 复制代码
sudo systemctl stop docker           # 停止 Docker
sudo mv /var/lib/docker /data/      # 迁移数据
sudo ln -s /data/docker /var/lib/docker  # 创建软链接
sudo systemctl start docker         # 重新启动
4. 其它配置

根据实际情况自行添加

bash 复制代码
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://registry.cn-hangzhou.aliyuncs.com", # 阿里云镜像源
    "https://registry.docker-cn.com",
    "https://docker.mirrors.ustc.edu.cn"
  ],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  }

}
EOF
sudo systemctl restart docker
5. 拉取镜像

Nginx为列

官网拉取 docker pull nginx:latest 最新版

代理拉取 docker pull hub.uuuadc.top/library/nginx:latest

  • 启动容器Nginx 执行 docker run --name docker-nginx -p 8080:80 -d nginx

  • 持久化启动

bash 复制代码
docker run --name nginx-docker \
  -p 8080:80 \
  -v /your/local/html:/usr/share/nginx/html \      # 挂载网页目录
  -v /your/local/nginx.conf:/etc/nginx/nginx.conf \  # 挂载自定义配置
  -d nginx
  • 其它操作命令
bash 复制代码
docker run --name docker-nginx -p 8080:80 -d nginx
docker stop docker-nginx       # 停止容器
docker rm docker-nginx         # 删除容器
docker rm -f docker-nginx      # 强制删除运行中的容器
docker update --restart=always nginx-docker # 自动重启 比如服务器重启后容器自动恢复运行
  • 查看所以镜像列表 docker images 或者docker image ls
6. 以下是 Docker 常用命令速查表,涵盖镜像、容器、网络、日志等高频操作,方便日常使用:
  • 镜像管理
命令 说明
docker pull nginx:latest 拉取镜像(不指定标签默认 latest
docker images 查看本地镜像
docker rmi nginx 删除镜像(强制删除加 -f
docker build -t my-image . 构建镜像(基于当前目录的 Dockerfile)
docker save nginx > nginx.tar 导出镜像为文件
docker load < nginx.tar 从文件导入镜像

  • 容器生命周期
命令 说明
docker run -d --name my-nginx -p 80:80 nginx 启动容器(-d 后台运行)
docker start/stop/restart my-nginx 启动/停止/重启容器
docker rm -f my-nginx 强制删除运行中的容器
docker ps 查看运行中的容器(加 -a 显示所有)
docker update --restart=always my-nginx 设置容器开机自启

  • 容器交互与调试
命令 说明
docker exec -it my-nginx bash 进入容器交互终端
docker logs -f my-nginx 实时查看容器日志
docker cp my-nginx:/path/file.txt ./ 从容器复制文件到宿主机
docker inspect my-nginx 查看容器详细信息(IP、挂载等)
docker stats 查看容器资源占用(CPU/内存)

  • 网络管理
命令 说明
docker network ls 查看所有网络
docker network create my-net 创建自定义网络
docker run --network=my-net nginx 指定容器网络

  • 数据卷与挂载
命令 说明
docker volume create my-vol 创建数据卷
docker run -v my-vol:/app nginx 挂载数据卷到容器
docker run -v /host/path:/container/path nginx 挂载宿主机目录

  • 清理与维护
命令 说明
docker system df 查看 Docker 磁盘使用情况
docker prune 清理无用资源(镜像、容器、网络等)
docker system prune -a 彻底清理(包括未使用的镜像)

  • Docker Compose 常用命令
命令 说明
docker-compose up -d 启动服务栈(-d 后台运行)
docker-compose down 停止并删除服务栈
docker-compose logs -f 查看服务栈日志

前端开发人员Nginx相关配置

1. 对于 History 路由

路由配置

js 复制代码
import { createRouter, createWebHistory,createWebHashHistory } from "vue-router";


const base = import.meta.env.BASE_URL;// base为 /
const history = createWebHistory(base)
const has = createWebHashHistory(base)

const router = createRouter({
    history: history,
    routes: [
        { path: '/', component: () => import('@/pages/index.vue')},
        { path: '/test', component: () => import('@/pages/test/index.vue')},
    ]
})

Nginx配置

nginx 复制代码
server {
    listen 8080;
    server_name  localhost;
    location / {
	root   /var/www/html/dist;
        index  index.html index.html;
    }
}

如果此时我们访问 /test 页面会404

需要修改Nginx配置

nginx 复制代码
server {
    listen 8080;
    server_name  localhost;
    location / {
	root   /var/www/html/dist;
        index  index.html index.html;
        try_files $uri $uri/ /index.html;
    }
}

此时页面刷新不会404

如果使用二级路由或多级路由 比如 base: '/hello'对应的Nginx配置

nginx 复制代码
server {
    listen 8080;
    server_name  localhost;
    location /hello {
	alias   /var/www/html/dist;
        index  index.html index.html;
        try_files $uri $uri/ hello/index.html;
    }
}

root-> alias

2. 对于 Hash 路由

如果是一级路由对应的 Nginx 配置

nginx 复制代码
server {
    listen 8080;
    server_name  localhost;
    location / {
	root   /var/www/html/dist;
        index  index.html index.html;
    }
}

如果是二级或多级路由对应的 Nginx 配置

nginx 复制代码
server {
    listen 8080;
    server_name  localhost;
    location /hello {
	alias   /var/www/html/dist;
        index  index.html index.html;
    }
}

root-> alias

3. 接口代理
js 复制代码
location /oauth {
    proxy_pass  http://192.168.0.18:31123;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
4. mqtt代理

需要在http同级添加

bash 复制代码
stream {
    server {
        listen 1883; # 端口号
        proxy_pass mqtt.carbonlarity.org:1883;# 代理的mqtt地址
    }
}
5. WebSocket代理
js 复制代码
server {
    listen       7002;
    server_name  localhost;
    location / {
	root   /Volumes/magic/webgl/;
	index  index.html index.html;
	try_files $uri $uri/ /index.html;
    }
    location /socket {
        proxy_pass              http://192.168.0.18:31112;
        proxy_request_buffering off;  # 对于大文件上传很有用
        proxy_buffering off;          # 禁用缓冲
        # WebSocket 必需配置
        proxy_http_version      1.1;
        proxy_set_header        Upgrade $http_upgrade;
        proxy_set_header        Connection "upgrade";
        # 必需的头信息
        proxy_set_header    Host $host;
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Proto $scheme;
        # 确保传递 Content-Type(针对 multipart/form-data)
        proxy_set_header    Content-Type $content_type;
    }
}
相关推荐
gnip16 分钟前
包管理工具的发展
前端
多吃蔬菜!!!24 分钟前
vscode 搭建C/C++开发环境搭建(linux)
linux·c语言·c++
李李李li32 分钟前
Ubuntu 22.04 安装tensorrt
linux·tensorrt
前端工作日常1 小时前
H5 实时摄像头 + 麦克风:完整可运行 Demo 与深度拆解
前端·javascript
韩沛晓1 小时前
uniapp跨域怎么解决
前端·javascript·uni-app
前端工作日常1 小时前
以 Vue 项目为例串联eslint整个流程
前端·eslint
程序员鱼皮1 小时前
太香了!我连夜给项目加上了这套 Java 监控系统
java·前端·程序员
该用户已不存在2 小时前
这几款Rust工具,开发体验直线上升
前端·后端·rust
前端雾辰2 小时前
Uniapp APP 端实现 TCP Socket 通信(ZPL 打印实战)
前端
无羡仙2 小时前
虚拟列表:怎么显示大量数据不卡
前端·react.js