美文网首页
设置云服务器 慢慢来

设置云服务器 慢慢来

作者: RealAnalysis | 来源:发表于2021-05-18 18:05 被阅读0次

    从头设置云 一步步从最初捋清楚哪里出问题

    先是选择 Ubuntu Server 下载 Long Term Support 的最新版 目前是20.04版

    释放了之前的服务器 又充值创建了个新实例 设置完毕后 发现...

    本机操作?!

    我之前一直操作各种报错...都是在本机地址设置的?!!!要这样

    妈呀 完全搞错地址造成的报错吗?

    嗯 估计这个推测不对啊 因为很多设置都是在登录了远端服务器后的地址上操作的吧?不过注意到这个细节 以后多留心观察也好

    顺利进行到数据库安装 这次还是头铁选mysql 但是这次认真去官网找了相关资料 好好的设置了一下数据库的root password再继续 不随便跳过任何一步

    进入数据库console后

    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '替换成你设置的密码';
    

    希望替换成功啊 好像也没法验证

    通过教程加上官网的资料 设置好了Passenger Nginx这两大哥后 发现一个有趣的事情 免密登录不能用的情况

    本机才能免密登录

    最后 发现我估计是阅读不够认真导致的数据库一直报错...

    请用 deploy 身份登入 ssh deploy@XXX

    这段我貌似没有待在deploy的用户里面去创建文档,而是跑去root这最高权限去创建文档了...能顺利就有鬼了...

    如果这次还出问题,估计就是数据库的root password没有设置好导致的

    嗯 报错 不过好像不是数据库

    这个报错貌似是因为文档的格式出问题导致的

    production:
      secret_key_base: 把刚刚的乱数key贴上来
    

    需要空格后 再“把刚刚的乱数key贴上来”

    这个secret文档

    这个报错的确解决了问题

    然后 老朋友来了

    还是老问题啊 密码这边需要加引号?

    试试看吧?

    嗯 依旧报错,而且有趣的是...报错的内容是一致的?!所以真的是密码出问题了?! 如果是这样,那是好事啊?!发现问题所在了?!

    数据库root密码貌似是关键

    在尝试通过改密码搞定之前 先查到一些 「数据库跟rails版本冲突」导致问题的解法 先尝试吧

    先砍掉branch 重新搞 12节的内容 云服务的部分就算我设置没问题

    先把 sqlite 给注解掉

    # gem 'sqlite3'
    

    加上gem的版本为低版本

    gem 'mysql2', '~> 0.3.21'
    

    报错无法正常安装

    尝试

    gem install mysql2
    gem install mysql2
    

    发现居然安装了两个版本的 mysql 全部删掉

    还是一直同样的报错失败...就放弃了 去掉后面的版本限制用 gem 'mysql2'

    然后剩下的跟着教程做 依旧老朋友的报错 mysql2 出问题

    我就不信邪了就要弄好 哼! 跑去查Capistrano::Rails的GitHub内容 用最新的设置来尝试看看会不会有用

    https://github.com/capistrano/rails

    修改了一下 config/deploy.rb里这一行 替换成

    append :linked_dirs, 'log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', '.bundle', 'public/system', 'public/uploads'
    

    还是同样的数据库报错

    那就尝试了一下 config/deploy.rb 再添加

    set :migration_role, :app
    

    还是报错

    老朋友报错了

    那就注解掉 set :migration_role, :app保留其他的修改 继续死磕

    估计就是版本问题

    因为我尝试期间遇到

    bundle exec rake db:migrate:status
    

    想查看数据库历史

    遇到报错

    简直再现老朋友报错啊

    然后靠着

    1.把注解掉的 sqlite3 添加到 group :development do 跟之前移过来的

    这样操作后 ```bundle install``

    就搞定了!正常运作了!

    就是数据库版本问题

    也就是说 搞对了mysql2的版本 我就能正常运作了

    推测都是古旧的ruby版本害的...这个老项目是几年前的啦...

    有个新的想法 如果搞来搞去最后还搞不定,直接升级project用的ruby版本是否可行啊?!

    第二个怀疑的修改方法是

    太晚了 明天搞这两个猜想

    先尝试了一下

    RAILS_ENV=production bundle exec rake:migrate
    

    果然跑不动啊...

    推测就是mysql2数据库问题

    那么先大胆尝试改 config/database.yml

    截图里的database估计要改成自己的数据库名字

    default: &default
      adapter: mysql2
      encoding: utf8
      pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
      database: MyTrip
      username: root
      password: <%= ENV['DATABASE_PASSWORD'] %>
      timeout: 5000
    

    注意空格之类的格式 不能有问题!

    一开始最初是这样的

    default: &default
      adapter: sqlite3
      pool: 5
      timeout: 5000
    

    尝试看看

    嗯 还是报错 继续改一下production的数据库呢

    database: db/production.mysql2
    

    还是报错 就尝试去Gemfile 用production把mysql2包起来呢?

    还是不行,回头只改部分 config/database.yml 不添加有的没的呢?

    还是报错 全部改回原样...估计是mysql的版本不对 所以这里不会自动修改相关内容

    有趣的是我发现 把sqlite3从 group :development do移回去原来的地方

    # Use sqlite3 as the database for Active Record
    gem 'sqlite3'
    

    然后bundle install

    bundle exec rake db:migrate:status
    

    也正常的!

    嗯 来修改版本吧

    gem 'mysql2', '~> 0.4.0'
    

    不行 报错依旧

    然而我发现一个亮点...云服务器设置的ruby安装的是老旧的 2.4.0版本

    云服务器的ruby...

    我本机的项目MyTrip ruby是 2.6版本的

    本机的ruby版本高于云服务器的ruby版本

    这...估计是数据库版本冲突的原因吧...想想办法统一一下 或者是否能向下兼容之类的...

    现在的想法就是, 把云服务器的ruby以及本机项目的ruby全部都提升到最高版本

    去ruby的官网直接用

    sudo apt-get install ruby-full
    

    把云服务器的ruby版本装了个最新的 没想到啊...居然还是之前的版本?!

    就摸索着去安装了一个 rbenv 看着描述就很靠谱啊

    Use rbenv to pick a Ruby version for your application and guarantee that your development environment matches production.

    嗯 有点微妙 一气之下又去下载RVM

    https://github.com/rvm/ubuntu_rvm

    然鹅...需要用户密码...我晕...我设置deploy用户免密...只好回去root 添加rvm给root用户

    然后再回到 deploy 用户这里跑一次

    rvm install ruby
    

    云端就能变成最新的ruby版本了

    接下来去玩儿本机的项目的ruby版本更新

    等等 貌似找到一个解释 说明本机无法正常安装mysql2的解释

    https://github.com/brianmario/mysql2/issues/1021

    看完以后我觉得要糟糕...好像项目的ruby要降级...才能跟最新的mysql2兼容啊...

    不过, 这些是window系统的问题 这系统里的mysql2 0.5.2ruby 大于2.6的版本不兼容 不代表...唉 参考参考吧

    唯一欣慰的是,估计就是「数据库版本」跟「ruby版本」不兼容导致的报错

    然后就在本机用 rvm install 2.5.5尝试安装了更低版本的ruby

    然后跑 bundle 边看这本机的ruby版本降级 边开始寻思着...我把云端的ruby升级到最新的 3.0.0了我去...等下估计要再降级回去2.4的版本...我去...那这样的话...不如本机等一下也一起降级到2.4的ruby吧

    云端服务器跟本机 能一致就一致 然后跟数据库版本不冲突 估计就解决了...

    嗯,果然还是报错,那么接下来本机先改成2.4.6版本ruby
    然后用ssh协议去root用户里 rvm install 2.4.6

    结果安装好了root还是显示 ruby 3.0.0 回去deploy用户安装一下低版本的 2.4.6试试看

    估计还是版本问题 版本没有转换 后来发现要切换是有相关代码的
    rvm install ruby-x.x.x
    

    安装好了以后 确定要哪个ruby当默认版本

    rvm --default use ruby-x.x.x
    

    两边都记得要bundle一下 然后再试试看 如果还不行...

    服务器砍掉 项目的 deploy branch 砍掉,选一个本机能跑的项目是ruby 2.6之下版本的 拿去练手看看 如果没有这样的项目 自己动手做一个

    最糟糕的情况,就是动手做一个什么都是最新版本的项目,服务器也都用最新的版本的一切去部署看看...不过这样的话,后续教程估计还有坑等着我 哈哈哈

    看了一下,全部本机项目都是 2.6以上的ruby版本 实在不行...我换一个数据库吧 太麻烦了

    嗯 发现报错的地方老显示

    就用

    bundle env
    

    查看了一下运作环境 本机看完去看云端发现这里有问题

    User Path   /home/deploy/.gem/ruby/2.4.0
    

    继续查资料 发现一个“WHY DOES require 'some-gem' FAIL?”的相关内容提到

    觉得有道理 就随手查了一下

    查资料发现一个问题

    参考资料来源

    https://guides.rubygems.org/faqs/

    相关文章

      网友评论

          本文标题:设置云服务器 慢慢来

          本文链接:https://www.haomeiwen.com/subject/yuwhjltx.html