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

设置云服务器 慢慢来

作者: 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