nginx部署项目

简介

Nginx入门指南

轻量级的 HTTP 服务器。

基本命令

nginx安装目录:使用whereis nginx查看安装路径

启动nginx:安装目录/sbin/nginx

停止nginx:安装目录/sbin/nginx -s stop

重启nginx:安装目录/sbin/nginx -s reload

查看nginx是否正在运行:netstat -anput | grep nginx

配置文件

配置文件路径:/usr/local/nginx/conf/nginx.conf

日志路径:/usr/local/nginx/logs/

配置文件介绍:

server {  
        # 当nginx接到请求后,会匹配其配置中的service模块
        # 匹配方法就是将请求携带的host和port去跟配置中的server_name和listen相匹配
        listen       8080;        
        server_name  localhost; # 定义当前虚拟主机(站点)匹配请求的主机名

        location / {
            root   html; # Nginx默认值
            # 设定Nginx服务器返回的文档名
            index  index.html index.htm; # 先找根目录下的index.html,如果没有再找index.htm
        }
}

server{ } 其实是包含在 http{ } 内部的。每一个 server{ } 是一个虚拟主机(站点)。

应用

动静分离

在这里插入图片描述

静态请求直接从 nginx 服务器所设定的根目录路径去取对应的资源,动态请求转发给后端去处理。不仅能给应用服务器减轻压力,将后台api接口服务化,还能将前后端代码分开并行开发和部署。

后端部署

  1. 修改配置文件,如端口、主机等;

  2. 执行 package 打包项目,在 target 目录下生成 jar 包,上传到服务器;

  3. jar 包目录下运行 ./start.sh 启动服务;

    启动脚本 start.sh:nohup java -jar xxx.jar --spring.profiles.active=prod &

    停止脚本 stop.sh:

   PID=$(ps -ef | grep eladmin-system-2.4.jar | grep -v grep | awk '{ print $2 }')
   if [ -z "$PID" ]
   then
   echo Application is already stopped
   else
   echo kill $PID
   kill $PID
   fi

新建 log 文件 nohup.out:touch nohup.out

查看日志脚本 log.sh:tail -f nohup.out

所有脚本放在同一目录下。

  1. 运行 ./stop.sh 停止服务

  2. 运行 ./log.sh查看日志

  3. 配置 nginx。使用 nginx 代理 Java 服务。

   #auth|api|avatar开头的请求发送到后端服务上
   location ~* ^/(auth|api|avatar|file/) {
       proxy_pass http://localhost:8000;
       proxy_set_header Host $http_host;
       proxy_connect_timeout 150s;
       proxy_send_timeout 150s;
       proxy_read_timeout 150s;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   }

前端部署

  1. 修改后端接口地址 http://xxx:80,请求会被代理到http://127.0.0.1:8000

  2. npm run rebuild:prod 打包项目生成 dist 文件夹,上传到服务器项目目录下;

  3. 配置 nginx。

       server {
           listen 80; #localhost:80请求nginx服务器时,该请求就会被匹配进该代码块的 server{ } 中执行。
           server_name  localhost;
           root /home/eladmin/file/dist;
           index index.html;
           #charset koi8-r;
   
           #access_log  logs/host.access.log  main;
   
           location / {
               try_files $uri $uri/ @router;
               index  index.html;
           }
   
           location @router {
               rewrite ^.*$ /index.html last;
           }
           #auth|api|avatar开头的请求发送到后端服务上
           location ~* ^/(auth|api|avatar|file/) {
               proxy_pass http://localhost:8000;
               proxy_set_header Host $http_host;
               proxy_connect_timeout 150s;
               proxy_send_timeout 150s;
               proxy_read_timeout 150s;
               proxy_set_header X-Real-IP $remote_addr;
               proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           }
   	}

多站点配置

