使用Maven部署PHP站点(这可能很难。)

时间:2013-12-24 05:05:59

标签: php maven iis deployment

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

我假设我正在考虑这个问题,就像我使用蚂蚁一样(“请把这个废话从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参数,并且看起来它不会像“部署”这样更普通的目标执行?) 这有点像我设想的那样,但显然不是“正确”或“传统”的答案。 (同样,我可能会想到这一点,就像人们使用蚂蚁一样。)

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主机,回想起来我有点后悔。

谢谢!

2 个答案:

答案 0 :(得分:1)

一块蛋糕:

mvn deploy

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

SELECT t1.Country || '-' || t2.Country
  FROM table t1
  JOIN table t2 ON t1.Country <> t2.Country;

当然,我使用wagon-file插件通过系统来完成这项工作。但是其他选项也可用(即scp,ftp,http)。

答案 1 :(得分:0)

看看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。