easypan部署记录

news2025/1/11 7:48:19

文章目录

  • 项目部署
    • 学习链接
    • 1.安装ffmpeg
      • linux centos下安装ffmpeg的详细教程
    • 2. springboot + maven 多环境配置文件
      • pom.xml
      • application.properties
      • application-dev.properties
      • application-prod.properties
      • logback.xml
    • 3. 配置nginx
      • 配置要点
      • nginx配置
    • 4. 启动项目
    • 5.访问

项目部署

学习链接

linux下安装ffmpeg的详细教程 - 完全参照这个安装的
FFmpeg视频处理入门教程----从安装到使用(Linux版)
linux下ffmpeg安装教程(小学生都能看懂)

文件上传java报Processing of multipart/form-data request failed. java.io.EOFException: Unexpected EOF read

1.安装ffmpeg

linux centos下安装ffmpeg的详细教程

1、下载解压

wget http://www.ffmpeg.org/releases/ffmpeg-3.1.tar.gz
tar -zxvf ffmpeg-3.1.tar.gz 

2、 进入解压后目录,输入如下命令/usr/local/ffmpeg为自己指定的安装目录

cd ffmpeg-3.1
./configure --prefix=/usr/local/ffmpeg
make && make install

3、配置变量

vi /etc/profile
在最后PATH添加环境变量:
export PATH=$PATH:/usr/local/ffmpeg/bin
保存退出
查看是否生效
source /etc/profile  设置生效

4、查看版本

ffmpeg -version    # 查看版本

注意,若安装过程中出现以下错误

yasm/nasm not found or too old. Use –disable-yasm for a crippled build. If you think configure made a mistake, make sure you are using the latest version from Git. If the latest version fails, report the problem to the ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net. Include the log file “config.log” produced by configure as this will help solve the problem.

需要安装 yasm

wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar -zxvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure
make && make install

2. springboot + maven 多环境配置文件

因为分为本地开发环境 和 正式环境,如果是每次切换环境,还要把配置文件的参数改来改去的话,就太麻烦了,因此使用springboot支持的profile指定多环境配置。

