--- layout: doc title: 发布方式 url: /docs/deployment-methods/ --- OpooPress 可通过多种方式发布。大部分是通过 [Apache Maven Wagon](http://maven.apache.org/wagon/) 实现的。可参考 Apache Maven Wagon 文档了解更多细节。 **注意**: 当前文档涉及到较多的 Apache Maven 知识。 OpooPress 2+ 支持将一个站点同时发布到多个位置,典型的应用就是将站点同时发布到不同 IP 的服务器,然后通过智能 DNS 将网站的域名解析到不同的 IP,以达到 CDN 一样的效果。 发布目标信息应配置 `deploy` 属性,该属性的值应该是数组,例如 ```plain deploy: - {id: server1, url: 'scp://server1.com/var/www/html'} - {id: server2, url: 'scp://server2.com/var/www/html'} - {id: local, url: 'file://D:/www'} ``` ## 一、常见发布方式 - File - HTTP - FTP - SSH/SCP - WebDAV - GitHub Pages/Git ### 1.1 File 1. OpooPress 配置 `config.yml` ```plain deploy: - {id: "file", url: "file://var/www/html"} ``` 2. 执行 `mvn op:deploy` ### 1.2 HTTP 1. OpooPress 配置 `config.yml` ```plain deploy: - {id: "my_http_server", url: "http://domain.com/var/www/html"} ``` 2. Maven 配置 `settings.xml` ```xml my_http_server my_server_username my_server_password ``` 3. 执行 `mvn op:deploy` ### 1.3 FTP 1. OpooPress 配置 `config.yml` ```plain deploy: - {id: "my_ftp_server", url: "ftp://domain.com/var/www/html"} ``` 2. Maven 配置 `settings.xml` ```xml my_ftp_server my_server_username my_server_password ``` 3. 执行 `mvn op:deploy` ### 1.4 SSH/SCP 1. OpooPress 配置 `config.yml` ```plain deploy: - {id: "my_ssh_server", url: "scp://domain.com/var/www/html"} ``` 2. Maven 配置 `settings.xml` ```xml my_ssh_server my_server_username my_server_password ``` 3. 执行 `mvn op:deploy`

发布到 SourceForge.net

OpooPress 发布机制与 maven-site-plugin 的 deploy 机制类似,所以通过 SCP 发布到 SourceForge.net 时,会遇到同样的问题。详情请参考这里

### 1.5 WebDAV 1. OpooPress 配置 `config.yml` ```plain deploy: - {id: "my_web_server", url: "https://domain.com/var/www/html"} ``` 2. Maven 配置 `settings.xml` ```xml my_web_server my_server_username my_server_password ``` 3. 执行 `mvn op:deploy` ### 1.6 GitHub Pages/Git 有三种方式可以发布 OpooPress 到 GitHub Pages - opoopress-wagon-github - opoopress-wagon-git - wagon-scm + maven-scm-provider-gitexe 有两种方式可以发布 OpooPress 到 Git 库: - opoopress-wagon-git - wagon-scm + maven-scm-provider-gitexe 详见文档 [发布到 GitHub Pages](../github-pages/#deployment-methods)。 ## 二、其它发布方式 由于 OpooPress 采用 [Apache Maven Wagon](http://maven.apache.org/wagon/) 作为发布功能的底层实现,所以,理论上 OpooPress 支持通过各种 wagon 发布。当用户选择满足自己需求的 wagon 时,只需要做如下配置: 1. 在 pom.xml 中配置 `extension` 节点,例如 ```xml com.github.myname wagon-myhttps 2.4 org.apache.maven.wagon wagon-scm 2.4 org.apache.maven.scm maven-scm-manager-plexus 1.5 org.apache.maven.scm maven-scm-provider-svnexe 1.5 ``` 假设 `wagon-myhttps` 是一个自己编写的 wagon 实现,支持自己定义的 `myhttps` 协议。 `wagon-scm` + `maven-scm-provider-svnexe` 则是 Apache 官方特供的访问 SVN 库的 wagon 实现。 2. OpooPress 配置 `config.yml` ```plain deploy: - {id: "myhttps_server", url: "myhttps://domain.com/path/to/www", param1: "val1", param2: "val2"} ``` 或者 ```plain deploy: - {id: "my_svn_server", url: "scm:svn:https://domain.com/svnrepo"} ``` 3. Maven 配置 `settings.xml` 根据选择的 wagon 配置相应的 `server` 节点即可。有些 wagon 需要配置参数,例如 `wagon-scm` + `maven-scm-provider-svnexe`,就需要通过 `scmVersionType` 和 `scmVersion` 来指定 SVN 的分支。 ```xml my_svn_server my_username my_password branch branch-1.0.x ```