Rails 3.1 Deploy to Production (with Apache & Passenger) Asset Problems

Rails 3.1 heeft de manier verenerd waarop het de asset-pipeline afhenelt en veroorzaakt problemen bij de implementatie in de productie.

Ik gebruik Apache en Passenger, die prima lijken te werken.

Mijn productie is zo opgezet (voorlopig).

# congif/environments/production.rb
config.cache_classes = false
config.consider_all_requests_local       = true
config.action_controller.perform_caching = true
config.serve_static_assets = false
config.assets.compress = true
config.assets.compile = false
config.assets.digest = true
config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache

Ik voer rake-assets: precompileer op Ubuntu en start de server. En niks. Geen van mijn afbeeldingen wordt geladen.

Het legendarische vak 'Ik kan een afbeelding niet vinden in deze URL'.

Ik heb rake-assets: compileer op CennaarS en start de server. En ... naarestemmingsfouten.

*Error Compiling CSS Asset*
Errno::EACCESS: Permission Denied - [app path]/tmp/cache/assets/E95
[path naar RVM Ruby]/fileutils.rb:243:in 'mkdir'

Ik kan het niet laten buigen. Alle hulp wordt zeer op prijs gesteld. Dank je!

BIJWERKEN

Deze oplossing heeft altijd voor mij gewerkt:

Maak eerst uw bezittingen schoon

rm -rf public/assets

en

rake assets:clean RAILS_ENV=production

Ten tweede, in # production.rb verandering

config.assets.compile = false

naar

config.assets.compile = true

Third, run naar precompile your assets

rake assets:precompile RAILS_ENV=production

Ten vierde, in # production.rb veranderen

config.assets.compile = true

back naar

config.assets.compile = false

Ten vijfde, herstart je server door te draaien:

naaruch tmp/restart.txt

Sixth, un-restrict permissions on your newly created assets by running this commen

chmod -R 777 public/assets

Zevende, vier !!

10

4 antwoord

Dat is een eenvoudig toestemmingsprobleem. Geef de server/daemon het recht om recursief bestanden te maken in [app_path]/tmp.

Ervan uitgaande dat uw serverproces wordt uitgevoerd met de gebruiker www-data </​​code> doet u dit met:

cd APP_PATH
chmod -R u+w tmp

en als de map niet van de gebruiker is, moet u het eigendom wijzigen:

chown -R www-data tmp
8
toegevoegd
hoe doe ik dit op Heroku? Ik heb dezelfde problemen waarbij een afbeelding mij de toegang ontzegt
toegevoegd de auteur iGbanam, de bron
ik heb de wijzigingen lokaal aangebracht en op heroku geplaatst. alles werkt nu goed
toegevoegd de auteur iGbanam, de bron
Ik heb dit geprobeerd en het vecht nog steeds met dezelfde fout. Ik ben op CentOS en www-data is niet de geldige gebruiker. Ik probeerde het de apache-gebruiker. Update: ik heb chr-755 tmp uitgeprobeerd en het werkte!
toegevoegd de auteur mikeborgh, de bron
Ok je hebt mijn CentOS-fout opgelost en Michael de Silva heeft mijn Ubuntu-fout verholpen. Bedankt jongens!
toegevoegd de auteur mikeborgh, de bron

Try creating public/assets via sudo or try performing rvmsudo rake assets:precompile - essentially, it's not able to create the directory on your server — hence the error.

4
toegevoegd
Ok je hebt mijn Ubuntu-fout verholpen en topek heeft mijn CentOS-fout opgelost. Bedankt jongens!
toegevoegd de auteur mikeborgh, de bron

Op Windows 8:

  1. Verwijzingen naar stylesheets verwijderen
  2. Start de productie opnieuw
  3. Ga naar een betrokken pagina met behulp van de browser
  4. Voeg referenties stijlafbeeldingen toe
  5. Start de productie opnieuw
  6. Heeft gewerkt voor mij!
0
toegevoegd

Uw bijgewerkte oplossing werkte niet voor mij. Ik ben op rails 4.2 en CSS en JS werkt alleen als ik instel config.serve_static_files = true (dat wordt niet aanbevolen, maar het is de enige manier waarop ik dingen hier kan laten werken).

0
toegevoegd
Dit lijkt geen antwoord te zijn. Dit kan beter als commentaar worden geplaatst.
toegevoegd de auteur Alastair Brown, de bron