pom.xml

  • 需要在maven中使用Profiles标签配置本地开发dev环境线上正式prod环境,方便使用maven切换环境,并且此时可在application.properties中使用@profileActive@来引用maven选择的环境,让指定的环境的配置文件生效。
  • 在build标签下,创建resources标签,再在resource标签下创建resource,将指定环境下的配置文件纳入到打包中(这步可以不做)
    <?xml version="1.0" encoding="UTF-8"?>
    
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.6.1</version>
            <relativePath/>
        </parent>
    
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.easypan</groupId>
        <artifactId>easypan</artifactId>
        <version>1.0</version>
        <packaging>jar</packaging>
        <name>easypan</name>
        <description>easypan</description>
    
        <properties>
            <java.version>1.8</java.version>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
            <skipTests>true</skipTests>
    
            <springboot.version>2.6.1</springboot.version>
            <mybatis.version>1.3.2</mybatis.version>
            <logback.version>1.2.10</logback.version>
            <mysql.version>8.0.23</mysql.version>
            <aspectjweaver.version>1.9.4</aspectjweaver.version>
            <okhttp3.version>3.2.0</okhttp3.version>
            <fastjson.version>1.2.66</fastjson.version>
            <commons.lang3.version>3.4</commons.lang3.version>
            <commons.codec.version>1.9</commons.codec.version>
            <commons.io.version>2.5</commons.io.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <exclusions>
                    <exclusion>
                        <groupId>ch.qos.logback</groupId>
                        <artifactId>logback-classic</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>ch.qos.logback</groupId>
                        <artifactId>logback-core</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
    
    	    <!--邮件发送-->
    	    <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-mail</artifactId>
                <version>${springboot.version}</version>
            </dependency>
    	    <!--redis -->
    	    <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-redis</artifactId>
                <version>${springboot.version}</version>
            </dependency>
    
    	    <!--mybatis-->
    	    <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>${mybatis.version}</version>
            </dependency>
    
    
    	    <!-- 数据库-->
    	    <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>
    
    
    	    <!-- 日志版本 -->
    	    <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
                <version>${logback.version}</version>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-core</artifactId>
                <version>${logback.version}</version>
            </dependency>
    
    	    <!--切面-->
    	    <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjweaver</artifactId>
                <version>${aspectjweaver.version}</version>
            </dependency>
    
    	    <!--okhttp-->
    	    <dependency>
                <groupId>com.squareup.okhttp3</groupId>
                <artifactId>okhttp</artifactId>
                <version>${okhttp3.version}</version>
            </dependency>
    
    	    <!--fastjson-->
    	    <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>${fastjson.version}</version>
            </dependency>
    
    	    <!--apache common-->
    	    <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>${commons.lang3.version}</version>
            </dependency>
    
            <dependency>
                <groupId>commons-codec</groupId>
                <artifactId>commons-codec</artifactId>
                <version>${commons.codec.version}</version>
            </dependency>
    
            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>${commons.io.version}</version>
            </dependency>
        </dependencies>
    
        <profiles>
            <profile>
                <!-- 开发环境  -->
                <id>dev</id>
                <properties>
                    <profileActive>dev</profileActive>
                </properties>
                <!-- 默认激活的环境  -->
                <activation>
                    <activeByDefault>true</activeByDefault>
                </activation>
            </profile>
            <profile>
                <!-- 生产环境  -->
                <id>prod</id>
                <properties>
                    <profileActive>prod</profileActive>
                </properties>
            </profile>
        </profiles>
    
        <build>
            <resources>
                <resource>
                    <directory>src/main/resources</directory>
                    <includes>
                        <include>application-${profileActive}.yml</include>
                        <include>application.yml</include>
                        <include>**/*.xml</include>
                        <include>application.properties</include>
                        <include>application-${profileActive}.properties</include>
                    </includes>
                    <filtering>true</filtering>
                </resource>
                <resource>
                    <directory>src/main/java</directory>
                    <includes>
                        <include>**/*.xml</include>
                    </includes>
                </resource>
            </resources>
    
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <version>2.2.6.RELEASE</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>
                                    repackage
                                </goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <mainClass>com.easypan.EasyPanApplication</mainClass>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>
    
    

application.properties

使用@profileActive@可以引用使用maven选择的环境

在这里插入图片描述

#spring.profiles.active=prod
spring.profiles.active=@profileActive@

application-dev.properties

本地开发环境配置

# 应用服务 WEB 访问端口
server.port=7090
server.servlet.context-path=/api
#session过期时间 60M 一个小时
server.servlet.session.timeout=PT60M
#处理favicon
spring.mvc.favicon.enable=false
spring.servlet.multipart.max-file-size=15MB
spring.servlet.multipart.max-request-size=15MB
#错误页处理
spring.mvc.throw-exception-if-no-handler-found=true
spring.web.resources.add-mappings=false
#数据库配置
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/easypan?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.hikari.pool-name=HikariCPDatasource
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.idle-timeout=180000
spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.auto-commit=true
spring.datasource.hikari.max-lifetime=1800000
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.connection-test-query=SELECT 1
#发送邮件配置相关
# 配置邮件服务器的地址 smtp.qq.com
spring.mail.host=smtp.qq.com
# 配置邮件服务器的端口(465或587)
spring.mail.port=587
# 配置用户的账号
spring.mail.username=1255112011@qq.com
# 配置用户的密码
spring.mail.password=填入自己的授权码
# 配置默认编码
spring.mail.default-encoding=UTF-8
# SSL 连接配置
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
# 开启 debug,这样方便开发者查看邮件发送日志
spring.mail.properties.mail.debug=true
#邮件配置结束
#Spring redis配置
# Redis数据库索引(默认为0)
spring.redis.database=0
spring.redis.host=127.0.0.1
spring.redis.port=6379
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.jedis.pool.max-active=20
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.jedis.pool.max-wait=-1
# 连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle=10
# 连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle=0
# 连接超时时间(毫秒)
spring.redis.timeout=2000
#项目目录
project.folder=D:/document/easypan/easypan-java/
#日志级别配置
log.root.level=info
#超级管理员id
admin.emails=1255112011@qq.com
#是否是开发环境
dev=true
##qq登陆相关##
qq.app.id=123456
qq.app.key=123456
qq.url.authorization=https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=%s&redirect_uri=%s&state=%s
qq.url.access.token=https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id=%s&client_secret=%s&code=%s&redirect_uri=%s
qq.url.openid=https://graph.qq.com/oauth2.0/me?access_token=%S
qq.url.user.info=https://graph.qq.com/user/get_user_info?access_token=%s&oauth_consumer_key=%s&openid=%s
qq.url.redirect=http://easypan.wuhancoder.com/qqlogincalback

