主様 のすべての投稿

Rocky Linux 8/9 に AWS S3をマウントする。

概要

Rock Linux 8で保存しているデータのバックアップを取るために、S3へデータ転送を行うことにしました。
マウントしてファイルの転送は可能です。
転送速度の問題が主になりますが、課題が無い訳ではありません。
取り敢えず、マウントしてファイル共有出来るという感じです。

手順リスト

  • Step-1:S3の準備
  • Step-2:ユーザ準備
  • Step-3:awscliのインストール
  • Step-4:goofysのインストール
  • Step-5:検証

Step-1:S3の準備

AWSのS3バケットを作成します。

バケット名とリージョンを指定して作成します。
その他の設定については、特に影響は無いみたいです。
当初、「このバケットのブロックパブリックアクセス設定」にある「パブリックアクセスをすべて ブロック」になっているので気になったのですが、ユーザのアクセス権限が優先されるらしく、設定次第で実質的にはパブリックでのアクセスも可能なのでしょう。(恐いなぁ~と思う人は、嘘だと思って試してみると良いでしょう。)

Step-2:ユーザ準備

S3へアクセスするためにIAMでユーザを登録します。
既存のユーザでも構いません。
ユーザに対し以下を設定します。

アクセス権限:AmazonS3FullAccess
アクセス権限タブ→アクセス権限の追加でAmazonS3FullAccessを追加します。

認証情報タブ→アクセスキーの作成でアクセスキーを新規に作成します。
アクセスキーIDとシークレットアクセスキーが発行されます。
シークレットアクセスキーは、このタイミングだけしか表示することが出来ませんので大切に保管してください。
CSVファイルとしてダウンロードすることも可能なので、ダウンロードしておいても良いでしょう。

Step-3:awscliのインストール

多分、CentOS 8/Rocky Linux 8から有効だと思いますが、以下の方法でawscliをインストールします。

# dnf install epel-release
# dnf install awscli

これで行けるかと思ったのですが、タイミング悪くRocky 9ではdnfでインストールが出来ませんでした。
Pythonで対象モジュールのインストールが必要となるのですが、インストールしてもダメでした。単純なバグですが。。。面倒なので直接インストールする場合は下記を参考にインストールします。
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html#getting-started-install-instructions

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

インストールの確認は以下のコマンドです。

aws --version

awscliのインストールが完了したら、先に作成したS3へアクセスするための初期設定を行います。

# aws configure
AWS Access Key ID [None]: XXXXXXXXXXXXXX
AWS Secret Access Key [None]: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Default region name [None]:
Default output format [None]: json

AWSへのアクセスIDとシークレットキーを指定します。
出力フォーマットはjson形式を指定します。
出力形式を指定しないと、この後の動作が上手く動作しません。

Step-4:goofysのインストール

まずは、golangとfuseをインストールします。

# yum install golang fuse

次にgoofysをインストールするのですが、最新版は以下でインストールすることが出来ます。

# curl -L https://github.com/kahing/goofys/releases/latest/download/goofys   -o /usr/local/bin/goofys
# chmod 755 /usr/local/bin/goofys

以下のコマンドでインストール出来たことを確認します。

# goofys  --version

Step-5:マウントする。

まずはマウントポイントを作成します。

# mkdir /mnt/s3-strage

これで準備は完了です。

実際にマウントしてみます。
コマンド形式はmountコマンドと同じですね。

# goofys bucket_name /mnt/s3-strage/

課題

/etc/fstabへ静的マウントの方法が分かっていません。
出来そうなんだけど、検証中です。
TBD

ApacheでCGI設定を追加する。対象は、PythonとPHPだけど応用すればなんでもOK!

