目标版本(或类似)
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