application-prod.properties

# 应用服务 WEB 访问端口
server.port=7091
server.servlet.context-path=/api
#session过期时间 60M 一个小时
server.servlet.session.timeout=PT60M
#处理favicon
spring.mvc.favicon.enable=false
spring.servlet.multipart.max-file-size=15MB
spring.servlet.multipart.max-request-size=15MB
#错误页处理
spring.mvc.throw-exception-if-no-handler-found=true
spring.web.resources.add-mappings=false
#数据库配置
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/easypan?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=数据库密码
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.hikari.pool-name=HikariCPDatasource
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.idle-timeout=180000
spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.auto-commit=true
spring.datasource.hikari.max-lifetime=1800000
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.connection-test-query=SELECT 1
#发送邮件配置相关
# 配置邮件服务器的地址 smtp.qq.com
spring.mail.host=smtp.qq.com
# 配置邮件服务器的端口(465或587)
spring.mail.port=587
# 配置用户的账号
spring.mail.username=1255112011@qq.com
# 配置用户的密码
spring.mail.password=填入自己的授权码
# 配置默认编码
spring.mail.default-encoding=UTF-8
# SSL 连接配置
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
# 开启 debug,这样方便开发者查看邮件发送日志
spring.mail.properties.mail.debug=true
#邮件配置结束
#Spring redis配置
# Redis数据库索引(默认为0)
spring.redis.database=0
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=填写redis密码
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.jedis.pool.max-active=20
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.jedis.pool.max-wait=-1
# 连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle=10
# 连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle=0
# 连接超时时间(毫秒)
spring.redis.timeout=2000
#项目目录
project.folder=/usr/local/blog/easypan/backend/
#日志级别配置
log.root.level=info
#超级管理员id
admin.emails=1255112011@qq.com
#是否是开发环境
dev=true
##qq登陆相关##
qq.app.id=123456
qq.app.key=123456
qq.url.authorization=https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=%s&redirect_uri=%s&state=%s
qq.url.access.token=https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id=%s&client_secret=%s&code=%s&redirect_uri=%s
qq.url.openid=https://graph.qq.com/oauth2.0/me?access_token=%S
qq.url.user.info=https://graph.qq.com/user/get_user_info?access_token=%s&oauth_consumer_key=%s&openid=%s
qq.url.redirect=http://easypan.wuhancoder.com/qqlogincalback

logback.xml

<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="true" scanPeriod="10 minutes">

    <appender name="stdot" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%d{yyyy-MM-dd HH:mm:ss,GMT+8} [%p][%c][%M][%L]-> %m%n</pattern>
        </layout>
    </appender>

    <springProperty scope="context" name="log.path" source="project.folder"/>
    <springProperty scope="context" name="log.root.level" source="log.root.level"/>

    <property name="LOG_FOLDER" value="logs"/>
    <property name="LOG_FILE_NAME" value="easypan.log"/>

    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/${LOG_FOLDER}/${LOG_FILE_NAME}</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${log.path}/${LOG_FOLDER}/${LOG_FILE_NAME}.%d{yyyyMMdd}.%i</FileNamePattern>
            <cleanHistoryOnStart>true</cleanHistoryOnStart>
            <TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <MaxFileSize>20MB</MaxFileSize>
            </TimeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <charset>utf-8</charset>
            <pattern>%d{yyyy-MM-dd HH:mm:ss,GMT+8} [%p][%c][%M][%L]-> %m%n</pattern>
        </encoder>
        <append>false</append>
        <prudent>false</prudent>
    </appender>

    <root level="${log.root.level}">
        <appender-ref ref="stdot"/>
        <appender-ref ref="file"/>
    </root>

