コレグレーデギネード

WindowsとかUbuntuとかRubyとかRailsとか

rails webpaker:install error node_modules/node-sass: Command failed.

Gemfile内のwebpackerのバージョンを変更
Gemfile

- gem 'webpacker',  '~> 4.0'
+ gem 'webpacker',  '~> 5.0'
$ bundle install

yarn.lockの削除

package.json内のwebpackerのバージョンを変更
package.json

- "@rails/webpacker": "4.3.0"
+ "@rails/webpacker": "5.4.3"
$ yarn install
$ yarn add node-sass

参考:error /node_modules/node-sass: Command failedの解決策

github.com New repository

Create a new repository on the command line

echo "# repository_name" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin git@github.com:[Owner]/[repository_name].git
git push -u origin main

Push an existing repository from the command line

git remote add origin git@github.com:[Owner]/[repository_name].git
git branch -M main
git push -u origin main

apt-key deprecation warning

$ sudo apt update
ヒット:1 http://ftp.riken.jp/Linux/ubuntu jammy InRelease
ヒット:2 http://ftp.riken.jp/Linux/ubuntu jammy-updates InRelease              
ヒット:3 http://ftp.riken.jp/Linux/ubuntu jammy-backports InRelease            
ヒット:4 http://ftp.riken.jp/Linux/ubuntu jammy-security InRelease             
ヒット:5 https://dl.yarnpkg.com/debian stable InRelease                        
ヒット:6 https://deb.nodesource.com/node_14.x jammy InRelease                  
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了        
パッケージはすべて最新です。
W: https://dl.yarnpkg.com/debian/dists/stable/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
$ apt-key list
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
/etc/apt/trusted.gpg
--------------------
pub   rsa4096 2016-10-05 [SC]
      72EC F46A 56B4 AD39 C907  BBB7 1646 B01B 86E5 0310
uid           [  不明  ] Yarn Packaging <yarn@dan.cx>
sub   rsa4096 2016-10-05 [E]
sub   rsa4096 2019-01-02 [S] [有効期限: 2023-01-24]
sub   rsa4096 2019-01-11 [S] [有効期限: 2023-01-24]

/etc/apt/trusted.gpg.d/ubuntu-keyring-2012-cdimage.gpg
------------------------------------------------------
pub   rsa4096 2012-05-11 [SC]
      8439 38DF 228D 22F7 B374  2BC0 D94A A3F0 EFE2 1092
uid           [  不明  ] Ubuntu CD Image Automatic Signing Key (2012) <cdimage@ubuntu.com>

/etc/apt/trusted.gpg.d/ubuntu-keyring-2018-archive.gpg
------------------------------------------------------
pub   rsa4096 2018-09-17 [SC]
      F6EC B376 2474 EDA9 D21B  7022 8719 20D1 991B C93C
uid           [  不明  ] Ubuntu Archive Automatic Signing Key (2018) <ftpmaster@ubuntu.com>
$ sudo mkdir -p /usr/local/share/keyrings
$ sudo apt-key export 86E50310 | sudo gpg --dearmour -o /usr/local/share/keyrings/yarn.gpg
$ sudo vim /etc/apt/sources.list.d/yarn.list
-  deb https://dl.yarnpkg.com/debian/ stable main
+ deb [signed-by=/usr/local/share/keyrings/yarn.gpg] https://dl.yarnpkg.com/debian/ stable main

HP EliteDesk 800 G2 Tower M.2 PCIe NVMe 起動成功

HP EliteDesk 800 G2 Tower PC

現在までの本体部品換装歴

  • メインディスクを3.5インチHDDから2.5インチSATA SSD
  • モリーを8GB→16GBへ
  • グラフィックボード GTX1660Tiを実装
  • CPUをCore-i5 6500→Core-i7 6700


今回はM.2 NVMeのSSDで起動できるか検証しました。
準備として、BIOS、他ドライバーはHPのサイトからダウンロードして最新のものを適用しています。


