溫馨提示×

Centos Swagger如何部署應用

小樊
47
2025-09-28 17:23:57
欄目: 智能運維

CentOS環境下Swagger應用部署指南

一、基礎環境準備

在CentOS上部署Swagger應用前,需安裝以下基礎依賴:

  1. Java環境:Swagger依賴Java運行環境(推薦OpenJDK 8),通過以下命令安裝:
    sudo yum install -y java-1.8.0-openjdk-devel
    java -version  # 驗證安裝(需顯示Java版本信息)
    
  2. Maven:用于項目構建與依賴管理,安裝命令:
    sudo yum install -y maven
    mvn -version  # 驗證安裝(需顯示Maven版本信息)
    
  3. Node.js與npm:若通過npm方式部署Swagger UI,需安裝Node.js(建議版本12+):
    curl -sL https://rpm.nodesource.com/setup_12.x | sudo bash -
    sudo yum install -y nodejs
    node -v  # 驗證安裝(需顯示Node.js版本信息)
    npm -v   # 驗證安裝(需顯示npm版本信息)
    

二、Swagger應用部署方式

方式1:Spring Boot項目集成Swagger(Java應用常用)

若需將Swagger集成到Spring Boot應用中,實現API文檔自動化生成,步驟如下:

  1. 添加Swagger依賴:在項目的pom.xml文件中添加以下依賴:
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.9.2</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.9.2</version>
    </dependency>
    
  2. 配置Swagger:創建SwaggerConfig.java配置類,指定掃描的控制器包路徑:
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import springfox.documentation.builders.PathSelectors;
    import springfox.documentation.builders.RequestHandlerSelectors;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
    
    @Configuration
    @EnableSwagger2
    public class SwaggerConfig {
        @Bean
        public Docket api() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .select()
                    .apis(RequestHandlerSelectors.basePackage("com.yourpackage.controller")) // 替換為你的控制器包路徑
                    .paths(PathSelectors.any())
                    .build();
        }
    }
    
  3. 啟動應用并訪問:運行Spring Boot應用(mvn spring-boot:run),訪問http://<服務器IP>:<應用端口>/swagger-ui.html(如http://192.168.1.100:8080/swagger-ui.html),即可查看Swagger UI界面。

方式2:Docker部署Swagger Editor/UI(快速搭建)

若需快速搭建Swagger編輯器或UI服務,可使用Docker:

  1. 安裝Docker
    sudo yum install -y docker
    sudo systemctl start docker
    sudo systemctl enable docker
    
  2. 部署Swagger Editor
    docker pull swaggerapi/swagger-editor
    docker run -d -p 8080:8080 --name swagger-editor swaggerapi/swagger-editor
    
    訪問http://<服務器IP>:8080,即可使用Swagger Editor編寫API文檔。
  3. 部署Swagger UI
    docker pull swaggerapi/swagger-ui
    docker run -d -p 8081:8081 --name swagger-ui swaggerapi/swagger-ui
    
    訪問http://<服務器IP>:8081,默認會加載https://petstore.swagger.io/v2/swagger.json,可通過修改配置指向自定義API文檔。

方式3:傳統方式安裝Swagger UI(手動部署)

若需手動部署Swagger UI,步驟如下:

  1. 下載Swagger UI
    mkdir -p /opt/swagger
    cd /opt/swagger
    wget https://github.com/swagger-api/swagger-ui/archive/v3.34.0.tar.gz
    tar -xf v3.34.0.tar.gz
    cd swagger-ui-3.34.0
    
  2. 配置Swagger UI
    • 復制dist目錄內容到Web服務器目錄(如Nginx的/usr/share/nginx/html):
      sudo cp -r dist/* /usr/share/nginx/html/
      
    • 修改index.html文件,將默認的API文檔URL(https://petstore.swagger.io/v2/swagger.json)替換為你的自定義URL(如http://<服務器IP>:<應用端口>/v2/api-docs)。
  3. 啟動Web服務器:若使用Nginx,啟動服務:
    sudo systemctl start nginx
    sudo systemctl enable nginx
    
    訪問http://<服務器IP>,即可查看Swagger UI界面。

三、自定義配置與安全

  1. 自定義Swagger UI:可通過修改application.propertiesapplication.yml文件調整Swagger UI行為,例如:
    springfox.documentation.swagger.v2.path=/v2/api-docs  # API文檔路徑
    springfox.documentation.swagger-ui.base-url=/swagger-ui.html  # UI入口路徑
    
  2. 安全配置:生產環境中,需限制Swagger UI訪問權限(如僅允許內部IP訪問),可通過Spring Security配置:
    import org.springframework.context.annotation.Configuration;
    import org.springframework.security.config.annotation.web.builders.HttpSecurity;
    import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
    
    @Configuration
    public class SecurityConfig extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.authorizeRequests()
                .antMatchers("/swagger-ui.html", "/v2/api-docs").hasIpAddress("192.168.1.0/24")  # 僅允許192.168.1.0/24網段訪問
                .anyRequest().permitAll()
                .and()
                .csrf().disable();
        }
    }
    

四、常見問題排查

  1. 端口未開放:若無法訪問Swagger UI,需檢查CentOS防火墻是否開放對應端口(如8080、8081):
    sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
    sudo firewall-cmd --reload
    
  2. Java環境問題:若啟動應用時報Java版本錯誤,需確認JAVA_HOME環境變量是否正確設置:
    export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
    export PATH=$JAVA_HOME/bin:$PATH
    
  3. 依賴沖突:若Maven構建失敗,需檢查pom.xml中的依賴版本是否兼容(如Spring Boot與Swagger版本匹配)。

通過以上步驟,可在CentOS環境下完成Swagger應用的部署與配置,實現API文檔的自動化管理與可視化測試。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女