</configuration>

3. 配置nginx

配置要点

有两个东西需要配置:

  • 网盘的前端项目访问 和 后台接口请求转发 配置

  • 文件上传配置参数(遇到过问题:上传到5M的时候,就停了,然后报错如下。本地是可以上传超过5M的,因此怀疑是nginx的配置相关的问题,可参考这篇解决:文件上传java报Processing of multipart/form-data request failed. java.io.EOFException: Unexpected EOF read

    Caused by: java.io.IOException: org.apache.tomcat.util.http.fileupload.impl.IOFileUploadException: Processing of multipart/form-data request failed. java.io.EOFException
    	at org.apache.catalina.connector.Request.parseParts(Request.java:2966)
    	at org.apache.catalina.connector.Request.getParts(Request.java:2823)
    	at org.apache.catalina.connector.RequestFacade.getParts(RequestFacade.java:1098)
    	at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.parseRequest(StandardMultipartHttpServletRequest.java:95)
    	... 43 common frames omitted
    Caused by: org.apache.tomcat.util.http.fileupload.impl.IOFileUploadException: Processing of multipart/form-data request failed. java.io.EOFException
    	at org.apache.tomcat.util.http.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:292)
    	at org.apache.catalina.connector.Request.parseParts(Request.java:2921)
    	... 46 common frames omitted
    Caused by: org.apache.catalina.connector.ClientAbortException: java.io.EOFException
    	at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:322)
    	at org.apache.catalina.connector.InputBuffer.checkByteBufferEof(InputBuffer.java:600)
    	at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:340)
    	at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:132)
    	at org.apache.tomcat.util.http.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:975)
    	at org.apache.tomcat.util.http.fileupload.MultipartStream$ItemInputStream.read(MultipartStream.java:879)
    	at java.io.InputStream.read(InputStream.java:101)
    	at org.apache.tomcat.util.http.fileupload.util.Streams.copy(Streams.java:97)
    	at org.apache.tomcat.util.http.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:288)
    	... 47 common frames omitted
    	Suppressed: org.apache.catalina.connector.ClientAbortException: java.io.EOFException
    		at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:322)
    		at org.apache.catalina.connector.InputBuffer.checkByteBufferEof(InputBuffer.java:600)
    		at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:340)
    		at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:132)
    		at org.apache.tomcat.util.http.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:975)
    		at org.apache.tomcat.util.http.fileupload.MultipartStream$ItemInputStream.close(MultipartStream.java:919)
    		at org.apache.tomcat.util.http.fileupload.MultipartStream$ItemInputStream.close(MultipartStream.java:898)
    		at org.apache.tomcat.util.http.fileupload.util.Streams.copy(Streams.java:117)
    		... 48 common frames omitted
    	Caused by: java.io.EOFException: null
    		at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1294)
    		at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1206)
    		at org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:805)
    		at org.apache.coyote.http11.Http11InputBuffer.access$400(Http11InputBuffer.java:42)
    		at org.apache.coyote.http11.Http11InputBuffer$SocketInputBuffer.doRead(Http11InputBuffer.java:1172)
    		at org.apache.coyote.http11.filters.IdentityInputFilter.doRead(IdentityInputFilter.java:101)
    		at org.apache.coyote.http11.Http11InputBuffer.doRead(Http11InputBuffer.java:249)
    		at org.apache.coyote.Request.doRead(Request.java:640)
    		at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:317)
    		... 55 common frames omitted
    Caused by: java.io.EOFException: null
    	at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1294)
    	at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1206)
    	at org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:805)
    	at org.apache.coyote.http11.Http11InputBuffer.access$400(Http11InputBuffer.java:42)
    	at org.apache.coyote.http11.Http11InputBuffer$SocketInputBuffer.doRead(Http11InputBuffer.java:1172)
    	at org.apache.coyote.http11.filters.IdentityInputFilter.doRead(IdentityInputFilter.java:101)
    	at org.apache.coyote.http11.Http11InputBuffer.doRead(Http11InputBuffer.java:249)
    	at org.apache.coyote.Request.doRead(Request.java:640)
    	at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:317)
    	... 55 common frames omitted
    