使用したSSDはこちら↓
Amazon | シリコンパワー SSD 256GB 3D TLC NAND M.2 2280 PCIe3.0×4 NVMe1.3 P34A80シリーズ 5年保証 SP256GBP34A80M28 | SP Silicon Power | 内蔵SSD 通販


HP EliteDesk 800 G2 TowerのマザーボードにはM.2スロットがないため、PCIeに変換アダプターカードを挿して実装しました。
使用したカードはこちら↓
Amazon.co.jp: GLOTRENDS M.2 PCIe NVMe 4.0/3.0 変換アダプター、M.2ヒートシンク(3mm厚み)付き、M.2用 PCI-express 4.0/3.0 x4変換ボード、M.2 スロット、M.2 PCIE SSD(NVMeとAHCI)、PCI-E GEN4フルスピード、デスクトップPC用インストール(PA09-HS) : パソコン・周辺機器


接続していたディスクのSATAケーブルは念のためすべて外し、PCIeに挿したM.2のSSDのみの状態にして起動をかけました。

もともとWindows10がすでにインストールされていたのでセットアップは割愛。BIOSの設定もなく無事に起動できました。


カタログ値では最大3,100MB/sと書かれていましたが、CrystalDiskMarkでの計測では2,240MB/sでした。

とはいえ、SATASSDに比べて4倍のスピードになりました。
皆様の参考になれば幸いです。

Ubuntu22.04.3 Server にRailsの本番環境を整える [Apache Passenger]

  • VirtualBoxにインストールされたUbuntu22.04.1 Serverが対象
  • vimssh、git、curlがインストール済みであること
  • rubyバージョンは2.7.1
  • railsバージョンは6.1.7.6
  • データベースはPostgreSQLを使用
  • ImageMagickを使用
  • Apach、Passengerを使用
  • リモートでDeployできる環境構築まで

Ruby管理ツールrbenvをインストールする

$ sudo git clone https://github.com/rbenv/rbenv.git /usr/local/rbenv
$ sudo git clone https://github.com/rbenv/ruby-build.git /usr/local/rbenv/plugins/ruby-build

visudo コマンドで編集
Defaults secure_pathの変更
Defaults env_keepの追加

$ sudo visudo
Defaults    secure_path ="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/rbenv/bin:/usr/local/rbenv/shims"
Defaults    env_keep +="RBENV_ROOT"

/etc/profileの一番下に下記の設定を追記

$ sudo vim /etc/profile
export RBENV_ROOT=/usr/local/rbenv
export PATH="$RBENV_ROOT/bin:$PATH"
eval "$(rbenv init -)"

設定を反映

$ source /etc/profile

Rubyに必要なライブラリーをインストール

sudo apt install autoconf bison build-essential libssl-dev libyaml-dev libreadline-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm6 libgdbm-dev

Rubyをインストール

$ sudo rbenv install 2.7.1

2.7.1を通常使用するバージョンに指定

$ sudo rbenv global 2.7.1

設定を反映

$ source /etc/profile

Rubyがインストールされたか確認

$ ruby -v
ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux]

bundlerのインストールする

$ sudo gem install bundler

rubygemsのアップデート

$ gem update --system 3.2.33

nodeをインストールする

$ curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
$ sudo apt-get install nodejs

yarnをインストールする

$ sudo npm install -g yarn

PostgreSQLをインストールする

$ sudo apt install postgresql

ライブラリをインストール

$ sudo apt install libpq-dev

ユーザの追加

$ sudo su - postgres
$ createuser --createdb [user]

ImageMagickをインストールする

$ sudo apt install imagemagick

ライブラリをインストールする

$ sudo apt install libmagickcore-dev

Apacheをインストールする

$ sudo apt  install apache2 apache2-dev

パッセンジャーをインストールする

$ sudo gem install passenger

新しくgemパッケージをインストールしたのでコマンドが使えるように読み込む

$ sudo rbenv rehash

モジュールをインストールする

$ sudo passenger-install-apache2-module

必要なライブラリをインストールするように指示されるのでその通りにインストールする

$ sudo apt-get install libcurl4-openssl-dev apache2-dev libapr1-dev libaprutil1-dev

再度passenger-installコマンドを実行

