sách gpt4 ai đã đi

nginx - Rails 生产 - 新部署后所有图片都损坏了

In lại 作者:行者123 更新时间:2023-12-04 14:30:34 28 4
mua khóa gpt4 Nike

我关注了Ryan's screencast并部署到 VPS。所以我使用 Unicorn + nginx + github + Ubuntu 12.04 LTS + capistrano。我也使用 i18n 来翻译应用程序。

我还想注意我使用 Carriarewave用于图片上传。 Carriarewave 将图片保存在本地 VPS 上。当我上传图片时效果很好,上传的图片就会出现。

但是每次当我将新的更改部署到服务器时,我的所有图片都会损坏。实在是太可怕了。我尝试手动重启nginx:

sudo service nginx restart

我试图重新启动 unicorn :
/etc/init.d/unicorn_Chirch_app restart

它也没有帮助。

当我尝试手动打开损坏的页面时,它说:
The page you were looking for doesn't exist.
You may have mistyped the address or the page may have moved.

当我尝试在控制台中查找图片时:
> Photo.all
> => [#, #, #]

据我了解,它们应该存在。

日志中的错误:
Started GET "/ru/uploads%2Fphoto%2Fimage%2F4%2FSeasonscape_by_alexiuss" for 89.178.205.47 at 2013-01-21 11:31:17 +0000

ActionController::RoutingError (No route matches [GET] "/ru/uploads%2Fphoto%2Fimage%2F4%2FSeasonscape_by_alexiuss"):
actionpack (3.2.8) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
actionpack (3.2.8) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
railties (3.2.8) lib/rails/rack/logger.rb:26:in `call_app'
railties (3.2.8) lib/rails/rack/logger.rb:16:in `call'
actionpack (3.2.8) lib/action_dispatch/middleware/request_id.rb:22:in `call'
rack (1.4.4) lib/rack/methodoverride.rb:21:in `call'
rack (1.4.4) lib/rack/runtime.rb:17:in `call'
activesupport (3.2.8) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
rack (1.4.4) lib/rack/lock.rb:15:in `call'
rack-cache (1.2) lib/rack/cache/context.rb:136:in `forward'
rack-cache (1.2) lib/rack/cache/context.rb:245:in `fetch'
rack-cache (1.2) lib/rack/cache/context.rb:185:in `lookup'
rack-cache (1.2) lib/rack/cache/context.rb:66:in `call!'
rack-cache (1.2) lib/rack/cache/context.rb:51:in `call'
railties (3.2.8) lib/rails/engine.rb:479:in `call'
railties (3.2.8) lib/rails/application.rb:223:in `call'
railties (3.2.8) lib/rails/railtie/configurable.rb:30:in `method_missing'
unicorn (4.5.0) lib/unicorn/http_server.rb:552:in `process_client'
unicorn (4.5.0) lib/unicorn/http_server.rb:628:in `worker_loop'
unicorn (4.5.0) lib/unicorn/http_server.rb:500:in `spawn_missing_workers'
unicorn (4.5.0) lib/unicorn/http_server.rb:511:in `maintain_worker_count'
unicorn (4.5.0) lib/unicorn/http_server.rb:277:in `join'
unicorn (4.5.0) bin/unicorn:121:in `'
/home/deployer/apps/My_app/shared/bundle/ruby/1.9.1/bin/unicorn:23:in `load'
/home/deployer/apps/My_app/shared/bundle/ruby/1.9.1/bin/unicorn:23:in `
'

của tôi 配置/部署.rb
require "bundler/capistrano"

server "my_ip_here", :web, :app, :db, primary: true

set :application, "My_app"
set :user, "deployer"
set :deploy_to, "/home/#{user}/apps/#{application}"
set :deploy_via, :remote_cache
set :use_sudo, false

set :scm, "git"
set :repository, "git@github.com:MyName/#{application}.git"
set :branch, "master"

default_run_options[:pty] = true
ssh_options[:forward_agent] = true

after "deploy", "deploy:cleanup" # keep only the last 5 releases

namespace :deploy do
%w[start stop restart].each do |command|
desc "#{command} unicorn server"
task command, roles: :app, except: {no_release: true} do
run "/etc/init.d/unicorn_#{application} #{command}"
kết thúc
kết thúc

task :setup_config, roles: :app do
sudo "ln -nfs #{current_path}/config/nginx.conf /etc/nginx/sites-enabled/#{application}"
sudo "ln -nfs #{current_path}/config/unicorn_init.sh /etc/init.d/unicorn_#{application}"
run "mkdir -p #{shared_path}/config"
put File.read("config/database.example.yml"), "#{shared_path}/config/database.yml"
puts "Now edit the config files in #{shared_path}."
kết thúc
after "deploy:setup", "deploy:setup_config"

task :symlink_config, roles: :app do
run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml"
kết thúc
after "deploy:finalize_update", "deploy:symlink_config"

desc "Make sure local git is in sync with remote."
task :check_revision, roles: :web do
unless `git rev-parse HEAD` == `git rev-parse origin/master`
puts "WARNING: HEAD is not the same as origin/master"
puts "Run `git push` to sync changes."
ra
kết thúc
kết thúc
before "deploy", "deploy:check_revision"
kết thúc

1 Câu trả lời

好的,我找到了解决方案。出现问题是因为我没有更改默认文件夹以保留图像。您可以在 public/uploads 中找到您的默认文件夹。 .这意味着每个 cap deploy将创建一个新的空文件夹,其中不包含您的旧文件。

要解决此问题,您应该创建另一个不在您的应用程序中的文件夹。我选择最简单的方法。我创建了符号链接(symbolic link)。

我的步骤:

1)在您的服务器上转到您的应用程序的共享文件夹(它通过 capistrano 自动生成)。然后创建您的文件夹以保留新图像:

$ mkdir uploads

2) 为创建的文件夹赋予必要的权限:
$ sudo chmod 775 uploads

3) 在本地机器上的 config/deploy.rb 添加:
task :symlink_config, roles: :app do
...
run "ln -nfs #{shared_path}/uploads #{release_path}/public/uploads"
kết thúc

4)然后推送git并部署:
$ git push
$ cap deploy:symlink
$ cap deploy

现在一切正常。

关于nginx - Rails 生产 - 新部署后所有图片都损坏了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14437733/

28 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com