【问题标题】:Deploying PHP site with Maven (It can't be this hard.)使用 Maven 部署 PHP 站点(不会这么难。)
【发布时间】:2013-12-24 05:05:58
【问题描述】:

所以我很清楚,我只是对这里工作的工具有部分了解。在我看来,我正在尝试做一些非常简单的事情。我有一个包含基于 php 的站点的项目,我的假设是我应该能够以这样一种方式设计我的项目,即我可以发出一个(除其他外)将部署的单个“mvn something something”命令(从字面上看:移动到正确的目录)所需的 php 脚本到 web 目录。是的,我假设我在将托管我的应用程序的实际机器上发出这个 mvn 命令。 (这很奇怪吗?)

我假设我正在考虑这个问题,就像我在使用 ant 时一样(“请把这个垃圾从 A 点移到 B 点,蚂蚁”......)并且正在寻找帮助我矫正的人出去。文档(以及关于 stackoverflow 的类似搜索)还没有让我找到解决方案。 (我试过了!)

到目前为止,我知道 .php 页面应该放在 my-app/src/main/php/webapp/whatever.php 下...没关系,请从列表中删除。

my-app 
    |-- pom.xml 
    `-- src 
        |-- main 
        |    `-- php 
        |       |-- lib 
        |       |   `-- org 
        |       |       `-- sample  
        |       |           `-- app.php
        |       `-- webapp
        |           `-- index.php
        |`-- test 
        |   `-- php 
        |       `-- org 
        |           `-- sample 
        |               `-- apptest.php
        `-- site
            |-- site.xml
            `-- apt
                `-- index.apt

php-maven dot org/tags/2.0.2/php-web-10min.html

我遇到的一个公平建议是,Maven 会假设您希望在部署 php 应用程序之前对其进行打包,大概是作为 phar 文件。我对此没意见,我目前不使用 phar,但如果需要它来完成这项工作,那么我准备好了。 (如果我从 git repo 中提取代码,我已经准备好正确的 .php 文件,它们只需要转到正确的位置 - 这不像我的 php 已编译,所以我有点困惑为什么我关心这一步,或者是否真的有必要。)

sitepoint dot com/maven-and-php/

基于最后一个想法,显然可以使用 Maven 将 phar 文件的内容提取到特定目录。链接中的示例看起来有点像一次性命令行指令(它需要多个 -D 参数,并且似乎不会作为“部署”等更普通目标的一部分执行?) 这有点符合我的设想,但显然不是“正确”或“传统”的答案。 (再一次,我可能会以使用 ant 的方式来考虑这一点。)

php-maven dot org/tags/2.0.2/tut-tools-phar.html

文档中最有希望的部分提供了一些关于如何“部署”phar 包的信息,但在这种情况下,“部署”的意思是“将项目包上传到某个地方,以便其他人能够找到和使用它“..这不是我真正想要的。 下一部分“部署站点”(mvn site-deploy)可能是我所追求的?--我假设我们正在指定一个位置来发送带有此描述的“构建”php站点:

php-maven dot org/tags/2.0.2/tut-lifecycle-deploy.html

<project>
  ...
  <distributionManagement>
    ...
    <site>
      <id>project-site.mydomain.org</id>
      <name>My releases</name>
      <url>ftp://ftp dot mydomain.org/documentation</url>
    </site>
    ...
  </distributionManagement>
  ...
</project>

然而这似乎有点奇怪,我们需要使用 ftp/sftp 将文件“发送”到可能是远程服务器。毕竟,我假设我们在托管我的应用程序的实际服务器上运行“mvn do-the-thing”。 (我们是否默认假设我们总是在不会托管 Web 应用程序的机器上构建/部署?) 我当然可以通过在主机上设置 ftp/sftp 访问来解决这个问题......以便它能够访问自己......将文件移动到自己......这听起来有点傻。 此外,我假设这是从 /target/site “部署”文件——但这有点隐含(很像 Maven 中的其他东西!)

伙计们,我到底错过了什么?不可能这么难。我错过了手册第 2 页的内容吗?我的整个人生都是谎言吗? Maven刚开始真的很混乱吗?非常感谢您的帮助。

对于我尝试部署到 Windows/IIS/PHP 主机的价值,回想起来我有点后悔。

谢谢!

【问题讨论】:

标签: php maven iis deployment


【解决方案1】:

看看PHP web project - 5 minutes starter guide。

您可以生成示例 php 项目:

mvn archetype:generate \
-DarchetypeGroupId=org.phpmaven \
-DarchetypeArtifactId=php5-web-archetype \
-DarchetypeVersion=2.0.2 \
-DgroupId=org.sample \
-DartifactId=my-app \
-Dversion=0.0.1-SNAPSHOT

目标mvn site:deploy 用于生成项目主页(文档)

使用 wagon 支持的协议将生成的站点部署到 POM 部分中指定的站点 URL。

【讨论】:

    【解决方案2】:

    小菜一碟:

    <build>
        <extensions>
            <!-- Enabling the use of Wagon file -->
            <extension>
                <groupId>org.apache.maven.wagon</groupId>
                <artifactId>wagon-file</artifactId>
                <version>1.0-beta-6</version>
            </extension>
        </extensions>
    
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>wagon-maven-plugin</artifactId>
                <version>1.0-beta-3</version>
                <executions>
                    <execution>
                        <id>upload-jar-to-folder</id>
                        <phase>deploy</phase>
                        <goals>
                            <goal>upload</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <fromDir>${project.build.directory}/classes/public</fromDir>
                    <includes>**/*</includes>
                    <url>file:/home/lukasz/www</url>
                    <toDir>Main</toDir>
                </configuration>
            </plugin>
        </plugins>
    
    </build>
    

    这会将我的项目(包括 php 文件)部署到 httpd 服务器。

    mvn deploy
    

    当然,我使用 wagon-file 插件通过 system.但也可以使用其他选项(即 scp、ftp、http)。

    【讨论】:

      猜你喜欢
      • 2010-11-07
      • 2015-02-20
      • 2010-11-18
      • 1970-01-01
      • 1970-01-01
      • 2011-02-17
      • 2021-09-11
      • 2015-10-31
      • 2010-11-14
      相关资源
      最近更新 更多