nginx配置

./sbin/nginx -t 检查nginx配置文件是否有语法错误
./sbin/nginx -s reload 当修改完nginx配置文件后,重新载入配置文件

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile      on;
    keepalive_timeout  65;

    client_max_body_size     50m;
    client_body_buffer_size  5M; 
    client_header_timeout    1m;
    client_body_timeout      1m;

    gzip on;
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_comp_level  4;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary on;

	server {
		listen       80;
		server_name  119.23.61.24;
	 
		location / {		
			root   /usr/local/blog/bootblog/web/;
			index  index.html index.htm; 
			try_files $uri $uri/ /index.html;	
		}
			
		location ^~ /api/ {		
			proxy_pass http://119.23.61.24:9091/;
			proxy_set_header   Host             $host;
			proxy_set_header   X-Real-IP        $remote_addr;						
			proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
		}
				
	}
	
	server {
		listen       81;
		server_name  119.23.61.24;
	 
	   ## 个人博客前端项目
		location / {		
			root   /usr/local/blog/bootblog/admin/;
			index  index.html index.htm; 
			try_files $uri $uri/ /index.html;	
		}
			
		## 个人博客后台接口
		location ^~ /api/ {		
			proxy_pass http://119.23.61.24:9091/;
			proxy_set_header   Host             $host;
			proxy_set_header   X-Real-IP        $remote_addr;						
			proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
			}
	
		location /img/ {
			root   /usr/local/blog/bootblog/res/img/;  
					autoindex on;
					autoindex_exact_size off;
				autoindex_format html;
				autoindex_localtime on;
		}		
	}

	server {
        listen       82;
        server_name  119.23.61.24;
     
        location / {
			proxy_pass http://119.23.61.24:8080/websocket;
			proxy_http_version 1.1;
			proxy_set_header Upgrade $http_upgrade;
			proxy_set_header Connection "Upgrade";
			proxy_set_header Host $host:$server_port;
			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;
       }
	
	}
	server {
		listen 83;
		server_name 119.23.61.24;
		location / {
		  root /usr/local/blog/bootblog/res/img/;
		  autoindex on;
		  index a.html;  #指明index文件,默认为index.html,如果此文件不存在,访问域名时会显示目录结构
		  autoindex_exact_size off;
		  autoindex_format json;  #指明返回的为json格式,也可以是html格式
		  autoindex_localtime on;
		}		
	}
	
	server {
		listen       7090;
		server_name  119.23.61.24;
	 
	   ## 网盘前端项目
		location / {		
			root   /usr/local/blog/easypan/web/;
			index  index.html index.htm; 
			try_files $uri $uri/ /index.html;	
		}
			
		## 后台接口请求转发
		location ^~ /api/ {		
			proxy_pass http://localhost:7091; ## 注意这里的7091后面没有带/,所以匹配到的请求的请求路径/api/xxx都会拼接到7091后面去,即形成了http://localhost:7091/api/xxx

			## 添加如下的配置,否则会出现上传超过5M就报错了
			client_max_body_size 500m;
			proxy_max_temp_file_size 1024m;
			#client_header_buffer_size 24k;
			client_body_buffer_size 24k;
			#client_max_body_size 200m;
			client_body_timeout 3600s;
			client_body_temp_path /temp;
			resolver_timeout 3600s;
			
			proxy_set_header   Host             $host;
			proxy_set_header   X-Real-IP        $remote_addr;						
			proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
			
		}
				
	}
}

4. 启动项目

