最近接触了一个项目是使用Ruby 语言开发的
首次接触Ruby 语言开发的Web 应用。
使用Vmware WorkStation 搭建了一台 CentOS 7.9 然后在这台虚拟机进行环境的搭建: 基本成功跑通。
为了让各位兄弟少踩坑, 特地写一篇文章 记录下 整个踩坑的经过和历程。
准备工作:
一台Linux 虚拟机 CentOS 7.9
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core) 配置(双核, 2G内存)
1.服务器 环境 Centos 7 最小化安装 后
通过设置网卡配置文件: 定义一下内网IP 我这里使用的IP为 :192.168.4.200
宿主机 物理电脑的IP为: 192.168.4.74
VM 的网络和 PC机的网络 通过桥接的方式连通:
Centos 7 更改yum源:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
先让两台机可以互通。
2. 安装工具Xshell 软件 进行管理 虚拟机VM 测试环境
保证 本地主机 192.168.4.74 和 192.168.4.200 互相可以ping通 的情况下 开始搭建:
具体搭建步骤如下 :
借鉴资料,需要具备的一些基础知识: ruby On rails 目录结构:
https://www.cnblogs.com/hyshareex/p/10218902.html
ruby gem , 还有rails 之间的关系详解: https://www.cnblogs.com/hyshareex/p/10219309.html
Ruby-On-Rails 生成指定版本的Rails 项目 : https://www.cnblogs.com/hyshareex/p/10218833.html
1. 先安装 rvm 环境 (rvm 简称 ruby 虚拟机环境 ruby
先将VM 的环境的yum 源更换为aliyun 的源或者163 网易的yum源,
安装 curl
yum -y install curl
安装RVM
安装之前先导入key:
sudo gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
有可能会报错, 报错会提示要导入 一些文件
sudo curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -
sudo curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import -
先执行上面的 命令 导入相关的gpg2 文件
执行 安装命令 sudo curl -L get.rvm.io | bash -s stable --ruby
安装完之后 再进行 source 一下 更新下环境变量的配置文件:
sudo source ~/.bashrc
sudo source ~/.bash_profile
sudo source /etc/profile.d/rvm.sh
sudo rvm install 2.7.2
安装完成之后 find 一下 rvm 执行命令 查看rvm
find / -name rvm -print
下载rvm的依赖
rvm requirements
查看rvm库中已知的ruby 版本
rvm list known
根据查看的版本号,选择需要的版本。
安装需要的ruby版本
我这边安装的是ruby 2.7.2
rvm install 2.7.2
使用指定版本的ruby
rvm use ruby 2.7.2
设置默认版本
rvm use 2.7.2 --default
查看ruby 版本
ruby -v
gem install 相关的组件
下面是我安装时遇到的坑
Gem install 报错 error
使用rvm 安装完成 ruby 后 安装完成rvm 环境后 gem 也就默认安装完成了,
ruby -v 查看ruby 版本 gem -v 查看 gem 的版本
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
添加 gem的 源 为ruby-china .
安装 Bundler
gem install bundler
安装 rails 环境
gem install rails
安装完成截图
Bundler install 报错:
根据提示是由于缺少 mysql2 的组件。
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
An error occurred while installing mysql2 (0.5.3), and Bundler
cannot continue.
Make sure that `gem install mysql2 -v '0.5.3' --source
根据报错 提示 需要安装 gem install mysql2 -v '0.5.3'
安装mysql2 报错, 是因为没有安装必要的mysql库导致。
解决方法 : 安装mysql-devel 的插件进行解决
yum -y install mysql-devel
yum 将 mysql-devel 给安装上。
gem install mysql2
将以上服务都安装好之后 再bundler install
然后 通过 gitlab 将代码 git pull 到本地 然后 进行部署
rails的 代码 使用tar 命令 解压缩
tar -zxvf aaa.tar.gz -C /root/aaa/
cd /root/aaa/ 进入到 代码路径 进行启动
rails server 启动成功截图:
至此 rails 项目部署完成。
默认Rails 使用sqlite3 创建名 blog的应用
rails new blog
用mysql 创建名为blog的应用
rails new blog -d mysql
用postgreSQL 创建名为blog的应用
rails new blog -d postgresql
如果为mysql和postgreSQL 配置了用户名和密码, 需要先配置config/database.yml 里面的用户名和密码,然后再运行下面的命令创建数据库文件
rails db:create
如果运行的是rails项目里的生产环境
命令为:
RAILS_ENV=production rails s
在部署的目录下跑一下export命令 将数据库mysql的密码写进环境变量中
export A_DATABASE_PASSWORD="XXXXXX"
如果配置了 Rails 程序连接aliyun 的 RDS 需要这样配置:
备注:
Gemfile 配置文件 :
ruby '2.7.1'
gem 'rails', '~> 6.1.4', '>= 6.1.4.1'
gem 'mysql2', '~> 0.5'
gem 'puma', '~> 5.0'
gem 'sass-rails', '>= 6'
gem 'webpacker', '~> 5.0'
gem 'turbolinks', '~> 5'
gem 'jbuilder', '~> 2.7'