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

Ubuntu 服务器安装操作
1. 安装Nginx 操作
1. 安装
运行sudo apt install nginx -y
如果出现以下错误

-
先执行
sudo apt update
-
然后在
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 服务后
- 执行
sudo systemctl reload nginx
重新加载配置文件 - 执行
sudo nginx -s reload
效果与sudo systemctl reload nginx
相同 - 执行
sudo systemctl restart nginx
重启服务 - 执行
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 yourpassword 或 AUTH 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_addresses 将localhost
改为*
这样配置后,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
如果出现错误
-
先执行
sudo yum install -y epel-release
-
然后在
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 服务后
- 执行
sudo systemctl reload nginx
重新加载配置文件 - 执行
sudo nginx -s reload
效果与systemctl reload nginx
相同 - 执行
sudo systemctl restart nginx
重启服务 - 执行
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_addresses 将localhost
改为*
这样配置后,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;
}
}