nohup java -jar easypan.jar > /dev/null &
ps -ef|grep java # 查看是否起来了
netstat -anp |grep 7091 # 查看端口是否占用了

5.访问

访问即可:http://119.23.61.24:7090/login
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/561572.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java --- 云尚办公之权限管理模块

目录 一、权限管理 二、JWT 三、用户登录功能实现 四、用户登录后的信息 五、前端代码 六、spring-security 6.1、用户认证 6.2、用户授权 一、权限管理 粗粒度权限&#xff1a; 不同用户进入系统&#xff0c;因权限不同看到菜单不同 细粒度权限&#xff1a; 在一个页…

一、尚医通平台前端搭建

文章目录 一、尚医通平台前端搭建1、服务端渲染技术NUXT 二、首页实现1、公共处理1.1添加静态资源1.2 定义布局1.2.1 修改默认布局1.2.2 提取头文件1.2.3 提取尾文件1.2.4 默认布局引入头尾文件 2、首页引入2.1 引入首页静态页面2.2 首页数据分析 3、首页数据api接口3.1 医院分…

chatgpt赋能Python-python_penup怎么用

Python Penup - 内在交互性的有用工具 Python编程语言的流行一直与其灵活性和易于使用性息息相关。除此之外&#xff0c;Python还提供了大量的扩展和库&#xff0c;以满足各种编程需求。Penup是Python编程中一个非常有用的工具。 什么是Python Penup&#xff1f; Penup是Pyt…

windows环境下安装RabbitMQ(超详细),

windows环境下安装RabbitMQ&#xff08;超详细&#xff09; 注&#xff1a;安装路径&#xff0c;用户名均为英文 一、RabbitMq简介 1.1消息队列中间件简介 消息队列中间件是分布式系统中重要的组件&#xff0c;主要解决应用耦合&#xff0c;异步消息&#xff0c;流量削锋等问题…

Discourse 如何配置 MAXMIND 来对 IP 地址反向查询

【配置 MAXMIND&#xff0c;Discourse 需要重新构建&#xff0c;这将会导致服务中断。 】 什么是 MAXMIND 和为什么我们需要使用这个服务 Discourse 使用 MAXMIND 来通过 IP 地址反向查询具体的物理地址。 如果 Discourse 没有配置 Maxmind’s 数据库&#xff0c;我们看到的配…

leetcode 数据库题 196,197,262,511,550,570

leetcode 数据库题第二弹 196. 删除重复的电子邮箱197. 上升的温度262. 行程和用户511. 游戏玩法分析 I550. 游戏玩法分析 IV570. 至少有5名直接下属的经理577. 员工奖金小结 196. 删除重复的电子邮箱 题目地址&#xff1a;https://leetcode.cn/problems/delete-duplicate-emai…

二、服务网关-Gateway

文章目录 一、服务网关1、网关介绍2、Spring Cloud Gateway介绍3、搭建server-gateway模块3.1 搭建server-gateway3.2 修改配置pom.xml3.3 在resources下添加配置文件3.4添加启动类3.5 跨域处理3.5.1 为什么有跨域问题&#xff1f;3.5.2解决跨域问题 3.6服务调整3.7测试 一、服…

chatgpt赋能Python-python_pulp包怎么安装

Python Pulp包的安装方法 如果你正在进行线性规划或整数规划问题的研究或解决&#xff0c;那么Python Pulp包是一个非常实用的工具&#xff0c;它可以快速、高效地解决这些问题。但是&#xff0c;在使用Python Pulp包的过程中&#xff0c;你可能会遇到一些安装问题。本文将介绍…

Http协议网络读卡器Aspx网页Request获取刷卡数据Response回应驱动显示

三种提交方式可自由设置 RFID网络WIFI无线TCP/UDP/HTTP可编程二次开发读卡器POE供电语音-淘宝网 (taobao.com) HttpReader.aspx.cs using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebCont…

C/C++ 数据结构设计与应用(四):C++数据压缩与传输:从理论到实践的全景解析

