如何实现JAVA项目部署后 ,几个类就开始运行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何实现JAVA项目部署后 ,几个类就开始运行相关的知识,希望对你有一定的参考价值。

简单点说,我的项目中有几个监听数据库的线程,我需要他们在web项目部署好,tomcat启动后,就开始执行的,该如何写 直接写在main方法里就可以了吗

参考技术A 做个一个listener不就好了 直接配在 web.XML里面 服务器启动时候就启动本回答被提问者和网友采纳

开始使用chef,并在部署时运行composer install

我们正在寻找使用OpsWorks在亚马逊上部署一些基于Laravel4的PHP应用程序,这需要一些东西:

  • 从git中获取代码
  • 从getcomposer.com下载composer.phar
  • 运行php composer.phar install
  • 更改几个特定文件夹的权限

我对厨师来说非常新鲜,所以最初寻找一个可以掌握厨师基本知识的地方,然后如何实现上述任务,我们会感激任何指针。

答案

我不是厨师大师(我通常使用Puppet)但尝试以下方法:

从git中获取代码

您可能想要执行wget命令(请参阅下面的示例)。

如果你想要更复杂的东西,请参阅http://docs.opscode.com/resource_deploy.html

deploy_revision "/path/to/application" do
  repo 'ssh://name-of-git-repo/repos/repo.git'
  migrate false
  purge_before_symlink %w{one two folder/three}
  create_dirs_before_symlink []
  symlinks(
    "one"   => "one",
    "two"   => "two",
    "three" => "folder/three"
  )
  before_restart do
    # some Ruby code
  end
  notifies :restart, "service[foo]"
  notifies :restart, "service[bar]"
end

从getcomposer.com下载composer.phar

我会执行一个wget。

我从这里解除了一些代码:http://cookingclouds.com/2012/06/23/chef-simple-cookbook-example/

它基本上只是在特定文件夹中执行wget,提取tar的内容并更新新文件的某些权限。仅当文件夹尚不存在时才会执行此操作。

# Run a bash shell -  download and extract composer
bash "install_composer" do
     user "root"
     cwd "/folder/to/extact/to"
     code <<-EOH
       wget http://getcomposer.com/composer.tar.gz
       tar -xzf composer.tar.gz
       chown -R user:group /folder/to/extact/to
     EOH
     not_if "test -d /folder/to/extact/to"
end

运行php composer.phar install

http://docs.opscode.com/resource_execute.html

execute "composer install" do
  command "php composer.phar install && touch /var/log/.php_composer_installed"
  creates "/var/log/.php_composer_installed"
  action :run
end

这只会运行一次,否则你可以删除“创建”,它每次都会运行它。

更改几个特定文件夹的权限

http://docs.opscode.com/resource.html

directory "/tmp/folder" do
  owner "root"
  group "root"
  mode 0755
  action :create
end

如果目录已存在,则不会发生任何事情。如果以任何方式更改了目录,则资源将标记为已更新。

最后

我发现搜索方便,浏览厨师网站上的东西似乎没有希望(太多东西需要挖掘)。 http://docs.opscode.com/search.html

另一答案

我会和Drew Khoury的答案一样,只做一个改动。要下载compose.phar,您可以使用remote_file resource而不是在bash脚本中执行wget。

另一答案

由于composer.phar已经是一个可执行文件,你可以简单地把它放到你的$PATH的目录中:

remote_file '/usr/bin/composer' do
    source 'http://getcomposer.org/composer.phar'
    mode '0755'
    action :create_if_missing
end
另一答案

你可以配置你的git hook post-receive到这样的东西:

GIT_WORK_TREE=/path/to/your/site
cd /path/to/your/site
curl -sS https://getcomposer.org/installer | php
php composer.phar install
# do your stuff here 

并确保为post-receive文件提供可执行权限。

另一答案

或者您可以提交您的供应商目录。我们在Laravel 4和OpsWorks上运行了几个项目。

另一答案

我与Laravel和OpsWorks处于相同的位置。我当时正在寻找一个解决方案......

如果有人在其中一个子模块中注入安全漏洞,会发生什么?这是否意味着我们始终相信X数量的外部代码库是100%安全的?

要么我的理解存在一些根本性的缺陷,要么在生产服务器上运行作曲家就是最严重的WTF。

我现在确保我的项目仓库中的代码将按原样100%部署。无需在生产服务器上下载外部模块。

以上是关于如何实现JAVA项目部署后 ,几个类就开始运行的主要内容,如果未能解决你的问题,请参考以下文章

Django部署在linux下,如何调试?

如何部署android服务器端的java代码

SpringBoot用户CRUD

如何在服务器上部署Django项目并使其在后台一直运行

java实际开发中,实现一个功能的两三个类写在一个源文件中还是一个类写一个源文件更规范一些?

如何限制部署后脚本在 Visual Studio 数据库项目中仅运行一次