diff --git a/deploy/.editorconfig b/deploy/.editorconfig new file mode 100644 index 00000000..1014ba78 --- /dev/null +++ b/deploy/.editorconfig @@ -0,0 +1,12 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false diff --git a/deploy/Capfile b/deploy/Capfile index 42dd3a47..8140b94b 100644 --- a/deploy/Capfile +++ b/deploy/Capfile @@ -33,6 +33,7 @@ install_plugin Capistrano::SCM::Git # require "capistrano/rails/assets" # require "capistrano/rails/migrations" # require "capistrano/passenger" +require "capistrano/file-permissions" # Load custom tasks from `lib/capistrano/tasks` if you have any defined Dir.glob("lib/capistrano/tasks/*.rake").each { |r| import r } diff --git a/deploy/lib/capistrano/tasks/laravel.rake b/deploy/lib/capistrano/tasks/laravel.rake index 8ac0bd98..ea6542f7 100644 --- a/deploy/lib/capistrano/tasks/laravel.rake +++ b/deploy/lib/capistrano/tasks/laravel.rake @@ -16,6 +16,7 @@ namespace :load do # 可写文件夹 set :laravel_writable_dirs, [ + "bootstrap/cache", "storage", "storage/app", "storage/app/public", @@ -23,8 +24,10 @@ namespace :load do "storage/framework/cache", "storage/framework/sessions", "storage/framework/views", - "storage/logs", + "storage/logs" ] + + set :laravel_server_user, 'www-data' end end @@ -44,8 +47,8 @@ namespace :laravel do end end - desc "准备软链文件" - task :resolve_linked_files do + desc "检查软链文件" + task "check:linked_files" do on release_roles(fetch(:laravel_roles)) do laravel_linked_files = fetch(:laravel_linked_files) @@ -60,8 +63,8 @@ namespace :laravel do end end - desc "准备软链目录" - task :resolve_linked_dirs do + desc "检查软链目录" + task "check:linked_dirs" do laravel_linked_dirs = fetch(:laravel_linked_dirs) if fetch(:laravel_linked_dirs) @@ -69,16 +72,20 @@ namespace :laravel do end end - desc "准备可写文件" - task :resolve_writable_dirs do + desc "给与可写文件夹权限" + task :writable do on release_roles(fetch(:laravel_roles)) do laravel_writable_dirs = fetch(:laravel_writable_dirs) next unless laravel_writable_dirs - within release_path do - execute :mkdir, "-p", laravel_writable_dirs.join(" ") - end + set :file_permissions_paths, fetch(:file_permissions_paths, []) + .push(*laravel_writable_dirs) + .uniq + + set :file_permissions_users, fetch(:file_permissions_users, []) + .push(fetch(:laravel_server_user)) + .uniq end end @@ -163,11 +170,12 @@ namespace :deploy do invoke "composer:install" end - before "deploy:starting", "laravel:resolve_linked_dirs" - after "deploy:check:directories", "laravel:upload_dotenv_file" - after "deploy:check:directories", "laravel:resolve_linked_files" - after "deploy:updated", "laravel:resolve_writable_dirs" + before "deploy:starting", "laravel:check:linked_dirs" + after "deploy:check:directories", "laravel:check:linked_files" + after "deploy:updated", "laravel:writable" + after 'deploy:updated', 'deploy:set_permissions:acl' after "deploy:updated", "deploy:vendors" + after "deploy:updated", "laravel:upload_dotenv_file" after "deploy:vendors", "laravel:artisan:config:cache" after "deploy:vendors", "laravel:artisan:route:cache" after "deploy:vendors", "laravel:artisan:view:cache"