$ sudo passenger-install-apache2-module

インストールが終了するとApacheの設定ファイルに挿入する記述が表示されるので保存しておく。なお、passenger-installコマンドで再表示可能。

$ sudo passenger-install-apache2-module --snippet
LoadModule passenger_module /usr/local/rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/passenger-6.0.20/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /usr/local/rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/passenger-6.0.20
  PassengerDefaultRuby /usr/local/rbenv/versions/2.7.1/bin/ruby
</IfModule>

Apacheの設定ファイルの最下部にPassengerの記述を挿入

$ vim /etc/apache2/apache2.conf
:
LoadModule passenger_module /usr/local/rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/passenger-6.0.20/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /usr/local/rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/passenger-6.0.20
  PassengerDefaultRuby /usr/local/rbenv/versions/2.7.1/bin/ruby
</IfModule>

Apacheのデフォルトのバーチャルホスト設定を無効にする

$ sudo a2dissite 000-default
Site 000-default disabled.
To activate the new configuration, you need to run:
  systemctl reload apache2

新しくバーチャルホストの設定ファイルを作る

$ sudo vim /etc/apache2/sites-available/example.conf
<VirtualHost *:80>
        ServerName www.example.com
        ServerAlias example.com
        DocumentRoot /var/www/example/current/public
        ErrorLog ${APACHE_LOG_DIR}/example.error.log
        CustomLog ${APACHE_LOG_DIR}/example.access.log combined
        LogLevel warn
        <Directory "/var/www/example/current/public">
          Require all granted
        </Directory>
</VirtualHost>

バーチャルホスト設定の有効化

$ sudo a2ensite example.conf

ルートディレクトリの作成

$ sudo mkdir /var/www/example

ルートディレクトリの所有者をデプロイするユーザーへ変更

$ sudo chown [user] /var/www/example

ルートディレクトリのパミッションを変更

$ sudo chmod 755 /var/www/example

Apache再起動

$ sudo service apache2 reload

master.keyのコピー

<strong>config/master.keyをサーバーの/var/www/example/shared/config/master.keyにコピー</strong>

プロジェクトをサーバーにデプロイ

$ cap production deploy

自分用メモ)Ubuntu22.04.3にRuby on Rails開発環境を整える

  • VirtualBoxにインストールされたUbuntu22.04.3が対象
  • vimssh、git、curlがインストール済みであること
  • シェルはBashを使用
  • rubyバージョンは2.7.1
  • railsバージョンは6.1.3.2
  • データベースはPostgreSQLを使用
  • ImageMagickを使用
  • プロジェクトはgitで管理

rbenv

Ruby管理ツールrbenvをインストールする

$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv
$ git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build

rbenvがシェルで使えるようにパスを通す

$ echo 'export PATH="~/.rbenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc

シェルの設定を反映

$ source ~/.bashrc

rbenvがインストールされたか確認

$ rbenv --version
$ rbenv 1.2.0-87-ge8b7a27

必要なライブラリーをインストール

$ sudo apt install autoconf bison build-essential libssl-dev libyaml-dev libreadline-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm6 libgdbm-dev

ruby

インストール可能なRubyの全バージョンを表示

$ rbenv install -L/--list-all

rubyをインストール

$ rbenv install 2.7.1
==> Downloading ruby-2.7.1.tar.gz...
Installing ruby-2.7.1...

標準で使用するrubyバージョンを指定

$ rbenv global 2.7.1

rubyがインストールされたか確認

$ ruby --version
ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux]

bundler

bundlerのインストール

$ gem install bundler -v 2.4.22

PostgreSQL

PostgreSQLをインストールする

$ sudo apt install postgresql

ライブラリをインストール

$ sudo apt install libpq-dev

ユーザの追加

$ sudo su - postgres
$ createuser --createdb [user]

ImageMagick

ImageMagickをインストールする

$ sudo apt install imagemagick

ライブラリをインストール

$ sudo apt install libmagickcore-dev

PDFを扱う場合

$ sudo vim /etc/ImageMagick-6/policy.xm
97行目
-  <policy domain="coder" rights="none" pattern="PDF" />
+  <policy domain="coder" rights="read|write" pattern="PDF" />

