设为首页 收藏本站
查看: 1060|回复: 0

[经验分享] ubuntu+rails+passenger+apache+nginx常见问题

[复制链接]

尚未签到

发表于 2018-11-15 06:45:40 | 显示全部楼层 |阅读模式
  很多问题的标题就是报错之后日志中记录的错误信息。
  apache的日志在/var/log/apache2/目录中,error.log。当然,也有可能在其他位置。如果是下载httpd,编译安装的话,有可能在/usr/local/apache目录中。
  nginx的日志在/opt/nginx/log/中,也是error.log。也是有可能在其他位置的,例如安装目录或者是/var/log/nginx/中。
  1.rails 3.1.0 ActionView::Template::Errror (application.css isn't precompiled)
  解答:
  这个错误是在生产环境中发生的,生产环境要求assets预先编译,或者是设置运行时编译。
  设置生产环境的配置信息。
  


  • # config/environments/production.rb
  • ...
  • config.assets.compile = true
  • ...
  

  或者是执行
  


  • bundle exec rake assets:precompile
  

  然后重启rails server,或者是重启apache和nginx。
  参考链接
  

  http://stackoverflow.com/questions/7275636/rails-3-1-0-actionviewtemplateerrror-application-css-isnt-precompiled
  http://ruby-china.org/topics/1415
  2.安装passenger
  gem install passenger
  passenger-install-apache2-module
  passenger-install-nginx-module
  安装的过程中会有提示,提示你没有安装的组件,等你都安装好之后,passenger在apache和nginx的模块就可以顺利安装了。安装之后,还会提示你如何设置apache和nginx。
  3.Rails  application unable to connect to mysql, Can't connect to local MySQL  server through socket '/tmp/mysql.sock' (2) (Mysql2::Error)
  /tmp/mysql.sock是你在config/database.yml文件中的
  


  • production:
  •   adapter: mysql2
  •   encoding: utf8
  •   host: localhost
  •   database: blog
  •   pool: 5
  •   username: root
  •   password: 123.com
  •   socket: /tmp/mysql.sock
  •   timeout: 5000
  

  就是说这个/tmp/mysql.sock文件不存在,其实就是位置不对。
  在安装了mysql之后,通过下面的方法找到这个文件。
  

mysqladmin -u root -p variables | grep socket  

  在输入密码之后,会出现面的内容
  


  • root@web:/home/github/blog# mysqladmin -u root -p variables |grep sock
  • Enter password:
  • | socket                                            | /var/run/mysqld/mysqld.sock                                                                                            |
  • root@web:/home/github/blog#
  

  上面的红色内容填写到database.yml文件中就可以了,或者建立一个符号链接。
  


  • ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock
  

  也可以解决这个问题。
  参考链接
  http://stackoverflow.com/questions/5499035/ruby-on-rails-3-cant-connect-to-local-mysql-server-through-socket-tmp-mysql-s
  http://stackoverflow.com/questions/11350929/rails-application-unable-to-connect-to-mysql-cant-connect-to-local-mysql-serve
  4.部署到生产环境的apache中,如何在apache的配置文件中设置RAILS_ENV
  在rails server命令中可以添加参数,指定服务启动使用什么配置,生产环境还是开发环境。
  rails server --environment=production
  在进行数据migration的时候,也可以指定使用database.yml中的哪种环境,生产环境还是开发环境。
  rake db:create RAILS_ENV=production
  



  •   ServerName www.yourdomain.com
  •   DocumentRoot /var/www/yourfolder/public
  •   
  •     AllowOverride all
  •     Options -MultiViews
  •     RailsEnv development
  •   

  •   ErrorLog /var/log/apache2/yourdomain.error.log
  •   LogLevel warn
  •   CustomLog /var/log/apache2/yourdomain.access.log combined

  

  请注意上面红色的文字。
  参考链接
  http://www.hoenick.com/blog/2012/01/02/ruby-on-rails-rails_env-im-apache-definiere/
  
  5.部署到生产环境的nginx,如何在nginx的配置文件中设置RAILS_ENV
  

  
server {
  
listen 80;
  
server_name www.yourhost.com;
  
root /somewhere/public;   #
  • config.cache_class = true;
      

      就是缓存了代码,在多次请求也不会重新加载代码,所有没有看见更新之后的效果。当然了,发布到生产环境的代码都是经过严格测试,稳定的代码,不会是修改来修改去的东西,修改也不会要求马上见效,需要严格测试才行。
      如果有这个需要的话,可以将设置改为false。如果不想该,也可以在tmp下建立一个restart.txt文件。
      


    • touch tmp/restart.txt
      

      需要重新加载的时候,就修改一下文件的访问时间。
      


    • echo "hello" >> restart
      

      也可以实现重新加载,而且还不破坏生产环境的配置文件。
      参考链接
      Rails Cache Clearing
      10.rails ActionView::Template::Error (undefined method `post_comments_path'
      功能是在一个博客的浏览页面添加评论。
      在app/views/posts/show.html.erb中添加了add comment部分的form,但是没有在config/route.rb中添加
      


    • resources posts do

    •   resources comments

    • end
      

      11.NoMethodError: undefined method `has_attached_file'
      You will also need to add the following to your Gemfile
      

    gem "paperclip", :git => "http://github.com/thoughtbot/paperclip.git"  

      参考文献
      1.Rails之道---> 摘录(1)Rails环境与配置



  • 运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
    2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
    3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
    4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
    5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
    6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
    7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
    8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

    所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-635122-1-1.html 上篇帖子: 如何在Windows下以服务的形式运行Nginx 下篇帖子: Nginx 基础详解及编译安装
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    扫码加入运维网微信交流群X

    扫码加入运维网微信交流群

    扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

    扫描微信二维码查看详情

    客服E-mail:kefu@iyunv.com 客服QQ:1061981298


    QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


    提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


    本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



    合作伙伴: 青云cloud

    快速回复 返回顶部 返回列表