Linux環境(Rocky Linuxを使った)絶対に失敗しないRedmine環境の作り方レシピ
皆様こんにちは!本投稿は以下のアドカレで発表しております。
Redmineの環境を作る!そういう時、皆様は何を参考に作っていますか?
ここが一番に思いつきます。
しかし、実際にやってみるとあれ?っていうことが多い…。っというのも、私があるプロジェクトを起こすために自宅PCで環境構築試みたところ…
四苦八苦!!!!
いや、ホント久々にやるとわからない。しかも、CentOS系は今はRedHat問題(詳しくは以下のリンク)とかあって、OS選定に困りました…。
結果、RockyLinuxを採用しようとしているのですが、記事がない!
っというわけで、絶対に失敗しない記事を書いて皆様の少しでもお力になれば!って思い、記事にすることに決めました。
ちなみに私が書いた記事史上最も長いです!目次使って不要なところは読み飛ばしくださいー。
材料の準備(私の環境)
さて、今回の材料ですが…
全て無料で作ります!!!!
※個人で楽しむ場合に限ります。
あ、PCは絶対有料で買ってくださいw
私の環境は以下で構築しています。この形、Linuxサーバで構築することが前提になっています。Windowsサーバで構築したいの!って方はタイトル見てもこの記事では記載していないのでごめんなさい。
っという訳で早速・・・
[PC]
・Mac book Air (Windows PCでも問題なく作れるレシピになっています)
[作成環境]
・VMWare Fusion (勿論、無料 ※商用利用する場合はお金入ります!)
・Rocky Linux(無料)
・Redmica(無料。ファーエンドテクノロジー様に感謝。)
作成環境に関してはこの後、しっかりと説明するので、何となく、こういう環境で作っているのだなぁー程度で…それではLet’s Cooking!!!
下拵え:ブラウザの準備
さて、では早速ですが、PCを立ち上げてください。立ち上がりましたか?
そうしたら、インターネットを開いてください。MacならSafari、WindowsならEdgeが標準ですね!でも、私はGoogle Chorome使います!
ここまでは大丈夫ですね?それでは材料その1!
材料その1の用意:VMWare Fusionを用意する。
まず、この項目ですが、Linuxサーバで構築する場合はいらないかも?です。オンプレサーバ(オンプレって何?って方は自前で持っているサーバって思ってください。)ではよくVMware vSphereって仮想サーバソフトを使っていることが多いと勝手に思っているのでこの記事書いています。
さて、VMWare Fusionって何よ?って感じですよね!VMWare Fusionって仮想マシーンを用意するものです。仮想マシーンって?難しくてわからなーい!ですよね!
要はPCの中にもう一個PCを用意するようなイメージでいてください!個人で楽しむならこれで十分です。その他にもVirtual Boxなんかもありますがお好みで…。
※Virtual Boxはこちら
https://www.oracle.com/jp/virtualization/technologies/virtualbox/downloads.html
説明はしません!
さ、早速ダウンロードしましょう!以下のページからダウンロード!
https://www.vmware.com/jp/products/fusion.html
え?ダウンロードできないじゃないかって?はい。ダウンロードするまでにここで厳しい道のりが存在しますねー。まずは会員登録が必要なのです!これがまた結構ややこしい…。ここのインストール手順を参考にして下さい!
いや、ホントここで心折れそうになりますよね。わかりますよー。さて、とりあえず、ダウンロードできました?ダウンロードしたらインストールです!もう、ここは何も気にせずYES YES YESです!(こだわりある人は調べてください。)
こんな画面が出たら成功です。おめでとうございます!
さて、同じ様な環境をWIndowsでも準備可能です。Windowsの場合は「VMWare Workstation Player」っというやつになります。こちらのインストール方法は結構色々な人が記事書いているのでそちらを参考ください。
さて、次の材料の準備にかかります!
材料その2の用意:Rocky Linuxを用意する
次の材料の準備はサクッと解決です。以下のページにアクセス!
そして、Downloadボタンをポチッと!
すると…
????
x86_64???ARM64???なんだそれ?
MInimal、DVD…いっぱいあるけどどれよ?
はい、ここで悩みますねー。これも個人の自由なのですが、わからないととことん心が折れそうになりますねー。
私は「x86_64」の「Minimal」を選びました!
もう、わからなかったら真似してください!個人で楽しむものなので!
材料その1とその2を混ぜ合わせる:
VMWare上にRockyLinuxを準備する。
さて、ここからがちょっとずつややこしくて悩ましくなってくるところが出てくると思います。そこを今回のレシピでは「簡単」にしていきます。
要はわからないときは真似してもらったら絶対に作れます。
独自で設定してもいいよ!ってところはちゃーんとコメントで説明します!
さ、では作っていきましょう!
ここに完成させるためのレシピがあります。
上記サイトでも詳しく書いてくれていますが、私の方でも説明します。
先ほどダウンロードしたRokcy Linuxのデータを用意します。きっと以下の様なファイル名になっていると思います!
★Rocky-8.4-x86_64-minimal.iso
※この8.4のところがバージョンです。私がダウンロードした時の最新はこれでした。少ししたら8.5が出てたよ…。
さて、この「iso」ファイル。ディスクイメージとかいうやつですね。CDの中のデータって感じで!
このイメージファイルを、先ほどのVMWareのところにドラック&ドロップ!
この「ディスクまたはイメージからインストール」ってところですね。ここに移動したら、あとは続けるとする事で、インストールが開始されます。
こんな感じですね。続けます。
え?どれ選んだらいいんだ?Rocky LinuxってCentOS系だからCentOS?64ビットって何?どうしたらいいの?
はい。私も迷いました。そこで先ほど紹介したサイトを見つけました!とりあえずは以下を選びます。
その他のLinux4.xカーネル(64ビット)
さて、続けます。
レガシーBIOSとUEFIって何?
とりあえず、「レガシーBIOS」でいいです。起動方法なんですよね。
はい。終了で終わり!っと、思ったそこのあなた!ちょっと待ってください!
このメモリだの何だの設定が重要なのです。「設定のカスタマイズ」を選びましょう。何もしないと重たい環境で作業を進めることになってしまいます。(Windowsの方もここは結構重要です。Windowsでの設定方法に関しては先ほど挙げていたサイトを参照ください。)
こんな画面が出てきますね!名前のところにはRedmineのVMイメージだと分かるように専用の名前をつけて保存するのをお勧めします。
するとこんな画面が出てきますね。設定を変更するところは2つです。
・プロセッサとメモリ
・ハードディスク(SCSI)
この二つは設定を変更してください。まずはプロセッサとメモリから…
このプロセッサのコア数ですがPCによりますが私は2個にしています。そして、メモリは「2048」です。これはメモリを2G用意するっていう形です。ここの設定は大きいといいですが、その分PCで他のことが出来にくくなります。「1024」か「2048」がいいと思います。
※PCの世界では「1024 = 1」となります。
一つ前の画面に戻る時は上の「すべてを表示」ボタンを押して戻ってください。
次はハードディスクですね。ここでは容量を決めます。
これも容量は好きずきですが、私は「50.00」にしています。ハードディスクの拡張は結構面倒なので最初にやっておくことをオススメします。
さて、これでVMの設定は終わり!いよいよ、RockyLinuxを起動します!
混ぜ合わせた材料を捏ねる:
Rocky Linuxを使うために必要な基本設定
さぁ、いよいよ起動です。
起動!
気にせずOK!
「Enter」ボタンを押してしばらく待ちます…
いよいよですね!まずは言語選択。もちろん「日本語」です。いや、英語がいいって人は「English」、中国語が…好きに選んでください!選んだら「続行」を選択。
こんな画面が出てきます。画面切れていますね…。
さて、ここでの設定は以下の部分をやれば終わりです。
・ユーザーの設定のrootパスワードの設定
・ユーザーの設定のユーザーの作成
・インストール先
rootって何だろう?っと思うかもですが、PCの管理者で一番権限がある人と思ってください。パスワードはご自由に…。
ユーザーの設定ではredmine用のユーザーを設定してください。後々のことを考えて「このユーザーを管理者にする」にチェックを入れておくのがいいかもです。
インストール先に関しては何も考えずに完了で問題ないはずです。
システム再起動です!
先ほど作ったユーザアカウントでログインします!
一番最初はネットワークにつなげるところからスタートです。これが繋がっていないと何も出来ません。何も考えず、以下のコマンドを入力してください。
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33
さて、これを入力すると以下の様な内容が表示されます。
viっていうコマンドでファイル編集を行う様になっています。
「i」を入力することで編集が可能になります。最後の行のONBOOTをnoからyesに編集して、「esc」を押して「wq」で編集完了です。この辺りのコマンドは「vi」の基本になりますのでお勉強してみてください。
さて、終わったら「reboot」コマンドで再起動します!
これでネットに繋がったはずなので、いよいよ本格的な作業です。
追記:時刻同期する。
時効の設定がおかしいことに気づいていたので追記。
ちなみに私は時刻がJSTになっていなかったので、まずは以下のコマンドでJSTに変更しました。
timedatectl set-timezone Asia/Tokyo
時刻同期に関しては、RockyLinuxではchronyを使うとのことなので以下のコマンドでインストール
yum -y install chrony
これでインストール完了したら/etc/chrony.confを編集してください。変更するのは最初のサーバの設定だけ。
iburstをつけることで起動時に自動的に設定されるようです。以下のコマンドで起動して時刻同期されます。
systemctl restart chronyd
時刻同期用のchronydが動作しているかどうかは以下のコマンドで確認。
systemctl status chronyd
以下のようにactiveになってたらOK。
下味をつける。:
Redmineを使うために必要なものを用意する。
基本的な作業は以下のサイトを参照しています。
このページの不親切なところ…Linuxのユーザ設定が書いていない!
ここが一番悩ましいところなのです。「root」権限でやるべきなのか、「一般ユーザ」権限でやるべきなのか。恐らくですが、基本的に上記コマンドの羅列を見る限り「root」権限で行っています。所々、「一般ユーザ」権限で行なっています。先ほどのネットワーク設定で「vi」の前に記載のあった「sudo」っていうのが「スーパーユーザ(su)」で「実行(do)」する。要するに「root」権限で実行することを意味しています。環境の設定とか全ユーザに関係あるなら「root」権限でやってしまうのがいいのでしょうが、この辺りは好みなのかなっと思ったり…。
個人で作るのにめんどくさいのでここから先は私は全て「root」権限でやりますw
ってことで、一番最初のログイン画面でユーザー名を「root」にして、パスワードはインストール時に設定したrootのパスワードを入力してログインしてください。ここから先はそれが前提です。
大事なのでもう一度・・・
この状態で作業進めています。
それでは先ほど紹介したサイトに書いている通りにSE Linuxを無効にします。個人利用だからですね。外部公開する場合はセキュリティ上必要になってくると思いますので、これはまた別途いつか記載したいかと思います。
SELINUXを無効化
さ、以下のコマンドを入力して編集してください!
vi /etc/sysconfig/selinux
さて、書き換え手順はネットワークの時と同じです。覚えていますか?今回はsudoではないのでそのままでできます。
書き換える内容は…
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
「SELINUX=enforcing」を「SELINUX=disabled」に変更しましょう。そして、再起動して「getenforce」コマンドを入力して結果確認しましょう。
そして、次はfirewallの設定!これはサイトにあるように以下の順でコマンド入力したらOKです。
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload
firewall-cmd --zone=public --list-services
確認結果が「dhcpv6-client http ssh」になっていたら、いよいよ次で色々インストールしていくことになります!
まずは何も気にせず、以下のコマンドを入力してください!
開発ツール(Cコンパイラ等)のインストール
yum -y groupinstall "Development Tools"
RubyとPassengerのビルドに必要なヘッダファイルなどのインストール
yum -y install openssl-devel readline-devel zlib-devel curl-devel libffi-devel
yum install --enablerepo=powertools libyaml-devel
いよいよRedmineに必要なデータベースを用意します!
材料3の用意:データベース=PostgreSQLの準備
それではRedmineで使うデータベースを用意します。今回Postgre SQLを選択します。理由は以下の理由。
将来的に上記プラグインを入れたいなぁーっと。
PostgreSQLとヘッダファイルのインストール
yum -y install postgresql-server postgresql-devel
Apacheとヘッダファイルのインストール
yum -y install httpd httpd-devel
ImageMagickとヘッダファイル・日本語フォントのインストール
yum -y install epel-release
yum config-manager --set-enabled powertools
yum -y install ImageMagick ImageMagick-devel
※ipa-pgothic-fontsだけはインストールできませんでした。調査中。
Rubyのインストール
ここでは安定版とされているバージョンの2.7.5をインストールします。
RedMica 1.2が対応しているのはRuby 2.4 から 2.7 までです。Ruby 3.0 には対応していません。
っと、あるので、今回は上記バージョンで対応します。コマンドは以下の通り。
curl -O https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.5.tar.gz
tar xvf ruby-2.7.5.tar.gz
cd ruby-2.7.5
./configure --disable-install-doc
make
make install
cd ..
「ruby -v」でバージョン確認しましょう。
ここの最後にgemのインストールです。
gem install bundler
これでRubyの準備は完了です。
PostgreSQLの設定
どんどんいきます。次はデータベースの用意。後々のことを考えてPostgreSQLを選択します。検索も早いです。
postgresql-setup initdb
RedmineからPostgreSQLに接続するための設定を追加します。
またしても、viです。
vi /var/lib/pgsql/data/pg_hba.conf
そして、以下のような形でredmine用の設定を追加してください。
※ # TYPE の行の下の2行を追加してください。
おそらくUSERは自由に決めていいと思いますが、わかりやすく真似しちゃってください。
PostgreSQLの起動および自動起動の設定
systemctl start postgresql.service
systemctl enable postgresql.service
PostgreSQLのディレクトリに移動
ディレクトリを移動します。
cd /var/lib/pgsql
Redmine用ユーザーの作成
ユーザを作ります。作るユーザは「redmine」です。これ、重要です。後で使います。変えた場合は、絶対に忘れないようにしてください。
※忘れなければ、どんなユーザでもいいはずです。
sudo -u postgres createuser -P redmine
パスワードを聞かれるので、任意に設定してください。
※ PostgreSQLのユーザー redmine には任意のパスワードを設定してください。このパスワードは後述のdatabase.ymlの設定で使用します。
必ず覚えておきましょう!
ユーザ名とパスワード!!!!!
大切です。
Redmine用データベースの作成
データベース作ります。
sudo -u postgres createdb -E UTF-8 -l ja_JP.UTF-8 -O redmine -T template0 redmine
最後に元のディレクトリに移動します。「cd」と打てば終わりです。
材料その4の用意:RedMicaのダウンロード
さぁ、いよいよRedMicaをダウンロードします。後少し…。まずは専用のディレクトリを作ります。
mkdir /var/lib/redmine
そして、そこに「git」と呼ばれるソフトを使って、RedMicaをダウンロードします。「stable-2.0」というのはこの記事書いている時の最新版です。
git clone -b stable-2.0 https://github.com/redmica/redmica.git /var/lib/redmine
データベースへの接続設定
参考サイトには以下の様に書かれていますね。
Redmineからデータベースへ接続するための設定を記述したファイルを作成します。
以下の内容でRedmineのインストールディレクトリ(例: /var/lib/redmine)以下に config/database.yml を作成してください。
はい、ここからもうやり方変えます。例は先ほど作ったディレクトリの通りなので、例ではなくてそのままですね。次のコマンドを真似してください。
cd /var/lib/redmine/config
cp database.yml.example database.yml
そして、「vi」で「database.yml」を編集しましょう。
passwordのところの*マークは任意のパスワードです。
さて、ここで使うのがPostgre SQLをRedmine用のユーザ名とパスワードです!
皆様覚えていますよね?
しっかりと忘れずに入力できました?入力できたら次にいきましょう!
設定ファイル config/configuration.yml の作成
参考サイトには以下で書かれていますね。
Redmineからメールサーバへ接続するための設定や日本語フォントファイルのパスを記述した設定ファイルを作成します。
以下の内容でRedmineのインストールディレクトリ以下に config/configuration.yml ファイルを作成してください。
私は自宅環境なのでメールサーバ設定は行なっていませんが、必要であれば対応してください。ちょっとここは今度私が設定することがあったら例を記載します。それまでは参考サイトを見て対応ください。
※ごめんなさい。ちゃんとやります。
gemパッケージのインストール
以下のコマンドをとりあえず打ちましょう。
cd ..
bundle install --without development test --path vendor/bundle
内容は参考サイトによると以下の通りです。
Rubyのパッケージ管理ツール「bundler」を使用してRedmineが依存するgemパッケージをインストールします。Redmineのインストールディレクトリで以下のコマンドを実行してください。
細かいことはいいんだよ!!!とりあえず、えいやでコマンドを入力!
材料その4に下味をつける:RedMicaの初期化
さぁ、いよいよ最後が近づいてきました。
セッション改ざん防止用秘密鍵の作成
下記コマンドを実行してください。
bundle exec rake generate_secret_token
この辺も気にせずえいや!
データベースのテーブル作成
config/database.yml で指定したデータベースにテーブルを作成します。
RAILS_ENV=production bundle exec rake db:migrate
全く気にせず…えいや!!!
最後の仕上げ:起動するための準備
いよいよ最後の仕上げ…ここまでの長い道のりお疲れ様です!
Passengerのインストール
以下のコマンドを入力してください。
gem install passenger -N
passenger-install-apache2-module --auto --languages ruby
passenger-install-apache2-module --snippet
Redmineにアクセスするための設定
以下のコマンドでファイルを作ってください。
vi /etc/httpd/conf.d/redmine.conf
内容は以下の通り。
あくまでも一例ですが、これで動きます。詳しい内容は個人で調べて見てください。LoadModuleのところはrubyのダウンロードしたフォルダを指定してください。ファイルがあるかないかは「ls」コマンドを使うといいですよ!
ファイルの確認方法は
ls /usr/local/lib/ruby/gems/2.7.0/gems/passenger-6.0.12/buildout/apache2
これで結果に「mod_passenger.so」があれば設定して大丈夫です。
# Redmine Data Access Setting
<Directory "/var/lib/redmine/public">
Require all granted
</Directory>
# Redmine Passenger Setting
LoadModule passengermodule /usr/local/lib/ruby/gems/2.7.0/gems/passenger-6.0.12/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/loacl/lib/ruby/gems/2.7.0/gems/passenger-6.0.12
PassengerDefaultRuby /usr/local/bin/ruby
</IfModule>
# Passenger Option Setting
PassengerMaxPoolSize 20
PassengerMaxInstancesPerApp 4
PassengerPoolIdleTime 864000
PasenngerStatThrottleRate 10
# End of File
Header always unset "X-Powered-By"
Header always unset "X-Runtime"
ファイルを作ったら、以下のコマンドを入力してください。
systemctl start httpd.service
systemctl enable httpd.service
最後の仕上げ:
Redmineにアクセスできるようにする。
やっと、最後の仕上げです!参考サイトの以下のパターンを実行します。
パターン1: webサーバをRedmine専用として使用
最後の「vi」ですよー。変更するファイルは以下の通りです。
vi /etc/httpd/conf/httpd.conf
このファイルの中の「DocumentRoot」を変更します。これはRedmicaをダウンロードしたフォルダを指定してください。
さぁ、最後にApacheを再起動です!
service httpd configtest
systemctl restart httpd.service
これで、「ip addr」と入力して、接続されているIPをブラウザに入力することでアクセスができます!
お疲れ様でした!これで完了です!
なかなかの道のり…皆様よく頑張ってくれたのでいい料理(Redmine)ができたと思います。
今後はプラグインの入れ方なんかももっと簡単にできる内容を記事にできたらと思います。
それでは皆様良いRedmineライフを!!!
※本記事に対して何かご意見ある方はコメント等頂けるとありがたいです。