AWS上でRocky LinuxにApacheを入れて設定しようとしていたのですが、なんかいつもの設定と違うので設定を行いました。
毎回やるのが面倒なんですけど、記録が無いとまた忘れるので備忘録です。
とか言いながら、実際下手なサイトの内容を参考にしたら結局ダメダメで、自分のサイトの過去記事を参考にしたら出来た!ということで、再度記録し直そうと思ったわけです(^^ゞ

対象と目的

今回の対象は以下の通りです。

OS:Rocky Linux 9(あんまりOSバージョンは関係ないけど)
Apache:2.4.51(これもあんまり関係ないけど)

目的は、/var/www/html/の下でCGIが付けるようにしてしまいたいということです。
その際、PHPとかPythonもCGIとして使えるようにしてしまいたい。

Apacheの設定

Apacheの設定を追加します。
元ファイルを弄る方が良いのかも知れませんが、記録も残しておきたいなぁ~という後のことを考えた不精な考えですが、今回は設定ファイルを追加することにしました。

取り敢えず、設定ファイルを新規で作成していきます。

# vi /etc/httpd/conf.d/cgi_enabled.conf

ファイルに以下の内容を記載します。

# CGI Script Enabled settings
<Directory "/var/www/html/">
        Options +ExecCGI +FollowSymLinks
        AddHandler cgi-script .cgi .py .php
</Directory>

これだけです。
ちなみに、FollowSymLinksもついでに突っ込んでおきました。

念のため、シンタックスを確認します。

# httpd -t
Syntax OK

Apacheを再起動します。

# systemctl restart httpd

これで設定は反映されました。

コマンドによるSELinux対応の設定

当然、SELinuxを切るなんて真似は致しません!
面倒ではありますが、余程のことが無い限りSELinuxを切ることは避けています。セキュリティ確保するためなんです。

対象ディレクトリに対し、コンテキストを追加します。

# semanage fcontext -a -t httpd_sys_script_exec_t "/var/www/html(/.*)?"
# restorecon -R /var/www/html

以上です。

意外と簡単なんですけど、滅多にやらないことなので忘れてググるわけですわ。

そして、どこかのサイトの記載ミスやら間違った設定を叩いて「動かねぇ~( ゚Д゚)」って叫ぶわけよ。

で、自分でやって記録しておくと、いつかまた自分のサイトの記録がググったら出てくるんよ(^^♪

アフィリは全然儲かっていませんが、自分で書いたサイト記事は意外と役に立ってます。
備忘録万歳\(^o^)/

GeoServerにVector Tile Extensionをインストールします。

前回インストールしたGeoServerに、Vector Tile ExtensionをインストールしてVector Tileに対応させようと思います。

※全部英語で探すのが面倒なので、メモを残しているだけです。

GeoServerのバージョンを確認する。

GeoServerのバージョンを確認します。

メニューから「GeoServerについて」をクリックします。

こんな感じで表示されます。
「バージョン 2.22-SNAPSHOT」と表示されているのが判るかと思います。
ということで、この環境は2.22なんですね。
まあ、確認方法って普通にこれなんですけどね。
初めてだと気が付かないんですよね(^^ゞ

Vector Tile Extensionを追加

プラグインですね。
ダウンロードします。

下記URLからバージョンなどを元に探します。

https://build.geoserver.org/geoserver/

私の目的とする対象は下記にありました。
https://build.geoserver.org/geoserver/main/ext-latest/

ここで、「geoserver-2.22-SNAPSHOT-vectortiles-plugin.zip」をダウンロードします。

解凍して、以下のフォルダへインストールします。
/usr/share/geoserver/webapps/geoserver/WEB-INF/lib

ということがこちらに書かれています。

https://docs.geoserver.org/latest/en/user/extensions/vectortiles/install.html

GeoServerを再起動したら、Extensionが有効になっています。

# systemctl restart geoserver

再度ログインし直すことになりますが、これで終わりです。

他にもExtensionがたくさんあるみたいです。

https://docs.geoserver.org/latest/en/user/extensions/index.html

面白そうなのがあったら適当にインストールしてみると良さそうですね。

確認方法ですが。。。。
Data→Layers→<適当なレイヤ>→Tile Cachingを開いてみると、Tile cache configurationのThe Image Formatsに以下が追加されています。

これで確認になります。

Install GeoServer on Rocky Linux 9

GeoServerをRocky Linux 9へインストールしようと思います。

インストール自体は非常に簡単ですが、たまたま事故ったのでメモを残しておきます。

事故と言いましても、たまたま最初にインストールしようしたバージョンが上手く動かなかっただけです。
バージョンを変更すると動いたので、多分、リリースでミスっていたんでしょう。

では早速始めます。

最新版を探してダウンロード

最新版は下記のURLで探すことになります。

基本的にはこちらのサイトに置かれていると思います。
https://sourceforge.net/projects/geoserver/files/GeoServer/

今回、上記のサイトから最新版をダウンロードしてインストールしたのですが、運悪くダメだったので、以下のサイトで確認しました。
https://build.geoserver.org/geoserver

結論としては、以下が最新版になると思います。
https://build.geoserver.org/geoserver/main/geoserver-main-latest-bin.zip

①はコピーが置かれているのかな?
②は本家の最新版が置かれているみたいですね。
③は最新版に紐付けされた状態が置かれている様です。

③の最新版で問題がある場合には、①や②を探して少し前のバージョンなどを探してみるのも良さそうだと感じました。

適当なディレクトリへ移動してダウンロードします。
私はこんな感じでやっています。

# mkdir /home/Packages/GeoServer
# cd /home/Packages/GeoServer
# wget https://build.geoserver.org/geoserver/main/geoserver-main-latest-bin.zip

解凍とインストール

まずはインストール先ディレクトリを作成します。

# mkdir /usr/share/geoserver

作成したディレクトリへ先ほどダウンロードしたファイルを解凍します。

# unzip -d /usr/share/geoserver/ geoserver-main-latest-bin.zip

GeoServerを動かすためのユーザを作成します。

# useradd -m -U -d /usr/share/geoserver -s /bin/false geoserver

更に、解凍したディレクトリの所有権を変更します。

# chown -R geoserver:geoserver /usr/share/geoserver

ファイアウォールとサービスの設定

GeoServerを公開するために、ファイアウォールの設定を行います。

# firewall-cmd --add-port=8080/tcp --permanent
# firewall-cmd --reload

サービスを登録します。
まず、サービスファイルを作成します。

# vi /usr/lib/systemd/system/geoserver.service

中身はこんな感じです。

# more /usr/lib/systemd/system/geoserver.service
Description=GeoServer Service
After=network.target

[Service]
Type=simple

User=geoserver
Group=geoserver

Environment="GEOSERVER_HOME=/usr/share/geoserver"

ExecStart=/usr/share/geoserver/bin/startup.sh
ExecStop=/usr/share/geoserver/bin/shutdown.sh

[Install]
WantedBy=multi-user.target

GeoServerを起動

GeoServerを起動します。

# systemctl daemon-reload
# systemctl enable --now geoserver.service
もしくは。。。
# systemctl start geoserver.service
# systemctl enable geoserver.service

こんな感じですね。

動作確認

以下のURLへアクセスしてみましょう。
http://<ドメイン>:8080/geoserver
※<ドメイン>には対象サーバのドメインを指定してください。

こんな感じの画面が表示されれば、GeoServerは正常に動作しています。

デフォルトのログインIDとパスワードは以下の通りです。
ログインID:admin
パスワード:geoserver

公開された状態だと、デフォルトのIDとパスワードは危険なので、早々に変更されると良いでしょう。

基本的なインストールは以上です。
Geo Lifeをお楽しみください。

次回は、GeoServerをVector Tileに対応させます。

CentOS 9にpostgreSQL 14を入れる!postGIS 3.2も入れる!

以前に自分でインストールしたやり方を参考に、インストールを試みようとしてみたのですが、やはり少し変わったパッケージをLinuxへインストールするには何かが引っ掛かります(^^;

ということで、以下の環境にインストールを行っていきます。

OS:Rocky Linux 9
インストール対象:postgreSQL 14 + postGIS 3.2

PostgreSQL インストール

前回学んだ本家サイトからインストール方法を確認します。

https://www.postgresql.org/download/linux/redhat/

こちらのサイトにあるインストール方法を真似するだけです。

以下に提示されたコマンドを記します。

sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo dnf -qy module disable postgresql
sudo dnf install -y postgresql14-server
sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
sudo systemctl enable postgresql-14
sudo systemctl start postgresql-14

順番に説明しておきます。

リポジトリを追加

リポジトリを追加します。

dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

既存のPostgreSQLを無効にする。

インストールしていない時には不要の作業となります。
過去にPostgreSQLをインストールしている場合のも必要な作業になります。

ある意味、トランザクション対象のパッケージを維持したまま、本体だけを無効にするという感じなんでしょうかね。
#違うところで参考になりそうです。

dnf -qy module disable postgresql

PostgreSQLをインストール

PostgreSQLをインストールします。

dnf install -y postgresql14-server

インストールはこれで完了です。

起動設定

自動で起動するように設定します。

/usr/pgsql-14/bin/postgresql-14-setup initdb
systemctl enable postgresql-14
systemctl start postgresql-14

インストールとPostgreSQLの起動は完了しました。

PostGIS インストール

ここからが課題のPostGISインストール作業です。

まず、インストールしたPostgreSQLのバージョンに対応するPostGISのバージョンを下記のサイトで確認します。

https://trac.osgeo.org/postgis/wiki/UsersWikiPostgreSQLPostGIS

対応表からインストール対象のPostGISを確認します。
今回は、PostGIS 3.2を選択することにしました。

システムのリポジトリに含まれるPostGISのバージョンを確認します。

dnf list | grep -i postgis
postgis32_13.x86_64                                       3.2.2-1.rhel9                                     pgdg13
postgis32_13-client.x86_64                                3.2.2-1.rhel9                                     pgdg13
postgis32_13-devel.x86_64                                 3.2.2-1.rhel9                                     pgdg13
postgis32_13-docs.x86_64                                  3.2.2-1.rhel9                                     pgdg13
postgis32_13-gui.x86_64                                   3.2.2-1.rhel9                                     pgdg13
postgis32_13-utils.x86_64                                 3.2.2-1.rhel9                                     pgdg13
postgis32_14.x86_64                                       3.2.2-1.rhel9                                     pgdg14
postgis32_14-client.x86_64                                3.2.2-1.rhel9                                     pgdg14
postgis32_14-devel.x86_64                                 3.2.2-1.rhel9                                     pgdg14
postgis32_14-docs.x86_64                                  3.2.2-1.rhel9                                     pgdg14
postgis32_14-gui.x86_64                                   3.2.2-1.rhel9                                     pgdg14
postgis32_14-utils.x86_64                                 3.2.2-1.rhel9                                     pgdg14

今回インストールするバージョンは、postgis32_14であることが確認出来ますので、以下のコマンドでインストールを試みます。

dnf install postgis32_14

トランザクション関連のエラーが大量。。。ということで、問題の解決を行います。

dnf install epel-release
dnf --enablerepo=crb install flexiblas-netlib64
dnf install postgis32_14

これでインストール出来ました!

環境によって若干の違いがあるかと思いますが、参考になるかな?

以下のサイトが役に立ちました。
https://rockylinux.pkgs.org/9/rockylinux-crb-aarch64/flexiblas-netlib64-3.0.4-8.el9.aarch64.rpm.html

深くまで見ないといけないので、面倒ですが。。。

Rocky Linux 8.6 へ Redmine 5.0をインストールする。

はじめに

Rocky Linux 8.6(8.5で良いのですが。。。)へRedmine 5.0をインストールしている情報が見当たらなかったので、トライしてみることにしました。
入手のし易さからすると、Redmine 4.xをインストールする感じだったのですが、Rubyの2.7は通常メンテナンスフェーズを終了している様なので、Ruby 3.0以降を導入するのがベターと考えました。
更には、Ruby 3.0以降をサポートしているのは、Redmine 5.0以降という情報もあり、やっぱりこの選択肢を選ぶことになるな・・・という感じです。

まあ、色々と問題は出てくると思いますが、取り敢えず進めて行こうと思います。

彼是5年程前にRedmineをインストールした記録があります。
https://tech.godpress.net/?p=610
インターネット上で確認出来る資料と、過去を思い起こしながらインストールを進めたいと思います。

環境確認

今回インストールを行うサーバは、既に別の作業を進めていたこともあり、以下の構成が既に構成されています。

OS:Rocky Linux 8.6
DB:Mariadb 10.3

epel-releaseリポジトリはインストール済みでした。

一応、コマンドで確認しておきます。
# mysql –version
mysql Ver 15.1 Distrib 10.3.32-MariaDB, for Linux (x86_64) using readline 5.1

他に必要そうなものは入っていなかったみたいです。

インストール

基本的なパッケージのインストール

データベースのインストール方法については割愛します。

それでは必要なパッケージ類を問答無用でインストールしてしまいます。

# dnf install epel-release
# dnf groupinstall "Development Tools"
# dnf install openssl-devel readline-devel zlib-devel curl-devel
# dnf install --enablerepo=powertools libyaml-devel
# dnf install httpd httpd-devel
# dnf install --enablerepo=powertools ImageMagick ImageMagick-devel

ここまでは順調でしたが。。。。フォントのインストールが上手く行きません!?

# dnf install --enablerepo=powertools ipa-pgothic-fonts

色々探してみて、こんな感じでインストールします。

# rpm -Uvh https://pkgs.dyn.su/el8/base/x86_64/ipa-pgothic-fonts-003.03-14.el8.noarch.rpm

Rubyインストール(自己責任で!)
#あまりここの部分は信用しないように(^^;

さて、ここからは私の勘です!間違っていたらご容赦ください。
ちなみに、私はVM上に環境構築を行っています。
自信もないので、知れっとスナップショットを作成して、Rubyインストール前の環境を保存しておきます。

何故この様なことをするかと言いますと、他のサイトで記載されている方法はrpmを直接インストールする方法が取られています。
私は、パッケージのバージョン管理を極力省くためにdnfでのインストールを行う様にしています。(好みの問題ですね)
rpmでインストールした場合でもdnfでインストールの確認などを行えることは重々承知しているのですが、リポジトリとして管理されているかというと、そうではないでしょう(想像)。
ということは、更新があったことを知る術が無い。
後々の構成管理に矛盾が生じてしまうのではないか?

ということで、出来るだけdnfでインストールを行いたいと思っています。

今回、Rubyのサポート状況などを気にしていることもあり、出来れば3.0以降を導入したい訳ですが、果たして3.0以降を素直にインストールさせてくれるでしょうか?

# dnf list | grep -i ruby
kf5-kross-ruby.x86_64                                             21.08.3-1.el8                                             epel
libselinux-ruby.x86_64                                            2.9-5.el8                                                 appstream
mlt-ruby.x86_64                                                   6.24.0-4.el8                                              epel
munin-plugins-ruby.noarch                                         2.0.66-1.el8                                              epel
remctl-ruby.x86_64                                                3.17-4.el8                                                epel
ruby.i686                                                         2.5.9-109.module+el8.5.0+740+b85cbe0d                     appstream

結論としてRubyのバージョンは2.5.9と無残にもダメでした。
何かリポジトリを追加して・・・とか探していたのですが、これです!

# dnf module list ruby
メタデータの期限切れの最終確認: 1:57:02 時間前の 2022年06月04日 16時07分16秒 に実施しました。
Rocky Linux 8 - AppStream
Name                            Stream                             Profiles                              Summary
ruby                            2.5 [d]                            common [d]                            An interpreter of object-oriented scripting language
ruby                            2.6                                common [d]                            An interpreter of object-oriented scripting language
ruby                            2.7                                common [d]                            An interpreter of object-oriented scripting language
ruby                            3.0                                common [d]                            An interpreter of object-oriented scripting language

ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled

インストール対象のモジュール一覧を確認出来ます。
2.5がデフォルトになっている様ですが、3.0の存在も確認出来ました!

では!

# dnf module enable ruby:3.0
メタデータの期限切れの最終確認: 2:01:26 時間前の 2022年06月04日 16時07分16秒 に実施しました。
依存関係が解決しました。
=======================================================================================================================================================================================
 パッケージ                                  アーキテクチャー                           バージョン                                   リポジトリー                                サイズ
=======================================================================================================================================================================================
モジュールストリームの有効化中:
 ruby                                                                                   3.0

トランザクションの概要
=======================================================================================================================================================================================

これでよろしいですか? [y/N]: y
完了しました!

再度確認してみると。。。

# dnf module list ruby
メタデータの期限切れの最終確認: 2:01:37 時間前の 2022年06月04日 16時07分16秒 に実施しました。
Rocky Linux 8 - AppStream
Name                            Stream                             Profiles                              Summary
ruby                            2.5 [d]                            common [d]                            An interpreter of object-oriented scripting language
ruby                            2.6                                common [d]                            An interpreter of object-oriented scripting language
ruby                            2.7                                common [d]                            An interpreter of object-oriented scripting language
ruby                            3.0 [e]                            common [d]                            An interpreter of object-oriented scripting language

ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled

ということで、3.0がenableになりましたね。
これで通常と同じようにインストールを行うと3.0をインストールすることが出来ます。

# dnf install ruby
メタデータの期限切れの最終確認: 2:01:50 時間前の 2022年06月04日 16時07分16秒 に実施しました。
依存関係が解決しました。
=======================================================================================================================================================================================
 パッケージ                                  アーキテクチャー                バージョン                                                       リポジトリー                       サイズ
=======================================================================================================================================================================================
インストール:
 ruby                                        x86_64                          3.0.2-140.module+el8.5.0+668+665814fa                            appstream                           88 k
依存関係のインストール:
 ruby-libs                                   x86_64                          3.0.2-140.module+el8.5.0+668+665814fa                            appstream                          3.2 M
 rubygem-json                                x86_64                          2.5.1-140.module+el8.5.0+668+665814fa                            appstream                           99 k
 rubygem-psych                               x86_64                          3.3.0-140.module+el8.5.0+668+665814fa                            appstream                           98 k
弱い依存関係のインストール:
 ruby-default-gems                           noarch                          3.0.2-140.module+el8.5.0+668+665814fa                            appstream                           79 k
 rubygem-bigdecimal                          x86_64                          3.0.0-140.module+el8.5.0+668+665814fa                            appstream                          101 k
 rubygem-bundler                             noarch                          2.2.22-140.module+el8.5.0+668+665814fa                           appstream                          443 k
 rubygem-io-console                          x86_64                          0.5.7-140.module+el8.5.0+668+665814fa                            appstream                           72 k
 rubygem-rdoc                                noarch                          6.3.1-140.module+el8.5.0+668+665814fa                            appstream                          458 k
 rubygems                                    noarch                          3.2.22-140.module+el8.5.0+668+665814fa                           appstream                          318 k

トランザクションの概要
=======================================================================================================================================================================================
インストール  10 パッケージ

ダウンロードサイズの合計: 5.0 M
インストール後のサイズ: 16 M
これでよろしいですか? [y/N]: y

いや~知らんかった(^^ゞ
まだまだ修行が足りませんねw

実はここで悩みました。
他のサイトでインストールしている手順と異なるので、どこまで進んだのか解らなくなってしまいました(^^ゞ
取り敢えず、Rubyがインストールされたことを確認します。

# ruby -v
ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux]

おぉ~Ruby 3.0.2がインストールされています!
多分、この辺りから再開かな?ということで、bundlerをインストールしてみます。

# gem install bundler
Fetching bundler-2.3.15.gem
Successfully installed bundler-2.3.15
Parsing documentation for bundler-2.3.15
Installing ri documentation for bundler-2.3.15
Done installing documentation for bundler after 0 seconds
1 gem installed

なんだろう。。。もやもやする。。。

でも、取り敢えず進めます。

データベースの設定

データベース(Mariadb)にRedmine用のユーザとデータベースを作成します。

# mysql -u root -p
MariaDB [(none)]> CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'XXXX';
MariaDB [(none)]> GRANT ALL ON *.* TO 'redmine'@'localhost' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> CREATE DATABASE redmine CHARACTER SET utf8mb4;
MariaDB [(none)]> exit
Bye

リアルタイムOS上でmsやμs単位でプログラムを組んできた人間にとって、データベースなんてプログラムの足を引っ張る近寄るべからずな存在であり、使えたら良いのにな~という夢の存在でもありましたが、やはり苦手ですw

Redmine本体のインストール

ここまでは全て準備作業でした。
やっとここからRedmineの本体をインストールします。
なんかお手軽インストールの方法もあるようなのですが、最新版ではまだサポートされている気配が無かったので、地道にインストール作業を続けています。
大抵、こういう時は何かの罠に嵌るんですよねぇ~
Linuxのインストールでは毎度のことですが、予定が狂う(TT)

泣き言はやってから!ということで進めます。
以前はSVNを使ってインストールを行いましたが、それも良いのですが、良かったのかどうなのか?というところもありますので、今回はダウンロードで素直に挑んでみたいと思います。

適当なディレクトリへ移動して、パッケージをダウンロードします。
本家からダウロードします。
こちらで対象を確認します。

# cd /home/pkg/redmine
# curl -O https://www.redmine.org/releases/redmine-5.0.1.tar.gz
# tar zxvf redmine-5.0.1.tar.gz
# cd /var/lib
# ln -s /home/pkg/redmine/redmine-5.0.1 redmine
# cd redmine
# bundle install --without development test

ここでエラーが発生しました。
どうも幾つかのパッケージがインストールされていなかったようです。

# dnf install ruby-devel
# dnf list | grep mariadb-devel

多分、これで実行できるはずですが、もしそれでも上手く行かない場合は以下も試してみてください。(多分、関係ないと思いますが・・・)

# dnf install rubygem-mysql2.x86_64

再度実行します。

# bundle install --without development test
<省略>
undle complete! 42 Gemfile dependencies, 73 gems now installed.
Gems in the groups 'development' and 'test' were not installed.
Bundled gems are installed into `./vendor/bundle`
#

こんな感じで上手くインストール出来た様です。

セッションストア秘密鍵の生成を行います。

# bundle exec rake generate_secret_token

データベースへ接続するための設定を行います。

config/database.example.ymlをコピーしてconfig/database.ymlを作成します。
以下の示す様に、必要な項目を変更します。

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: "my_password"

以下のコマンドを実行すると、データベース上にテーブルを作成してくれます。

RAILS_ENV=production bundle exec rake db:migrate

更に以下のコマンドを実行してデフォルトデータをデータベースへ登録します。

# RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data


Default configuration data loaded.

次に、passengerをインストールします。

# gem install passenger
# passenger-install-apache2-module –auto –languages ruby

しばらく時間が掛かります。
10分以上掛かったと思います。
次に、このコマンドで設定内容を確認します。

passenger-install-apache2-module –snippet

ここで表示される内容を記録しておきます。
その上で、Apacheの設定を追加します。

# vi /etc/httpd.conf/conf.d/redmine.conf
<Directory "/var/lib/redmine/public">
 Require all granted 
</Directory> 
# Passengerの基本設定。 
# passenger-install-apache2-module --snippet で表示された設定を記述。 
# 環境によって設定値が異なるため以下の3行はそのまま転記せず、必ず 
# passenger-install-apache2-module --snippet で表示されたものを使用すること。 
# 

LoadModule passenger_module /usr/local/lib/ruby/gems/2.2.0/gems/passenger-5.1.2/ buildout/apache2/mod_passenger.so 
<IfModule mod_passenger.c>
 PassengerRoot /usr/local/lib/ruby/gems/2.2.0/gems/passenger-5.1.2
 PassengerDefaultRuby /usr/local/bin/ruby 
</IfModule> 
# Passengerが追加するHTTPヘッダを削除するための設定(任意)。 
# Header always unset "X-Powered-By" Header always unset "X-Runtime" 
# 必要に応じてPassengerのチューニングのための設定を追加(任意)。 
# 詳しくはPhusion Passenger users guide(https://www.phusionpassenger.com/library /config/apache/reference/)参照。 
PassengerMaxPoolSize 20 
PassengerMaxInstancesPerApp 4 
PassengerPoolIdleTime 864000 
PassengerHighPerformance on 
PassengerStatThrottleRate 10 
PassengerSpawnMethod smart 
PassengerFriendlyErrorPages off
# Passengerのログを別で出力する時はこんな感じです。記載しなくてもOKです。
# PassengerLogFile /var/log/httpd/passenger_error.log

RackBaseURI /redmine      <== これは後で追加の理由が解ります。

概ねこんな感じでOKですが、サイトによって記載が異なるので参考までに留めてください。

ディレクトリの権限を変更します。

chown -R apache:apache /var/lib/redmine

ここで、Aapcheを再起動?起動させればOKです。
念のために、フルセットで行っておきますね。

# systemctl stop httpd
# systemctl start httpd
# systemctl enable httpd

これだけやっておけばApacheの起動についてはOKでしょう!

ここで、このシステムをRedmineだけに使おうと思っていないので、少し変更してしまいます。

# cd /var/www/html
# ln -s /var/lib/redmine/public redmine

上記で既に記載していますが、/etc/httpd/conf.d/redmine.confに以下の設定を追加します。これでアクセス可能となります。

RackBaseURI /redmine
http://MyDomain/redmineへアクセスするとRedmineの画面が表示されるはず。。。だったのですが(^^ゞ
エラーが出たり色々ダメですw

他の環境ではここまでで行けるはずなのですが、私の環境では上手く行きませんでした。
こんな感じでエラーが出力されていました。

# tail -f passenger_error.log
[ N 2022-06-05 23:14:33.6804 10996/T8 Ser/Server.h:558 ]: [ServerThr.1] Shutdown finished
[ N 2022-06-05 23:14:33.6805 10996/Td Ser/Server.h:902 ]: [ApiServer] Freed 0 spare client objects
[ N 2022-06-05 23:14:33.6805 10996/Td Ser/Server.h:558 ]: [ApiServer] Shutdown finished
[ N 2022-06-05 23:14:33.7380 11018/T1 age/Wat/WatchdogMain.cpp:1373 ]: Starting Passenger watchdog...
[ N 2022-06-05 23:14:33.7587 11021/T1 age/Cor/CoreMain.cpp:1340 ]: Starting Passenger core...
[ N 2022-06-05 23:14:33.7588 11021/T1 age/Cor/CoreMain.cpp:256 ]: Passenger core running in multi-application mode.
[ N 2022-06-05 23:14:33.7662 11021/T1 age/Cor/CoreMain.cpp:1015 ]: Passenger core online, PID 11021
[ N 2022-06-05 23:14:34.7755 10996/T1 age/Cor/TelemetryCollector.h:531 ]: Message from Phusion: End time can not be before or equal to begin time
[ N 2022-06-05 23:14:34.8075 10996/T1 age/Cor/CoreMain.cpp:1325 ]: Passenger core shutdown finished
[ N 2022-06-05 23:14:36.8751 11021/T5 age/Cor/SecurityUpdateChecker.h:519 ]: Security update check: no update found (next check in 24 hours)

回避方法を記載しておきます。

# gem update strscan

どうもstrscanが古い様です。
新規にインストールしているところなのに不自然ではありますが、アップデートすることで問題の解決に至りました。不思議です。

再度アクセスすると画面が表示出来る様になりました。

このアップデートをする前は以下のコマンドを実行してブラウザでアクセスすると動作を確認出来ました。

bundle exec rails server -e production

こちらも、他のサイトでは以下の様になっていましたが、上記で動作を確認することが出来ました。

bundle exec rails server webrick -e production

自動でwebrickを認識する様で、必要ないみたいです。

サイトにアクセスしてからのID/パスワードはデフォルトで以下になります。

ID:admin
パスワード:admin

結構嵌りました。
もうしばらくすれば、安定したインストールを方法を記載したサイトが出てくると思います。
こちらのサイトは参考までに留めるのが良いかも知れませんね。

Mattermost 初期設定

はじめに

前回、Mattermostのインストールを完了しました。
その後、初期設定を行い使用できる状態まで進める過程を記していません。
ログイン後の各種設定について記載していこうと思います。

日本語化

最初に日本語化を行います。

メニュー画面の左上のメニューアイコンをクリックします。

メニュー画面

System Consoleを選択します。

Localizationを選択します。

各項目で「日本語」を設定して「Save」します。

Channel画面に戻って、次に画面右上の「⚙」アンコンをクリックしてアカウント設定を行います。

Display→Languageで「日本語」を選択し「Save」します。

これで日本語化が完了します。

メール設定

画面上部に「プレビューモード: 電子メール通知は設定されていません。」の記載があることに気が付いていると思います。
初期設定でも、メールでユーザを追加するとかアナウンスが流れるわりに、メールの設定が行われていないということに違和感を覚える方もいらっしゃるのではないでしょうか?
インストールガイドを眺めてみても、特にインストールの最中にメールの設定について記載されている項目はありません。
インストール完了だけではメールが使える状態になっていないということですね。

ユーザを招待する時やパスワードを忘れた時など、メールの通知が出来ないと色々と不便でなりません。
メールの設定は必ずやっておきましょう!

画面左上のメニューアイコンから「システムコンソール(System Console)」から作業を進めます。

メニュー画面

システムコンソールから「SMTP」を指定すると以下の画面が表示される。

SMTP設定

各設定項目については、自身の環境に合わせて設定する。
画面の少し下に「接続をテストする」というボタンがあり、設定を確認することができるようになっているのだが、ちょっと癖がある。

この画面には落とし穴がある。
「接続をテストする」ことが出来るのは、この画面の「保存する」を行ってから接続のテストが可能になる。
つまり、「保存する」を行わないで「接続をテストする」と、保存前の状態でテストされる。

これで随分時間を消耗してしまった(TT)

通知設定

システムコンソール→サイト設定→通知で通知の設定を行います。

通知設定(1)
通知設定(2)

電子メール通知を有効にして、メールによる通知を有効にします。
画面の指示に従って設定を行うとともに、自身の環境に合わせて設定を行います。

Rocky Linux 8.5 へMattermostをインストールする。

はじめに

久しぶりにMattermostをインストールしようと思ったら色々と変わっていたので、インストール方法をメモることにした。

対象環境

OS:Rocky Linux 8.5
データベース:mariadb 10.3

準備

Rocky Linuxは基本的にデフォルト状態でインストールし、以下の作業を実施済み。

# dnf update
# dnf install epel-release
# dnf install elrepo-release

mariadb インストール

mariadb をインストールします。
ザクっとコマンドだけ以下に記します。
細かいことは適当にやっちゃいます。

# dnf install mariadb-server
# systemctl start mariadb
# systemctl enable mariadb
# mysql_secure_installation

DB作成

こちらもザクっと書いちゃいます。

# mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 17
Server version: 10.3.32-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create user 'mmuser'@'%' identified by 'xxxxxx';
MariaDB [(none)]> create database mattermost;
MariaDB [(none)]> grant all privileges on mattermost.* to  'mmuser'@'%';

ザクっと行き過ぎ?
取り敢えず、ユーザ作って、データベース作って、アクセス許可設定してって感じです。

Mattermost ダウンロード

なんでこのメモ。。。記事を書き始めたかというと、コレなんです!
ダウンロードが変わっちゃっててよく分んなくなってた。

やりたいことは、インストールモジュールをダウンロードしたいのですが、どこにあるか分からなかった。
取り敢えず、ダウンロードするフォルダを準備します。
どこか適当な作業用のフォルダを作成して、そのフォルダへ移動しておきます。

準備が出来たので、ダウンロード対象を探します。
まずはブラウザこのURLを参照する。
https://mattermost.com/deploy/

https://mattermost.com/deploy/

下の方にスクロールすると、こんな画面があるので、「Binary」タブを選択する。

Docker用

すると、こんな画面になる。

Binary Download

URLをコピって、以下のコマンドを実行する。

# wget https://releases.mattermost.com/6.7.0/mattermost-6.7.0-linux-amd64.tar.gz

※バージョン番号はダウンロードするタイミングで変わっていると思われるので注意してください。

せっかくなので、先のホームページで「Installation Guide >>」とその後の手順が示されているっぽいので覗いてみます。

インストールガイド

どっかの(ここも含めて)サイトの内容を信じるよりも、インストールガイドに従って作業を進める方が確実ですね♪

Mattermost インストール

インストールガイドに書かれている内容を素直に信じて作業を進めます!
私のサイトに書いている内容は、既に古い可能性があるので、見比べながら作業を進める方が良いでしょう。
また、私はrootユーザで作業を進めているので、sudoコマンドを省略しています。

さて、進めます。
まずは先程ダウンロードしたファイルを解凍します。

# tar -xvzf mattermost*.gz

本体を移動します。

# mv mattermost /opt

ストレージディレクトリを作成します。

# mkdir /opt/mattermost/data

※ストレージディレクトリには、ユーザーがMattermostに投稿するすべてのファイルと画像が含まれるため、アップロードされるファイルと画像の予想数を保持するのに十分な大きさのドライブがあることを確認する必要があります。

いざとなったら、シンボリックリンクで余裕のあるディレクトリへ保存することも考えた方が良いかも知れませんね。

ここまでで本体のインストールは一旦終わったようです。

Mattermost セッティング

mattermostのサービスを実行するために、ユーザとグループを作成し所有権と権限を設定します。

# useradd --system --user-group mattermost
# chown -R mattermost:mattermost /opt/mattermost
# chmod -R g+w /opt/mattermost

よく失敗する私は、設定ファイルを変更する前にバックアップを作成します。

# cd /opt/mattermost/config/
# cp -p config.json config.json_org

設定ファイルを弄って動かなくなって、後戻りできなくなってしまうことがよくあるのでやっているだけで、自信のある人はそんなことしないで進んでください。

設定ファイルを編集します。

# vi config.json

滅茶苦茶余談ですが。。。。jqというjsonを扱うコマンドがあります。
jsonファイルをコマンドライン上で確認や編集を行う際にちょっと便利かな?と思っています。まだ使ったことは無いのですが、気になるコマンドです。
下記に本家サイトがあります。
https://stedolan.github.io/jq/
更新が滞っているみたいに見えるのがちょっと気になりますが。。。ご参考までに。

変更内容は以下の通りです。

  • SqlSetteings -> DriverName を”mysql”に変更
  • SqlSetteings -> DataSource を “mmuser:<mmuser-password>@tcp(<host-name-or-IP>:3306)/mattermost?charset=utf8mb4,utf8&writeTimeout=30s"

<mmuser-password>はDBユーザ作成時に設定したパスワードを指定してください。
<host-name-or-IP>は「localhost」でも大丈夫です。
ちょっとコメントします。
DataSourceの最後の方にある「utf8&writeTimeout=30s」について、「&」の文字はmattermostを起動すると勝手に「\u0026」に置き換わります。
他のサイトで異る記載があり、それも有効だとは思うのですが、本家のインストールガイドに従ってやってみても良いと思われます。

実際のサンプルを以下に記します。

    "SqlSettings": {
        "DriverName": "mysql",
        "DataSource": "mmuser:xxxxxx@tcp(localhost:3306)/mattermost?charset=utf8mb4,utf8\u0026writeTimeout=30s",

起動確認

本番起動を行う前に、正しく起動できるか確認してみます。

# cd /opt/mattermost
# sudo -u mattermost bin/mattermost

ごちゃごちゃとログが出力されます。
強制終了が発生しなければ一応動いているみたいです。

環境が許すのであれば、firewalldをストップさせて確認しようと思います。

# systemctl stop firewalld

この後、以下のURLをブラウザで起動して確認してみます。

http://localhost:8065/

サインアップ用の画面が表示されればなんとなく安心できます。
画面が表示されない場合は、「http」になっているか確認してみてください。
それでもダメな時は、何か間違っている可能性があります。がんばれ!

firewalldの設定

標準の環境だと、当然firewalldが動作していて、対象のポートはアクセスできません。
解放する必要がありますね。
解放せずとも、アクセス出来るようにしなければなりません。
後でReverseProxy使ったりして、通常のHTTP(80)ポートとかHTTPS(SSL/TLS:443)とかでアクセスしたくなりますが、それは後程。。。

取り敢えず、一旦は8065ポートを解放してアクセスできることを確認します。
基本が出来ていないとトラブルの原因が何か分からなくなりますからw

先程、firewallldを止めてしまった場合には以下のコマンドで再起動しておきます。

# systemctl start firewalld

以下のコマンドで8065ポートを解放します。

# firewall-cmd --add-port=8065/tcp --permanent 
# firewall-cmd --reload 

再度ブラウザでアクセスすると正常にアクセスできることを確認できるとおもいます。

systemdによる自動起動設定

「起動確認」で起動したmattermostはCTRL+Cで終了させます。

systemdによる自動起動の設定を行います。

まず、serviceファイルを作成します。

# touch /lib/systemd/system/mattermost.service
# cd /lib/systemd/system/
# vi mattermost.service

記載内容は以下の通りです。

[Unit]
Description=Mattermost
After=network.target
After=mariadb.service
BindsTo=mariadb.service
[Service]
Type=notify
ExecStart=/opt/mattermost/bin/mattermost
TimeoutStartSec=3600
KillMode=mixed
Restart=always
RestartSec=10
WorkingDirectory=/opt/mattermost
User=mattermost
Group=mattermost
LimitNOFILE=49152
[Install]
WantedBy=multi-user.target

[Unit]セクションのAfterとBindsToの項目をmariadb.serviceに変更しています。
インストールガイドでmysql用の記載として、それぞれをmysql.serviceにしていますが、それでも問題ありません。

それでは起動してみましょう!

# systemctl daemon-reload
# systemctl start mattermost.service
Job for mattermost.service failed because the control process exited with error code.
See "systemctl status mattermost.service" and "journalctl -xe" for details.

いきなり失敗しました!
多分、ここで躓きます(TT)
内容を確認します。

# journalctl -xe
-- Defined-By: systemd
-- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit mattermost.service has failed.
-- 
-- The result is failed.
 5月 28 06:07:39 localhost.localdomain setroubleshoot[14220]: AnalyzeThread.run(): Cancel pending alarm
 5月 28 06:07:39 localhost.localdomain setroubleshoot[14220]: SELinux is preventing /usr/lib/systemd/systemd from execute access on t>
 5月 28 06:07:39 localhost.localdomain setroubleshoot[14220]: SELinux is preventing /usr/lib/systemd/systemd from execute access on t>
                                                               
                                                               *****  Plugin catchall (100. confidence) suggests   ******************>
                                                               
                                                               If you believe that systemd should be allowed execute access on the ma>
                                                               Then you should report this as a bug.
                                                               You can generate a local policy module to allow this access.
                                                               Do
                                                               allow this access for now by executing:
                                                               # ausearch -c '(ttermost)' --raw | audit2allow -M my-ttermost
                                                               # semodule -X 300 -i my-ttermost.pp
                                                               
 5月 28 06:07:39 localhost.localdomain setroubleshoot[14220]: AnalyzeThread.run(): Set alarm timeout to 10
 5月 28 06:07:42 localhost.localdomain org.gnome.Shell.desktop[6472]: Window manager warning: last_user_time (10454099) is greater th>
 5月 28 06:07:42 localhost.localdomain org.gnome.Shell.desktop[6472]: Window manager warning: W3 appears to be one of the offending w>

まあ、ざっくりと言うと、SELinuxのチェックに引っ掛かって止まっています。
よくある話。。。なのですが、面倒なんですよねぇ〜(TT)

取り敢えず、表示された内容に記載されているコマンドを打ち込んで対応を行います。

適当なディレクトリに移動してから以下のコマンドを実行します。

# ausearch -c '(ttermost)' --raw | audit2allow -M my-ttermost
# semodule -X 300 -i my-ttermost.pp 

再度実行してみますが。。。。

# systemctl start mattermost
Job for mattermost.service failed because the control process exited with error code.
See "systemctl status mattermost.service" and "journalctl -xe" for details.
[root@localhost ~]# journalctl -xe
 5月 28 06:15:58 localhost.localdomain dbus-daemon[934]: [system] Successfully activated service 'org.fedoraproject.SetroubleshootPrivileged'
 5月 28 06:15:59 localhost.localdomain setroubleshoot[15253]: SELinux is preventing /usr/lib/systemd/systemd from 'read, open' accesses on the file /opt/mattermost/bin/mattermost. For complete SELinux >
 5月 28 06:15:59 localhost.localdomain setroubleshoot[15253]: SELinux is preventing /usr/lib/systemd/systemd from 'read, open' accesses on the file /opt/mattermost/bin/mattermost.
                                                               
                                                               *****  Plugin restorecon (99.5 confidence) suggests   ************************
                                                               
                                                               If you want to fix the label. 
                                                               /opt/mattermost/bin/mattermost default label should be bin_t.
                                                               Then you can run restorecon. The access attempt may have been stopped due to insufficient permissions to access a parent directory in whic>
                                                               Do
                                                               # /sbin/restorecon -v /opt/mattermost/bin/mattermost
                                                               
                                                               *****  Plugin catchall (1.49 confidence) suggests   **************************
                                                               
                                                               If you believe that systemd should be allowed read open access on the mattermost file by default.
                                                               Then you should report this as a bug.
                                                               You can generate a local policy module to allow this access.
                                                               Do
                                                               allow this access for now by executing:
                                                               # ausearch -c '(ttermost)' --raw | audit2allow -M my-ttermost
                                                               # semodule -X 300 -i my-ttermost.pp

またしてもエラーが発生して留まってしまいます。
でも先程とは少し異るエラーの様で、対策が異なっています。
ログに従って以下のコマンドを実行します。

# /sbin/restorecon -v /opt/mattermost/bin/mattermost

あれ?返ってこない。。。長い。。。という状態が続きます。
止めちゃおうか?って思います。
でも待ちます。
設定を反映するのに時間が掛かっています。
ちょっと休憩するくらい待ちました。

コマンドの終了を待って実行します。

# systemctl start mattermost.service

今度は成功した様です。

# systemctl status mattermost.service 
● mattermost.service - Mattermost
   Loaded: loaded (/usr/lib/systemd/system/mattermost.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2022-05-28 06:17:38 JST; 19s ago
 Main PID: 15595 (mattermost)
    Tasks: 40 (limit: 4605)
   Memory: 99.4M
   CGroup: /system.slice/mattermost.service
           ├─15595 /opt/mattermost/bin/mattermost
           ├─15616 plugins/com.mattermost.nps/server/dist/plugin-linux-amd64
           ├─15624 plugins/com.mattermost.plugin-channel-export/server/dist/plugin-linux-amd64
           ├─15638 plugins/playbooks/server/dist/plugin-linux-amd64
           └─15646 plugins/focalboard/server/dist/plugin-linux-amd64

最後に自動起動を設定します。

# systemctl enable mattermost.service 

以上でMattermostのインストールと設定は完了しました。

ここから実際にチームを作成して利用できる環境設定を行います。
何故か私の調べた限りでその設定についての記載が成されたサイトは見つからず、私自身もメモを取る前に進めてしまいました。
またの機会に説明を記したいと思います。
ということで、サイトへアクセスして、初期設定を行います。

http://ドメイン:8065/

ログイン完了後に幾つかの設定を行いますので、その設定については別途記載したいと思います。

QGIS 近くの地物属性を取得する。

この記事は備忘録のためのメモです。
説明が煩雑になっていますが、お許しください。

家(ポイント)から最も近いコンビニを探したい。
ルート検索と絡めると更に複雑になるので、取り敢えずは直線距離で探してみようと思います。

今回はクラスメートの家(複数ポイント)からそれぞれ最も直線距離で近くにあるコンビニの名前と住所を持ってこようと思います。

QGISのツールボックス→ベクタ一般→属性の最近防結合を開きます。

入力レイヤに家レイヤを指定します。
第2の入力レイヤにコンビニレイヤを指定します。
第2の入力レイヤからコピーする属性を指定します。
出力レイヤを指定します。
実行すると、最も近いコンビニの情報が家レイヤの属性データとして追加されます。

QGIS 次の地物の属性データを取り出す。(フィールド計算機)

すぐに忘れるので備忘録です。
QGISでフィールド計算機を使った計算を行う際に、カレント地物(feature)の属性情報(attribute)は直接使えますが、次の地物の属性情報を使おうとしたい時があります。
a[$id+1]とかしたいのですが、受け付けてくれませんw

計算式を示します。

attribute(get_feature_by_id(@layer,$id+1),’name’)

※nameには、属性名が入ります。

以下にそれぞれの関数のコーリングシーケンスを記載します。

【attirute】
 ・現在の地物の属性値を取り出す場合
  attribute(attribute_name)
  return : 属性値

 ・指定された地物の属性情報を取り出す場合
  attribute(feature,attribute_name)
  return:属性値

【get_feature_by_id】
 get_feature_by_id(layer,feature_id)
 return:layerでとIDで指定された地物(feature)

この辺りは、QGISの日本語翻訳とシステム上で使われる言葉(英語)が入り混じって解り難くなってしまっているところかも知れませんね。

サンプルでは、get_feature_by_idで@layerを指定しています。カレントレイヤが指定されます。
次に、$id+1でカレントID+1つまり次のIDを指定しています。
これで、次に地物のfeatureが返されます。

attribute関数で指定するfeatureの特定が成されます。
さらに、欲しい属性名をしていします。
「”(ダブルコーテーション)」ではなく、「’(シングルコーテーション)」で括ることで、文字列で属性名を指定しています。
「”」だと、属性そのものを指定してしまうというところに注意が必要です。

意外と、この辺りの記載が無くて、調べるのに一苦労しました。
たまにしかやらないから、いつも忘れてしまうんですよね(^^ゞ

次からはこのメモが役に立ってくれることを期待しますw