223 lines
5.4 KiB
Plaintext
223 lines
5.4 KiB
Plaintext
# --------------------
|
|
# Installing Ruby using 'ruby version manager'
|
|
# --------------------
|
|
|
|
# see: https://gorails.com/deploy/ubuntu/24.04
|
|
|
|
# ---
|
|
# 0. Install pre-requisites
|
|
# ---
|
|
|
|
#apt-get install -y apt-transport-https ca-certificates curl gnupg
|
|
|
|
apt-get install git-core \
|
|
curl \
|
|
zlib1g-dev \
|
|
build-essential \
|
|
libssl-dev \
|
|
libreadline-dev \
|
|
libyaml-dev \
|
|
libsqlite3-dev sqlite3 \
|
|
libxml2-dev \
|
|
libxslt1-dev \
|
|
libcurl4-openssl-dev \
|
|
software-properties-common \
|
|
libffi-dev \
|
|
dirmngr \
|
|
gnupg apt-transport-https ca-certificates \
|
|
redis-server redis-tools
|
|
|
|
# ---
|
|
# 1 Install node.js
|
|
# ---
|
|
|
|
# seei also : https://git.oopen.de/install/node.js.git
|
|
|
|
NODE_VERSION="20.x"
|
|
|
|
# Download and import the Nodesource GPG key
|
|
#
|
|
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /usr/share/keyrings/nodesource.gpg
|
|
|
|
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_VERSION nodistro main" | tee /etc/apt/sources.list.d/nodesource.list > /dev/null
|
|
|
|
# N|solid Config
|
|
echo "Package: nsolid" | tee /etc/apt/preferences.d/nsolid > /dev/null
|
|
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nsolid > /dev/null
|
|
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nsolid > /dev/null
|
|
|
|
# Nodejs Config
|
|
echo "Package: nodejs" | tee /etc/apt/preferences.d/nodejs > /dev/null
|
|
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
|
|
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
|
|
|
|
apt install nodejs
|
|
|
|
# ---
|
|
# 2. Install yarn
|
|
|
|
# Download and import Yarn GPG key
|
|
#
|
|
curl -fsSL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor -o /usr/share/keyrings/yarn.gpg
|
|
|
|
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/yarn.gpg] https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list > /dev/null
|
|
|
|
# Nodejs Yarn
|
|
echo "Package: yarn" | tee /etc/apt/preferences.d/yarn > /dev/null
|
|
echo "Pin: origin dl.yarnpkg.com" | tee -a /etc/apt/preferences.d/yarn > /dev/null
|
|
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/yarn > /dev/null
|
|
|
|
apt install yarn
|
|
|
|
|
|
# ---
|
|
# 3. Install ruby using rbenv (Ruby version mmanager)
|
|
# ---
|
|
|
|
USER=webadmin
|
|
|
|
su - ${USER}
|
|
|
|
RUBY_VERSION=3.2.2
|
|
SHELL="/bin/bash"
|
|
|
|
# Next we're going to install Ruby using a Ruby version mmanager called rbenv.
|
|
# It is the easiest and simplest option, plus it comes with some handy plugins
|
|
# to let us easily manage environment variables in production.
|
|
#
|
|
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
|
|
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
|
|
|
|
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
|
|
|
|
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
|
|
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc
|
|
|
|
git clone https://github.com/rbenv/rbenv-vars.git ~/.rbenv/plugins/rbenv-vars
|
|
|
|
exec $SHELL
|
|
|
|
rbenv install ${RUBY_VERSION}
|
|
|
|
# Activate this Ruby version as the new default:
|
|
#
|
|
rbenv global ${RUBY_VERSION}
|
|
|
|
# Test ruby version
|
|
#
|
|
ruby -v
|
|
|
|
|
|
# ---
|
|
# 4. Install Bundler
|
|
# ---
|
|
|
|
# This installs the latest Bundler, currently 2.x.
|
|
#
|
|
# Note:
|
|
#
|
|
# For older apps that require Bundler 1.x, you can install it as well:
|
|
#
|
|
# gem install bundler -v 1.17.3
|
|
#
|
|
# but we install latest Bundler
|
|
#
|
|
gem install bundler
|
|
|
|
|
|
?? bundler install ??
|
|
|
|
|
|
# Test version of bundler
|
|
#
|
|
bundle -v
|
|
|
|
# exit user $USER
|
|
#
|
|
exit
|
|
|
|
|
|
# ---
|
|
# 5. Install NGINX
|
|
# ---
|
|
|
|
# Note!
|
|
# use install script
|
|
#
|
|
# /usr/local/src/nginx/install_nginx.sh
|
|
#
|
|
# from nginx git repository at https://git.oopen.de
|
|
#
|
|
cd /usr/local/src/
|
|
if [[ ! -d "/usr/local/src/nginx" ]] ; then
|
|
git clone https://git.oopen.de/install/nginx
|
|
fi
|
|
|
|
# Install nginx
|
|
#
|
|
/usr/local/src/nginx/install_nginx.sh
|
|
|
|
# Install dehydrated (Let's encrypt certification tool)
|
|
#
|
|
cd /usr/local/src/
|
|
if [[ ! -d "/usr/local/src/dehydrated-cron" ]] ; then
|
|
git clone https://git.oopen.de/certificates/dehydrated-cron
|
|
fi
|
|
|
|
# Install dehydrated..
|
|
#
|
|
/usr/local/src/dehydrated-cron/install_dehydrated.sh
|
|
|
|
|
|
|
|
# ---
|
|
# 6. Install Passenger packages
|
|
# ---
|
|
|
|
# see also:
|
|
# https://www.phusionpassenger.com/docs/advanced_guides/install_and_upgrade/nginx/install/oss/bookworm.html
|
|
# https://www.phusionpassenger.com/docs/advanced_guides/install_and_upgrade/nginx/install/#select_os
|
|
|
|
# install pre-requisites
|
|
#
|
|
apt-get install -y dirmngr gnupg \
|
|
apt-transport-https \
|
|
ca-certificates curl
|
|
|
|
|
|
# Install PGP key for phusionpassenger.com's repository
|
|
# and add HTTPS support for APT
|
|
#
|
|
curl https://oss-binaries.phusionpassenger.com/auto-software-signing-gpg-key.txt \
|
|
| gpg --dearmor \
|
|
| sudo tee /etc/apt/trusted.gpg.d/phusion.gpg >/dev/null
|
|
|
|
echo "deb https://oss-binaries.phusionpassenger.com/apt/passenger bookworm main" > /etc/apt/sources.list.d/passenger.list
|
|
apt update
|
|
|
|
|
|
# Install Passenger + Nginx module
|
|
#
|
|
apt-get install -y libnginx-mod-http-passenger
|
|
|
|
# Load passenger module
|
|
#
|
|
if [ ! -f /etc/nginx/modules-enabled/50-mod-http-passenger.conf ]; then
|
|
ln -s /usr/share/nginx/modules-available/mod-http-passenger.load /etc/nginx/modules-enabled/50-mod-http-passenger.conf
|
|
fi
|
|
|
|
# Adjust passenger configuration
|
|
#
|
|
# Change the passenger_ruby line to match the following:
|
|
#
|
|
# passenger_ruby /var/www/.rbenv/shims/ruby;
|
|
#
|
|
perl -i -n -p -e "s/^((\s*passenger_ruby\s+).*)/#\1\n\2/var/www/.rbenv/shims/ruby;/" \
|
|
/etc/nginx/conf.d/mod-http-passenger.conf
|
|
vim /etc/nginx/conf.d/mod-http-passenger.conf
|
|
|
|
|
|
# Restart NGINX webservice
|
|
#
|
|
systemctl restart nginx
|