SSH

SSHの鍵を作成する

$ ssh-keygen

公開鍵をgitに登録する

省略

クローン

gitで管理されたプロジェクトをダウンロードする

$ git clone git@github.com:projects/sample
Cloning into 'sample'...

Module build failed (from ./node_modules/babel-loader/lib/index.jsエラー回避

package.jsonの編集

  "devDependencies": {
    "@babel/plugin-proposal-private-methods": "^7.18.6",
    "@babel/plugin-proposal-private-property-in-object": "^7.21.0",
    "webpack-dev-server": "^3"
  }
$ npm install

gemパッケージ

Gemfileにpsychを書き加える
4.0系はYAMLエイリアスが使用できないので3.0系をインストールする
Gemfile

+ gem 'psych', '~> 3.1'

bundle install でgemパッケージをインストールする
Railsバージョンをアップデートする
Gemfile

− gem 'rails', '~> 6.0.3'
+ gem 'rails', '~> 6.1.7.6'

Webpackerのバージョンをアップデートする
Gemfile

− gem 'webpacker', '~> 4.0'
+ gem 'webpacker', '~> 5.0'

bundle install

$ cd [project]
[project] $ bundle install

Node.js

nodejsをインストールする

$ curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -
$ sudo apt install -y nodejs

yarn(JavaScriptのパッケージマネージャ)

yarnをインストールする

$ sudo npm install --global yarn
$ npm install

package.jsonを編集

-    "@rails/webpacker": "4.3.0",
+   "@rails/webpacker": "5.4.3",
+   "webpack": "^4.46.0",
+   "webpack-cli": "^3.3.12",
+   "node-sass": "^7.0.0",

yarn.lockを削除してyarn install

$ yarn install
$ yarn add node-sass

Webpacker

Webpackerのインストール

$ cd [project]
[project] $ rails webpacker:install

環境変数を設定

export NODE_OPTIONS=--openssl-legacy-provider

Webpackerのコンパイル

$ rails webpacker:compile

webpacker:compileエラー

$ rails webpacker:compile
Compiling...
Compilation failed:
node:internal/crypto/hash:69
  this[kHandle] = new _Hash(algorithm, xofLen);

データベース作成

[project]/config/database.yml内、development:に記述された通りにデータベスを作成する

$ createdb example_development

マイグレーション

[project] $ rails db:migrate

サーバー起動

[project] $ rails s

ブラウザで確認

http://localhost:3000/

ゲストOS(Ubuntu Desktop)からゲストOS(Ubuntu Server)にSSH接続するネットワーク設定

ホストOS(Windows 11)

VM VirtualBox マネージャー

ネットワーク設定
ゲストOSその1→設定→ネットワーク
アダプター2の「ネットワークを有効化」にチェックを入れる
割り当てを「内部ネットワーク」にする

Ubuntu ゲストOS ネットワーク設定

ゲストOSその2も同様に設定する

ゲストOS その1(Ubuntu Desktop 22.04.1)

新しくネットワーク設定ファイルを作成する

$ sudo vim /etc/netplan/01-network.yaml
network:
  version: 2
  ethernets:
    enp0s8:
      dhcp4: false
      addresses: [192.168.56.101/24]
      routes:
        - to: default
          via: 192.168.56.100
          metric: 100
      nameservers:
        addresses: [192.168.56.100,8.8.8.8]
      dhcp6: false

ネットワーク設定の有効化

$ sudo netplan apply

ゲストOS その2(Ubuntu Server 22.04.1)

新しくネットワーク設定ファイルを作成する

$ sudo vim /etc/netplan/01-network.yaml
network:
  version: 2
  ethernets:
    enp0s8:
      dhcp4: false
      addresses: [192.168.56.102/24]
      routes:
        - to: default
          via: 192.168.56.100
          metric: 100
      nameservers:
        addresses: [192.168.56.100,8.8.8.8]
      dhcp6: false

ネットワーク設定の有効化

$ sudo netplan apply


以上の作業で相互にSSH接続できればOK