【黑马点评上线】保姆级教程(一)——项目前端上传服务器,载入Nginx容器历程······
JAVA技术开发员 2024-10-03 15:33:01 阅读 52
黑马点评项目在开发环境中使用了Windows版的nginx,当你要将其部署到Linux服务器上时,你需要重新下载适用于Linux系统的nginx版本。Windows和Linux系统之间存在底层架构和可执行文件格式的差异,因此不能直接将Windows上的nginx文件用于Linux服务器。
我在服务器端使用了docker快速部署了nginx容器,但是前端项目和配置文件都需要进行修改,下面就是我修改的思路历程。
一、上传本机nginx文件
1.上传nginx.conf文件
上传nginx.conf文件到自定义目录,我将整个这里nginx-1.18.0上传到了 /home/user/ 文件夹下
如果使用宝塔面板下载好的nginx,需要在其目录自行修改这些文件。如果和我一样使用docker容器里的nginx就不需要去改了。
nginx.conf
<code># 设置工作进程数,一般设置为服务器CPU核心数
worker_processes 1;
# 设定NGINX的工作模式及连接数上限
events {
worker_connections 1024; # 单个进程最大连接数
}
http {
# 文件扩展名与MIME类型映射
include mime.types;
# 默认类型为json,适合API接口响应
default_type application/json;
# 开启高效文件传输模式
sendfile on;
# 连接保持超时时间
keepalive_timeout 65;
# 配置服务器块
server {
# 监听端口
listen 8080;
# 服务器域名或IP
server_name localhost;
# 静态资源服务配置,指定前端项目目录
location / {
root html/hmdp; # 前端资源根目录
index index.html index.htm; # 默认主页文件
}
# 错误页面处理
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html; # 错误页面文件所在目录
}
# API接口反向代理配置
location /api {
# 设置默认响应类型为json
default_type application/json;
# 支持长连接,优化性能
keepalive_timeout 30s;
keepalive_requests 1000;
# 配置以支持HTTP/1.1的Keep-Alive特性
proxy_http_version 1.1;
# 重写URL去掉/api前缀
rewrite /api(/.*) $1 break;
# 传递请求头到后端服务器
proxy_pass_request_headers on;
# 当后端服务器出现问题时的重试逻辑配置(此处被注释,表示使用默认)
# proxy_next_upstream error timeout;
# 将/api开头的请求代理到后端服务器集群,使用backend定义的服务器列表
proxy_pass http://backend;
}
}
# 后端服务器集群配置
upstream backend {
# 配置两台后端服务器,端口分别为8081和8082,具备故障转移和负载均衡能力
server 127.0.0.1:8081 max_fails=5 fail_timeout=10s weight=1; # 最大失败次数、失败后暂停时间、权重
server 127.0.0.1:8082 max_fails=5 fail_timeout=10s weight=1;
}
}
2.上传前端项目
如果上一步已经将本地的整个nginx文件夹上传到了服务器,那么这一步也不用做。
使用宝塔面板下载好的nginx,需要在其目录里自行添加前端项目。
将本地的html整个文件目录上传到 /server/nginx/
这样nginx需要的文件基本都有了。
3.阶段总结
<code>nginx.conf 是 Nginx 服务器的主要配置文件,它定义了服务器的全局和局部配置设置,用于控制 Nginx 如何处理请求、如何与其他服务交互以及如何提供静态内容或代理到后端服务器等。
Nginx 配置文件主要包括以下几个核心部分,我们可以结合您提供的配置示例来具体说明:
1. 全局配置
worker_processes: 指定 Nginx 工作进程的数量。例如:
worker_processes 1;
2. 事件处理模型配置 (events
)
worker_connections: 每个工作进程可以同时打开的最大连接数。
events {
worker_connections 1024;
}
3. HTTP配置 (http
)
3.1 MIME类型和默认类型
include: 引入MIME类型配置文件
http {
include mime.types;
default_type application/json;
}
3.2 文件传输和连接保持
sendfile: 开启高效文件传输模式
sendfile on;
keepalive_timeout 65;
4. 服务器块 (server
)
4.1 监听与服务器名称
listen: 指定服务器监听的端口
server {
listen 8080;
server_name localhost;
}
4.2 静态资源服务
location: 配置如何处理特定的URL路径请求。
location / {
root html/hmdp; # 静态文件根目录
index index.html index.htm; # 默认首页文件
}
4.3 错误页面处理
error_page: 定义错误状态码对应的自定义错误页面。
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
4.4 反向代理和负载均衡
location: 配置反向代理到后端服务器。proxy_pass: 指定后端服务器地址。upstream: 定义一组后端服务器。
location /api {
proxy_pass http://backend;
# ...其他反向代理配置
}
upstream backend {
server 127.0.0.1:8081 max_fails=5 fail_timeout=10s;
server 127.0.0.1:8082 max_fails=5 fail_timeout=10s;
}
5. 日志配置
虽然您提供的配置示例中没有直接展示日志配置,但通常Nginx配置还会包括错误日志和访问日志的配置,例如:
http {
access_log /var/log/nginx/access.log combined;
error_log /var/log/nginx/error.log warn;
# ...
}
以上就是Nginx配置文件中一些核心部分的介绍及示例,实际配置会根据应用场景更加复杂和详细,包括但不限于Gzip压缩、SSL/TLS证书配置、缓存设置、限流策略等。
二、运行nginx容器
如果是服务器里的nginx,在其所在目录的命令行输入以下命令,重新加载nginx配置,使其生效。
nginx -s reload
如果使用docker容器,那么就这样操作:使用最新版应该无妨
docker pull nginx:1.18.0
确保下载好images
运行如下命令:我的目录在/home/user/nginx-1.18.0,如果自定义需要替换
<code> docker run -d -p 8080:8080 -v /home/user/nginx-1.18.0/html/hmdp:/etc/nginx/html/hmdp -v /home/user/nginx-1.18.0/html:/etc/nginx/html -v /home/user/nginx-1.18.0/conf/nginx.conf:/etc/nginx/nginx.conf nginx:1.18.0
查看运行容器情况
docker ps
如果没有则,检查是否意外exit
docker ps -a
并查看日志
docker logs 容器ID/name
运行成功
前端可以正常访问。
出现的错误:
1.容器以为端口被占用退出。
如果8080端口被占用:
那就是服务器里的nginx服务占用了8080端口,需要找到占用的进程ID,并且kill掉
查看端口占用:
<code>netstat -ntulp | grep 8080
找到对应进程,kill掉
kill进程:
<code>sudo kill 进程ID
# 如果kill命令不起作用,尝试强制终止
sudo kill -9 进程ID
如果重启容器还是不行,那就说明依然有进程占用80端口,没有kill完,继续找对应进程ID,kill!
2.容器端口配置异常
检查nginx容器日志输出,查看原因
docker logs 容器ID/name
如果nginx正常启动,访问8080端口,没有任何反应,应该考虑端口是否匹配,和防火墙是否开放
这个项目里nginx配置文件nginx.conf中配置了,监听了8080端口,所以检查nginx.conf是否正确,docker容器启动配置的是否正确,防火墙端口是否开放。
<code>server {
# 监听端口
listen 8080;
#.....
}
8080:8080 (宿主机端口:容器端口)
防火墙确认打开
3.启动容器时挂载文件夹配置异常
-v /home/user/nginx-1.18.0/html:/etc/nginx/html(宿主机上的目录路径:容器内的目录路径)
Nginx试图访问的路径是<code>/etc/nginx/html/hmdp/index.html,确保路径正确
# -v /home/user/nginx-1.18.0/html:/usr/share/nginx/html
-v /home/user/nginx-1.18.0/html:/etc/nginx/html
需要仔细修改:
docker run -d -p 8080:8080 -v /home/user/nginx-1.18.0/html/hmdp:/etc/nginx/html/hmdp -v /home/user/nginx-1.18.0/html:/etc/nginx/html -v /home/user/nginx-1.18.0/conf/nginx.conf:/etc/nginx/nginx.conf nginx:1.18.0
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。