Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Maven部署PHP站点(可能不会这么难。)_Php_Maven_Iis_Deployment - Fatal编程技术网

使用Maven部署PHP站点(可能不会这么难。)

使用Maven部署PHP站点(可能不会这么难。),php,maven,iis,deployment,Php,Maven,Iis,Deployment,所以我很清楚,我只是对工作中的工具有一部分了解。在我看来,我正在尝试做一些非常简单的事情。我有一个项目,其中包括一个基于php的网站,我的假设是,我应该能够以这样的方式设计我的项目,我可以发出一个“mvn某物”命令,该命令(除其他外)将部署(字面意思:移动到正确的目录)所需的php脚本到web目录。是的,我假设我在托管我的应用程序的实际机器上发出这个mvn命令。(奇怪吗?) 我假设我想的太多了,就像我在使用ant(“请把这个垃圾从A点移到B点,ant”…)一样,我正在找人帮我解决这个问题。文档(

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

我假设我想的太多了,就像我在使用ant(“请把这个垃圾从A点移到B点,ant”…)一样,我正在找人帮我解决这个问题。文档(以及类似的stackoverflow搜索)还没有让我找到解决方案。(我试过了!)

到目前为止,我知道.php页面应该放在我的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.org/tags/2.0.2/php-web-10min.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>
我遇到的一个公平的建议是,Maven假设您希望在部署php应用程序之前对其进行打包,可能是作为一个phar文件。我同意这一点,我目前不使用phar,但如果需要它来实现这一点,那么我愿意。(如果我已经从git repo中提取了代码,我已经准备好了正确的.php文件,它们只需要放在正确的位置——我的php不是编译的,所以我有点困惑,为什么我关心这个步骤,或者它是否真的有必要。)

sitepoint.com/maven和php/

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

php-maven-dot-org/tags/2.0.2/tut-tools-phar.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>
文档中最有希望的部分给出了有关如何“部署”phar包的一些信息,但在本例中,“部署”的意思是“将项目包上载到某个地方,以便其他人能够找到并使用它”。。这不是我真正想要的。 下一节“部署站点”(mvn site Deploy)可能就是我想要的内容?--我假设我们正在指定一个地方来发送“构建”的php站点,描述如下:

php maven.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>

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

伙计们,我到底错过了什么?不可能这么难。我是否遗漏了手册第2页的内容?我的一生都是谎言吗?maven一开始真的很困惑吗?非常感谢你的帮助

值得一提的是,我正试图部署到Windows/IIS/PHP主机上,回想起来,我有点后悔

谢谢

看看

您可以生成示例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
目标是生成项目主页(文档)

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

小菜一碟:

<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>
当然,我使用了货车文件插件通过系统来实现这一点。但也有其他选项可用(即scp、ftp、http)。

查看