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)
sudo usermod -aG docker $USER # 将当前用户加入 docker 组
newgrp docker # 刷新用户组(或重新登录)
3. 修改 Docker 数据存储目录(可选
sudo systemctl stop docker # 停止 Docker
sudo mv /var/lib/docker /data/ # 迁移数据
sudo ln -s /data/docker /var/lib/docker # 创建软链接
sudo systemctl start docker # 重新启动
4. 其它配置
根据实际情况自行添加
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 -
持久化启动
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
- 其它操作命令
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直接访问
如果无法访问防火墙配置执行
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重启服务 -
防火墙设置
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)
sudo usermod -aG docker $USER # 将当前用户加入 docker 组
newgrp docker # 刷新用户组(或重新登录)
3. 修改 Docker 数据存储目录(可选
sudo systemctl stop docker # 停止 Docker
sudo mv /var/lib/docker /data/ # 迁移数据
sudo ln -s /data/docker /var/lib/docker # 创建软链接
sudo systemctl start docker # 重新启动
4. 其它配置
根据实际情况自行添加
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 -
持久化启动
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
- 其它操作命令
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 路由
路由配置
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配置
server {
listen 8080;
server_name localhost;
location / {
root /var/www/html/dist;
index index.html index.html;
}
}
如果此时我们访问 /test 页面会404
需要修改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配置
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 配置
server {
listen 8080;
server_name localhost;
location / {
root /var/www/html/dist;
index index.html index.html;
}
}
如果是二级或多级路由对应的 Nginx 配置
server {
listen 8080;
server_name localhost;
location /hello {
alias /var/www/html/dist;
index index.html index.html;
}
}
root-> alias
3. 接口代理
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同级添加
stream {
server {
listen 1883; # 端口号
proxy_pass mqtt.carbonlarity.org:1883;# 代理的mqtt地址
}
}
5. WebSocket代理
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;
}
}