C数据压缩与传输&#xff1a;从理论到实践的全景解析 一、数据压缩的策略与方法 (Strategies and Methods of Data Compression)1.1 数据压缩的基本概念与原理 (Basic Concepts and Principles of Data Compression)1.2 C中的数据压缩技术 (Data Compression Techniques in C)1…

总结vue3 的一些知识点

vue3 支持 jsx 安装依赖 pnpm add vitejs/plugin-vue-jsxvite.config.ts 中引用插件 import { defineConfig } from "vite" import vue from "vitejs/plugin-vue" import vueJsx from "vitejs/plugin-vue-jsx" // https://vitejs.dev/config/ex…

Golang每日一练(leetDay0075) 打家劫舍II、最短回文串

目录 213. 打家劫舍 II House Robber ii &#x1f31f;&#x1f31f; 214. 最短回文串 Shortest Palindrome &#x1f31f;&#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 C/C…

android App外包开发技术难点

在开发android App时需要注意一些技术问题&#xff0c;包括设备兼容、性能优化、安全问题及用户体验&#xff0c;这些问题往往是android App的通用问题&#xff0c;每个android App的项目都有这些问题&#xff0c;今天和大家分享一下这方面的知识&#xff0c;希望对大家有所帮助…

研发工程师玩转Kubernetes——使用环境变量给容器中程序传递参数

在《研发工程师玩转Kubernetes——构建、推送自定义镜像》中&#xff0c;Pod的IP是通过代码获取的 def get_ip():try:s socket.socket(socket.AF_INET, socket.SOCK_DGRAM)s.connect((8.8.8.8, 80))ip s.getsockname()[0]finally:s.close()return ip实际我们可以在清单文件中…

python 正则表达式使用总结

re库使用 re.findall import re## 存在匹配的 txt "ai aiThe rain in Spain" x re.findall("ai", txt) print(x) # 没有匹配的 txt "adafda dafasdf" x re.findall("ai", txt) print(x)s中国人adfadsfasfasdfsdaf中国万岁\n pri…

chatgpt赋能Python-python_pythonw

Python和Pythonw——SEO助您成功 Python和Pythonw是两个最广泛使用的编程语言之一。不仅是它们提供了丰富的编程功能和轻松上手的学习曲线&#xff0c;它们还具有出色的SEO优化功能&#xff0c;因为它们是自由和开源的。 Python是什么&#xff1f; Python是一种高级编程语言…

SpringCloud微服务踩坑系列:参数不全造成的空指针

服务一直报500错误&#xff0c;看了一下后台出现了空指针异常 异常如下&#xff1a; java.lang.NullPointerException: null at com.cyf.serviceOrder.service.OrderInfoService.add(OrderInfoService.java:93) ~[classes/:na] at com.cyf.serviceOrder.controller.Or…

chatgpt赋能Python-python_qq群

Python QQ群&#xff1a;学习Python的最佳社区 Python是一个非常流行的编程语言&#xff0c;因其简单易学、可读性高等特点&#xff0c;备受开发人员的青睐。为了交流学习Python&#xff0c;越来越多的人开始组建Python QQ群。本文将介绍Python QQ群的意义、特点和如何找到合适…

深入理解Java虚拟机:JVM高级特性与最佳实践-总结-10

深入理解Java虚拟机&#xff1a;JVM高级特性与最佳实践-总结-10 虚拟机类加载机制类加载的过程初始化 类加载器类与类加载器双亲委派模型 虚拟机类加载机制 类加载的过程 初始化 类的初始化阶段是类加载过程的最后一个步骤&#xff0c;前几个类的加载动作里&#xff0c;除了…

Unity 新建你的第一个游戏,以及如何按WASD控制角色运动 (Unity Demo2D)

文章目录 初始化项目新建角色物体游戏资源管理试着导入资源试着管理资源试着使用资源 脚本是啥新建脚本编辑脚本行为逻辑按键检测获取按键移动位置★ 最终代码 (有基础请直接跳到这) 初始化项目 当你打开 Unity Hub&#xff0c;初始化一个 2D 项目&#xff0c;进入了 Unity 编…