2

Capifony をリモート サーバーにデプロイするように構成しようとしています。私が知りたいのは、uploadsディレクトリが .gitignore 内にある必要があるかどうかです。実行するcap development depoyと、symlink エラーが発生します。

executing "ln -nfs /var/www/dev.xyz.co.uk/shared/web/uploads /var/www/dev.xyz.co.uk/releases/20130313103147/web/uploads"

*** [err :: x.xx.xx.xxx] ln:
*** [err :: x.xx.xx.xxx] failed to create symbolic link `/var/www/dev.xyz.co.uk/releases/20130313103147/web/uploads'
*** [err :: x.xx.xx.xxx] : No such file or directory
*** [err :: x.xx.xx.xxx] 

これ/web/uploadsは .gitignore 内にあるため、シンボリックリンクのために git からプルされることはありませんか?

最初にリモート サーバーでリポジトリのクローンを作成する必要がありますか?それとも Capifony がこれを行ってくれますか?

以下の deploy.rb:

set :stage_dir, 'app/config/deploy' # needed for Symfony2 only
set :stages, %w(production staging development)
require 'capistrano/ext/multistage'

set :application, "xyz.co.uk"
set :user, "root"  # The server's user for deploys

set :scm,         :git
set :repository, "git@github.com:test/#{application}.git"
set :keep_releases,  3
set :use_sudo,       false
set :shared_files,      ["app/config/parameters.yml"]
set :shared_children,   [app_path + "/logs", web_path + "/uploads", "vendor"]
set :use_composer, true
set :update_vendors, true
set :dump_assetic_assets, true
set :deploy_via, :copy

logger.level = Logger::MAX_LEVEL

以下の development.rb:

server 'x.xx.xx.xxx', :app, :web, :primary => true
ssh_options[:port] = xxxx
ssh_options[:forward_agent] = true
set :deploy_to, "/var/www/xyz.co.uk/"
set :symfony_env_prod, "dev"
4

2 に答える 2

1

これを実現するには、いくつかの方法があります。

空のフォルダーをgitにコミットします。

次の内容でファイル/web/uploads/.gitignoreを作成します。

!.gitignore

これにより、ディレクトリをリポジトリにコミットできますが、すべてのコンテンツは無視されます。すべての展開で空のアップロードフォルダが作成されます。

すべての展開の共有フォルダーとしてアップロードを作成します

この方法には、デプロイメント間でアップロードを保持するという利点があります-おそらくあなたが望むものです。

deploy.rbで、最初のデプロイメントでのみ実行される「firstdeploy」タスクを作成し、この段階でディレクトリを作成します。

run "mkdir -p #{shared_path}/web/uploads"

デプロイ構成で、次のような共有パスとして構成します

set :web_path,   "web"
set :shared_children, [web_path + "/uploads"]

役立つ場合は、ここにデプロイスクリプトを投稿しました。

于 2013-03-13T12:34:55.677 に答える