nginx 配置:

  1. /etc/nginx/nginx.conf 中 http 节点增加include /etc/nginx/conf.d/*.conf 不同站点使用不同的配置文件。
   http {
       include       mime.types;
       default_type  application/octet-stream;
       keepalive_timeout  65;
   
       include /etc/nginx/conf.d/*.conf; #配置多个站点
       
   	server {
   		xxx
   	}
   	xxx
   }
  1. 新建/etc/nginx/conf.d/blog.conf,配置nginx:
   #blog
   server {
       listen       80;
       server_name  localhost;
       #访问vue项目
       location / {
           root   /home/blog/dist;
           index  index.html;
       }
       #将api转发到后端
       location /api/ {
           proxy_pass http://129.204.179.3:8001/;
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header REMOTE-HOST $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       }
       #转发图片请求到后端
       location /img/ {
           proxy_pass http://129.204.179.3:8001/img/;
       }
   }

后端部署:

  1. idea–maven–project name–lifecycle–package,打包项目,在target目录生成 jar 包,拷贝到服务器。这里存放到 /home/blog 目录下。

  2. 导入项目 sql 文件 source blog.sql

  3. 运行 jar 包。

   #不挂断地运行命令;&表示后台运行;输出都将附加到当前目录的 nohup.out 文件
   nohup java -jar blog-springboot-1.0.jar &
   
   #结束运行
   PID=$(ps -ef | grep blog-springboot-1.0.jar | grep -v grep | awk '{ print $2 }')
   if [ -z "$PID" ]
   then
   echo Application is already stopped
   else
   echo kill -9 $PID
   kill -9 $PID
   fi

前端部署:运行 npm run build 生成 dist 文件夹,将 dist 文件夹下面的文件拷贝到 /home/blog/dist 目录。

环境准备:启动 mysql、redis、rabbitmq 等。

service mysqld start
/sbin/service rabbitmq-server start

启动 nginx:安装目录/sbin/nginx

HTTPS配置

nginx配置HTTPS

  1. 安装 nginx ssl模块;

  2. 申请 ssl 证书,下载证书,复制到服务器某个目录下;

  3. 修改 /usr/local/nginx/conf/nginx.conf 文件

   server {
       listen       80;
       server_name  localhost;
       rewrite ^(.*)$ https://$host$1 permanent; #http请求会被转发到https
       #访问vue项目
       location / {
           root   /home/blog/dist;
           index  index.html;
       }
       #将api转发到后端
       location /api/ {
           proxy_pass http://129.204.179.3:8001/;
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header REMOTE-HOST $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       }
       #转发图片请求到后端
       location /img/ {
           proxy_pass http://129.204.179.3:8001/img/;
       }
   }
   server {
           listen 443 ssl;  # 1.1版本后这样写
           server_name tysonbin.com; #填写绑定证书的域名
           ssl_certificate /usr/local/nginx/cert/1_tysonbin.com_bundle.crt;  # 指定证书的位置,绝对路径
           ssl_certificate_key /usr/local/nginx/cert/2_tysonbin.com.key;  # 绝对路径
           ssl_session_timeout 5m;
           ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
           ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
           ssl_prefer_server_ciphers on;
           location / {
               root   /home/blog/dist; #站点目录,绝对路径
               index  index.html;
           }
   
       #将api转发到后端
       location /api/ {
           proxy_pass https://tysonbin.com:8001/;
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header REMOTE-HOST $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       }
       #转发图片请求到后端
       location /img/ {
           proxy_pass https://tysonbin.com:8001/img/;
       }
   }
  1. 执行/usr/local/nginx/sbin/nginx -s reload,重启nginx。

springboot配置https:

  1. 复制 tomcat 目录下的 tysonbin.com.jks 到 application.yml 同级目录。

  2. 修改 application.yml:

   server:
     port: 8001
     ssl:
       #SSL证书路径 一定要加上classpath:
       key-store: classpath:tysonbin.com.jks
       #SSL证书密码,在证书tomcat目录下的keystorePass.txt或者是设置的私钥密码
       key-store-password: tx.123456
       #证书类型
       key-store-type: JKS
  1. 重新生成jar包,将jar包和tysonbin.com.jks文件一起放到服务器同一个目录下。
  • 18
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用nginx部署项目的步骤如下: 1. 首先,你需要安装nginx服务器。你可以参考引用提供的链接来进行安装。 2. 安装完成后,将你的项目文件夹(比如dist文件夹)上传到nginx的html目录下,一般路径为/usr/local/nginx/html。可以参考引用中的指令将dist文件夹上传到指定路径。 3. 启动nginx服务器。可以使用以下命令来启动nginxnginx。 4. 在浏览器中访问你的项目。如果你的nginx配置了默认端口80,那么可以直接通过服务器地址访问你的项目,例如http://localhost/。如果你有多个项目并且使用相同的端口,可以通过在nginx配置文件中使用location来区分项目。可以参考引用中的说明。 5. 如果你有多个项目,你可以根据需要在nginx的配置文件中做相应的修改。比如,你可以在/usr/local/nginx/conf/nginx.conf文件中添加新的location节点,并使用alias指定新的项目路径。具体的操作可以参考引用中的示例。 请注意,以上步骤是一种常见的使用nginx部署项目的方法,具体的步骤可能会因为实际情况而有所不同。建议在进行部署前先了解你的项目和服务器的配置,并根据需要进行相应的调整。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [nginx部署项目](https://blog.csdn.net/ziyexiuxiu/article/details/125226110)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

懒人w

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值