Commit ea9b8fe5 authored by Ben Bodenmiller's avatar Ben Bodenmiller

check uploads dir

Detect issues with uploads dir, e.g. permission and ownership issues
with the users uploads dir. This helps troubleshoot and correct
gitlab-org/omnibus-gitlab#311. Fixes gitlabhq#7500, gitlabhq#7052.
Related to gitlabhq#6281.
parent 957e849f
...@@ -22,6 +22,7 @@ namespace :gitlab do ...@@ -22,6 +22,7 @@ namespace :gitlab do
check_gitlab_config_not_outdated check_gitlab_config_not_outdated
check_log_writable check_log_writable
check_tmp_writable check_tmp_writable
check_uploads
check_init_script_exists check_init_script_exists
check_init_script_up_to_date check_init_script_up_to_date
check_projects_have_namespace check_projects_have_namespace
...@@ -277,6 +278,57 @@ namespace :gitlab do ...@@ -277,6 +278,57 @@ namespace :gitlab do
end end
end end
def check_uploads
print "Uploads directory setup correctly? ... "
unless File.directory?(Rails.root.join('public/uploads'))
puts "no".red
try_fixing_it(
"sudo -u #{gitlab_user} mkdir -m 750 #{Rails.root}/public/uploads"
)
for_more_information(
see_installation_guide_section "GitLab"
)
fix_and_rerun
return
end
upload_path = File.realpath(Rails.root.join('public/uploads'))
upload_path_tmp = File.join(upload_path, 'tmp')
if File.stat(upload_path).mode == 040750
unless Dir.exists?(upload_path_tmp)
puts 'skipped (no tmp uploads folder yet)'.magenta
return
end
# if tmp upload dir has incorrect permissions, assume others do as well
if File.stat(upload_path_tmp).mode == 040755 && File.owned?(upload_path_tmp) # verify drwxr-xr-x permissions
puts "yes".green
else
puts "no".red
try_fixing_it(
"sudo chown -R #{gitlab_user} #{upload_path}",
"sudo find #{upload_path} -type f -exec chmod 0644 {} \\;",
"sudo find #{upload_path} -type d -not -path #{upload_path} -exec chmod 0755 {} \\;"
)
for_more_information(
see_installation_guide_section "GitLab"
)
fix_and_rerun
end
else
puts "no".red
try_fixing_it(
"sudo chmod 0750 #{upload_path}",
)
for_more_information(
see_installation_guide_section "GitLab"
)
fix_and_rerun
end
end
def check_redis_version def check_redis_version
print "Redis version >= 2.0.0? ... " print "Redis version >= 2.0.0? ... "
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment