(系统迁移、呕心沥血)Ubuntu22.04 安装配置上古ruby2.2.2+redmine3.2.3+rails4.2.5.2+mysql5.7(RVM),并运行redmine项目

目标版本(或类似)

OS:ubuntu22.04

ruby -v
ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux]

rails -v
Rails 4.2.5.2

gem -v
3.0.9

bundler -v
1.17.2

openssl version
OpenSSL 1.0.2k

================

【更新repo源】

修改源文件。
nano /etc/apt/sources.list

下记源连接粘到文件最后,crtl+x保存,yes,回车。

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse

【导入公钥,要不然部分apt源不好用】
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 3B4FE6ACC0B21F32

【更新/etc/openssl/cert证书】
apt-get install --reinstall ca-certificates

【更新源list】

apt update

【编译器版本替换11到4.8.5】
sudo apt install gcc-4.8 g++-4.8

【替换默认gcc11编译器】

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 10
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30
sudo update-alternatives --auto gcc
sudo update-alternatives --auto g++

【查看现在编译器版本】

gcc-4.8 --version

【安装库】

apt install libreadline-dev
apt install zlib1g-dev
apt install libssl-dev(不装,之后让RVM装)
apt install libyaml-dev
apt install libsqlite3-dev
apt install libgdbm-dev
apt install libncurses5-dev
apt install libffi-dev
apt install libxml2-dev
apt install libxslt1-dev
apt install libncurses5-dev
apt install libicu-dev

apt install make

apt-get install libncurses5-dev libncursesw5-dev
sudo ln -s /usr/lib/x86_64-linux-gnu/libncurses.so.6 /usr/lib/x86_64-linux-gnu/libncurses.so.5
sudo ldconfig

【安装openssl】
tar -zxvf openssl-1.0.2k.tar.gz

 ./config shared --prefix=/usr/local/openssl1.0.2k -fPIC

make
make install

【openssl1.0.2k】环境变量参考

nano ~/.bashrc

粘贴文件最后

export PATH=/usr/local/openssl1.0.2k/bin:$PATH  
export LD_LIBRARY_PATH=/usr/local/openssl1.0.2k/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/ssl1.0.2k/lib:$LD_LIBRARY_PATH

export LDFLAGS="-L /usr/local/openssl1.0.2k/lib"
export CPPFLAGS="-I /usr/local/openssl1.0.2k/include"
export PKG_CONFIG_PATH="/usr/local/openssl1.0.2k/lib/pkgconfig"
export LD_LIBRARY_PATH=/usr/local/openssl1.0.2k/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/usr/local/openssl1.0.2k/lib/pkgconfig:$PKG_CONFIG_PATH
export CPATH=/usr/local/openssl1.0.2k/include:$CPATH
export LIBRARY_PATH=/usr/local/openssl1.0.2k/lib:$LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/libssl.so.3:${LD_LIBRARY_PATH}

【静态链接库软连接等】

ln -sf /usr/local/ssl1.0.2k/bin/openssl /usr/bin/ssl1.0.2k

ln -s /usr/local/openssl1.0.2k/lib/libcrypto.a /usr/lib64/libcrypto.a
ls -l /usr/lib64/libcrypto.a

【读取环境变量】
source ~/.bashrc

【检测libssl是不是被识别了】
pkg-config --cflags --libs libssl

【安装rvm 管理ruby】

先下载rvm-master放服务器上,不赘诉了 。
unzip rvm-master.zip -d ./rvm
cd ~/rvm-master
./install

【修改环境变量】
nano ~/.bashrc

下记粘到最后:
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
source ~/.bashrc
source /etc/profile.d/rvm.sh

【查看rvm版本状态】
rvm -v

【RVM用户】
usermod -aG rvm root
usermod -aG rvm userxxx

【安装ruby 2.2.2】
rvm install 2.2.2

上面库装全了的话,基本不报错。

报错了查看openssl version 是否是1.0.2k

分别查看dpkg -l | grep libssl1.0-dev ,dpkg -l | grep libssl-dev 是不是 libssl1.0-dev , libssl-dev不对,这个是3.0的开发库

查看dpkg -l | grep libmysqlclient 是不是 5.7.36-1ubuntu18.04   ,8版本不行

查看gcc -v 版本是不是4.8.5
【gcc编译器版本参考】
gcc -v
gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)

【安装mysql驱动】
apt-get install libmysqlclient-dev

【解压项目文件夹】
tar -zxvf rubyxxxx.tar.gz

【进入项目文件夹,使用ruby2.2.2】

cd xxxx

rvm use 2.2.2

ruby -v

2.2.2p95版

【安装GEM类】
gem install 从项目gem file 更新gems

或手动安装bundler 1.74后,bundler install 更新gems环境

手动:先去rubygems.org下载对应bundler版本。

gem install bundler1.7.4 -l (加-l 是本地安装gem)

【重要】

报错了查看openssl version 是否是1.0.2k

查看gcc -v 版本是不是4.8.5 不是的话,重新执行上面替换gcc版本命令

【启动】

gems 全部更新完毕后,尝试启动项目。


rails s

测试成功后ctrl+C退出(没配置数据库,一般会提示数据库连接失败,到这基本正常了)

【数据库密钥导入】

redmine项目有数据库密钥,别忘了从项目配置文件中拿。

执行命令配如环境变量,测试成功后可以加入 ~/.bashrc
export SECRET_KEY_BASE=密钥XXXXXXXXXXXXXXX

或者

export RAILS_SECRET_KEY_BASE='XXXXXXXXXXXXXXXXXXX'

也可以新生成一个

【安装数据库】

ubuntu 22 可以正常apt 装mysql5.7


安装后,设置数据库远程访问权限,恢复数据

【启动redmine】
nohup rails s -b 0.0.0.0 -p 3000 -> logs.txt &
nohup rails s -b 0.0.0.0 -p 3000 > logs.stdout.txt 2> logs.stderr.txt &

浏览器访问redmine,成功!

补足:如果报mysql 的内存错误。在下记文件夹找找,有没有这个文件。

libmysqlclient.so.20       libmysqlclient.so.20.3.29

21版或以上是不行的,如果上面环境变量都配置了,一直报这个错误,可以直接把这个文件copy到这个文件夹试一试。
1,找到这个文件,不赘述了

2,copy到/usr/lib/x86_64-linux-gnu 下

3,重启rails 尝试

之前安装了libmysqlclinet.so 的5.7版,也没有这个文件,不知道为何。和另一台成功的服务器对比才发现这个问题,有可能是安装库的顺序问题,给顶掉了。或者auto remove了。

总之是这个问题引起的。

虽然剑走偏锋,非官方推荐,也算是好用了。

国内外关于ubuntu 22 安装ruby2.2.2 的文件少之又少,我这也算是做贡献了。

第一次发文章,码文不易,求个小心心,祝各位部署顺利w

2024-06-17

  • 25
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值