Re:(ΦωΦ)

No Curious, No Life.

AlmaLinux8.7 で Submin を使う ~3.Subversion/Subminの導入~

CentOS6で利用していたSubversion(なんと2014/11構築!!)をAlmaLinux8.7に移すことにしました.

Subversionの管理にSubminを使います.
SubminはPython2を使用するため,AlmaLinux9ではなく,Python2が使える8.7にしました.
実はSubminとSubversionをつなぐモジュールが簡単に手に入らず,Subversionコンパイルからやっています.
いろんな方の記事を参考にして,本件向けに手順をまとめなおしています.
感謝です!

最終回です.
いよいよSubversionコンパイルしてモジュールを入手して環境を構築します.

[目次]

※ 現在の仕事上,Linuxはまれに触れる程度ですので盛大な勘違いや思い込みがあるかも?
※ その時は教えてくださいね.

作業方針

  • 本構築前のお試しなのでWindows10/11上でHyper-Vにて構築します.
  • 「su -」は使わず,「sudo」で進めます.

1.Python2.xのインストール

Subversion 1.10.2 および Submin はPyrhon2で動作します.
swig-pyの作成にPython.h が必要なので, python2-devel もインストールします.

#Python2のインストール
sudo dnf install python2 python2-devel -y
#シンボリックリンクを作成
sudo ln -s python2.7 /usr/bin/python
#動作確認
python -V

2.SQLiteのインストール

※ SubminはSQLiteのデータベースを用いて,SVNのユーザやリポジトリの管理をします.
Subversionコンパイルsqliteのライブラリ が必要なので, sqlite-devel もインストールします.
Subversion はいくつかの内部データベースを管理するために SQLite を使用します.

sudo dnf install sqlite sqlite-devel -y

⇒ 3.26.0 がインストールされる

3.Subversion のソースを入手する

※ 下記の Source Download > 文中の archive download site に過去のソースがあります.

subversion.apache.org

今回は dnf info subversion で表示されたバージョン 1.10.2 に合わせました.

curl -OL https://archive.apache.org/dist/subversion/subversion-1.10.2.tar.gz ↲
tar -zxvf subversion-1.10.2.tar.gz ↲

4.SWIG のソースを入手する

swig-py(SubversionからPythonプログラムを呼び出すためのモジュール)を作成するために必要です
※ 本編はswig-pyを入手するために苦労した手順なのです.
http://www.swig.org/より過去のソースを探す(Download > Download area > All releases > swig
Subversion 1.10.2 では,SWIGは1.3.24以降となっています.
Subversion のソース解凍後にできる,フォルダ直下の subversion/bindings/swig/INSTALL より )
SWIG 4.x はPython3対応となります.Python2を使う今回の構成では使用できません.

curl -L https://sourceforge.net/projects/swig/files/swig/swig-1.3.40/swig-1.3.40.tar.gz > swig-1.3.40.tar.gz
tar -zxvf swig-1.3.40.tar.gz

5.SWIGをインストールする

cd ~/swig-1.3.40
./configure --with-python=/usr/bin/python2.7
make
sudo make install

6.Subversionをインストールする

#作業のためにSubversionのソースツリーのトップへ移動します.
cd ~/subversion-1.10.2

#この後の作業には,APR,APRUTIRITY のライブラリが必要...
sudo dnf install apr-devel apr-util-devel 

#Subversionのコンパイルとインストールをします.
./configure --with-apr=/usr/bin/ --with-apr-util=/usr/bin/ PYTHON=/usr/bin/python2.7 --with-lz4=internal --with-utf8proc=internal
make (まぁまぁ時間かかる)
sudo make install

※mod_dav_svn は dnf で手に入るのであとで.

7.Python連携モジュールのインストール準備

#上記と同じ「~/subversion-1.10.2」 で実行します.

make swig-py
make check-swig-py

⇒ けっこう時間かかる...(今回の例では12分)
(結果)
Ran 127 tests in 729.084s
OK

8.Python連携モジュールのインストール

参考:Masanoriのプログラミング日誌++: さくらのVPSへSubversion1.7.2+Submin2.0.2を導入

sudo make install-swig-py

#Python2.7のライブラリディレクトリ上へシンボリックリンクを張ります.
sudo ln -s /usr/local/lib/svn-python /usr/lib/python2.7/site-packages/svn-python
sudo ln -s /usr/local/lib/svn-python/svn /usr/lib/python2.7/site-packages/svn
sudo ln -s /usr/local/lib/svn-python/libsvn /usr/lib/python2.7/site-packages/libsvn

9.ApacheSQLiteの連携モジュールのインストール

sudo dnf install mod_dav_svn -y
sudo dnf install apr-util-sqlite -y

10.Submin のインストール

git clone https://github.com/mjholtkamp/submin.git ~/.submin
cd ~/.submin
sudo python setup.py install --record install-files.txt

#Apacheの設定(シンボリックリンクの作成)
sudo ln -s /var/lib/submin/conf/apache-2.4-webui-cgi.conf /etc/httpd/conf.d/z001_submin.conf
sudo ln -s /var/lib/submin/conf/apache-2.4-svn.conf /etc/httpd/conf.d/z002_submin-svn.conf

#Submin環境の初期設定
sudo submin2-admin /var/lib/submin initenv your@email.address
(※/var/lib/submin は変更可能.このフォルダ配下に環境が作られる.)
(※conf/submin.db が SQLiteのデータ)
(※conf/authz は ユーザ・グループ・アクセス権の情報らしい)
(※conf/mailer.py.conf はリポジトリ変更時のメール自動送信の設定らしい)

#下記内容で応答する
Which features do you want to enable? [svn, git, apache, nginx]> svn, apache
Path to the repository? [svn]> (あたらしく作るのでそのまま エンターキー )
⇒ /var/lib/submin に svnディレクトリ が作られて,そこが親リポジトリになる

Hostname? [localhost.localdomain]> サーバのIPアドレス:80 
(例.172.27.32.87:80 ↲ ⇒ メールのリンク等に使われる)

HTTP base? [/]> (そのまま エンターキー  ⇒ url は ~/submin/ となる)

Email from envelope? [Submin <root@localhost.localdomain>]> Submin <Subversion管理者のメールアドレス>
(メール送信元の記述になる.これは一例)
⇒ メールが届けばOK

#gitの使用を停止<br>
sudo submin2-admin /var/lib/submin config set vcs_plugins svn 

#状態の確認
sudo submin2-admin /var/lib/submin config get 
(結果)
auth_type          sql
base_url_git       /git
base_url_submin    /submin
base_url_svn       /svn
base_url_trac      /trac
commit_email_from  Submin <Subversion管理者のメールアドレス>
database_version   11
dir_bin            static/bin
enabled_trac       no
env_path           /bin:/usr/bin:/usr/local/bin:/opt/local/bin
git_dir            git
http_vhost         172.27.32.87:80
session_salt       Pi8e1wpO/GLAgyQS
smtp_from          Submin <Subversion管理者のメールアドレス>
svn_authz_file     conf/authz
svn_dir            svn
trac_dir           trac
vcs_plugins        svn

#httpdの再起動
sudo systemctl restart httpd

Subversion管理者のメールアドレスにメールが届いているはずなのでそのリンクをクリックして,パスワードの変更をしてください.

以降は,「 http://172.27.32.87/submin 」で Submin の画面が表示されます.
これで,GUIを用いた,リポジトリ/ユーザ/グループの管理ができるようになりました.

以上で作業終了です.


AlmaLinux8.7 で Submin を使う ~2.OSの準備②~

CentOS6で利用していたSubversion(なんと2014/11構築!!)をAlmaLinux8.7に移すことにしました.

Subversionの管理にSubminを使います.
SubminはPython2を使用するため,AlmaLinux9ではなく,Python2が使える8.7にしました.
実はSubminとSubversionをつなぐモジュールが簡単に手に入らず,Subversionコンパイルからやっています.
いろんな方の記事を参考にして,本件向けに手順をまとめなおしています.
感謝です!

今回は準備編の残りです.
AlmaLinux にメール・Web・FTPのそれぞれのサーバを設定をしました.

[目次]

※現在の仕事上,Linuxはまれに触れる程度ですので盛大な勘違いや思い込みがあるかも?
※その時は教えてくださいね.

作業方針

  • 本構築前のお試しなのでWindows10/11上でHyper-Vにて構築します.
  • 「su -」は使わず,「sudo」で進めます.

メールサーバ(Postfix)の導入

参考:メールサーバー構築(Postfix+Dovecot)(AlmaLinux) - すだちWiki

1)Postfixのインストール

sudo dnf install postfix -y

2)Cyrusをインストール

※SASL(Simple Authentication and Security Layer)のパッケージ
PostfixSMTP認証をつかえるようにするために使用.
sudo dnf install cyrus-sasl cyrus-sasl-md5 cyrus-sasl-plain -y

3)Postfixの設定

①.イントラ向けの例

※既にあるメールサーバへ連携する手順です.
※実際はそれぞれの管理者に確認を.

mail.cfの編集

sudo vi /etc/postfix/main.cf
relayhost のコメントアウトしてある所へ下記を記入
(メモ:vi画面で/relayhostと入力すると検索.nと入力で次を検索できます.)
relayhost = メールサーバー名:ポート番号
末尾に下記を追加
(メモ:vi画面で9999Gとかすると一気に末尾へ.oと入力でカーソルの下に入力行を追加できるモードに.)

smtp_sasl_auth_enable = yes<br>
smtp_sasl_password_maps = hash:/etc/postfix/mailsvinfo
#メモ:↑の「mailsvinfo」は次の項でviで作成するファイル名と同じなら何でも可
smtp_sasl_security_options = noanonymous<br>
smtp_sasl_mechanism_filter = CRAM-MD5,LOGIN,PLAIN

smtp_sasl_password_maps の編集

sudo vi /etc/postfix/mailsvinfo
リレー先サーバのアドレスと,認証で使用するユーザ名とパスワードを書き込みます.
メールサーバー名:ポート番号 ユーザ名:パスワード

コマンドラインに戻って下記を実行.

sudo chmod 640 /etc/postfix/mailsvinfo
sudo postmap /etc/postfix/mailsvinfo

/etc/postfix/メールサーバー名.db ができていればOK

②.Gmail連携の例はこちらを参考に

codeforfun.jp blog.apar.jp

4)起動設定

自動起動の設定と即時起動
–now オプションをつけて「 enable (自動起動)」と「 start (起動)」を同時に実行.
sudo systemctl enable --now postfix

※メモ:状態の確認:systemctl status postfix
※メモ:Postfixの起動:sudo systemctl start postfix
※メモ:Postfixの停止:sudo systemctl stop postfix
※メモ:Postfixの再起動:sudo systemctl restart postfix
※メモ:Postfix自動起動に設定:sudo systemctl enable postfix

5)動作確認

mailコマンドのインストール
sudo dnf install mailx -y

送信テスト
echo 'メール本文' | sudo mail -s 'メールタイトル' 送信先メールアドレス

下記状態なら完了
・メールが届いた.
sudo cat /var/log/maillog で確認すると エラーが出ていない
(status=sentになっている)

Webサーバ(Apache)の導入

1)Apacheのインストール

※メモ:httpd-devel は後のコンパイル作業等で必要になります.
※メモ:Webサーバを使うだけなら httpd だけでOK.
sudo dnf install httpd httpd-devel -y

2)自動起動の設定と即時起動

–now オプションをつけて「 enable (自動起動)」と「 start (起動)」を同時に実行.
sudo systemctl enable --now httpd

3)firewall設定

外部のマシンから接続できるようにhttpを許可する
sudo firewall-cmd --add-service=http --zone=public --permanent
※80番ポートのみを許可する方法もある
sudo firewall-cmd --add-port=80/tcp --zone=public --permanent
再起動して設定を反映
sudo firewall-cmd --reload

4)hostnameの登録

sudo vi /etc/httpd/conf/httpd.conf
ServerName localhost.localdomain:80 を追記
IPアドレスでもOK
⇒ 今回は ServerName 172.27.32.87:80 で追記

※メモ:バージョンの確認:httpd -v-Vにすると詳細表示)
※メモ:状態の確認:systemctl status httpd
※メモ:httpdの起動:sudo systemctl start httpd
※メモ:httpdの停止:sudo systemctl stop httpd
※メモ:httpdの再起動:sudo systemctl restart httpd
※メモ:httpd自動起動に設定:sudo systemctl enable httpd

FTPサーバ(Vsftpd)の導入

参考:保護中: AlmaLinux8:FTPサーバー設定 - 初心者におすすめ!コピペでできる自宅サーバーAlmaLinux8の作り方。

1)Vsftpdのインストール

sudo dnf install vsftpd -y

2)環境設定

sudo vi /etc/vsftpd/vsftpd.conf

  • 12行目:匿名ログインを禁止する.(12Gと入力するとその行へジャンプします)
    anonymous_enable= NO

  • 82,83行目:行頭の「#」を削除してコメント解除.アスキーモードでの転送を許可する.
    ascii_upload_enable=YES
    ascii_download_enable=YES

  • 100,101行目:行頭の「#」を削除してコメント解除.chrootを有効にします.
    chroot_local_user=YES
    chroot_list_enable=YES

  • 103行目:行頭の「#」を削除しコメント解除.リストファイルを指定.
    chroot_list_file=/etc/vsftpd/chroot_list

  • 109行目:行頭の「#」を削除しコメント解除.ディレクトリ転送を有効にします.
    ls_recurse_enable=YES

  • 114行目:IPv4を有効に変更.
    listen=YES

  • 123行目:IPv6を無効に変更.
    listen_ipv6=NO

  • ローカルタイム指定を最終行に追記.
    use_localtime=YES

上層への移動を許可するユーザーを追加.
sudo vi /etc/vsftpd/chroot_list
ユーザー名を追記.

ユーザ名1
ユーザ名2
 |

「/var/www/html」への書き込みを許可する.
sudo chmod 0777 /var/www/html

3)自動起動の設定と即時起動

–now オプションをつけて「 enable (自動起動)」と「 start (起動)」を同時に実行.
sudo systemctl enable --now vsftpd

4)firewall設定

外部のマシンから接続できるようにftpを許可する
sudo firewall-cmd --add-service=ftp --zone=public --permanent
※21番ポートのみを許可する方法もある
sudo firewall-cmd --add-port=21/tcp --zone=public --permanent
再起動して設定を反映
sudo firewall-cmd --reload

おまけ:rootでFTPできるようにする場合

参考: りなっくすなう。: LinuxのFTPサーバ(vsftpd)にrootで接続
FFFTPのPASVモードはチェック入っていても大丈夫だった

  • vsftpd.confのuserlist_enable=YESとなっていることを確認する.
    sudo grep -n userlist_enable /etc/vsftpd/vsftpd.conf
    (結果)
    118:userlist_enable=YES

  • user_listのrootをコメントアウト
    sudo vi /etc/vsftpd/user_list
    ⇒「root」をコメントアウトする

  • ftpusersのrootをコメントアウト
    sudo vi /etc/vsftpd/ftpusers
    ⇒「root」をコメントアウトする

  • chroot_listに追加
    sudo vi /etc/vsftpd/chroot_list
    ⇒ユーザー名「root」を追記します.

  • vsftpdを再起動して設定を反映
    sudo systemctl restart vsftpd


今回はここまで.つぎはいよいよSubversionとSubminのインストールです.


AlmaLinux8.7 で Submin を使う ~1.OSの準備①~

この記事は2023年2月ごろに書き溜めていたものです.
2023年8月現在,RedHatのに独占的とも思える騒動で今後のAlmaLinuxはどう変わっていくんでしょうね. https://www.publickey1.jp/blog/23/almalinuxred_hat_enterprise_linuxabirhel.html

CentOS6で利用していたSubversion(なんと2014/11構築!!)をAlmaLinux8.7に移すことにしました.

Subversionの管理にSubminを使います.
SubminはPython2を使用するため,AlmaLinux9ではなく,Python2が使える8.7にしました.
実はSubminとSubversionをつなぐモジュールが簡単に手に入らず,Subversionコンパイルからやっています.
いろんな方の記事を参考にして,本件向けに手順をまとめなおしています.
感謝です!

今回は前準備として,Windows10/11上でHyper-Vにて仮想環境を構築し,OSのインストールと基本的な設定をしました.

[目次]

※現在の仕事上,Linuxはまれに触れる程度ですので盛大な勘違いや思い込みがあるかも?
※その時は教えてくださいね.

作業方針

  • 本構築前のお試しなのでWindows10/11上でHyper-Vにて構築します.
  • 「su -」は使わず,「sudo」で進めます.

インストールするOSの入手

AlmaLinux-8.7-x86_64-minimal.iso の入手

公式サイト:https://almalinux.org/ja/ にアクセスします.

  1. 「ダウンロード」より,適したCPUを選んでダウンロードサイトを選択.
    ※選択するダウンロードサイトで転送速度が全然違います.遅いなぁと思ったら他も試してみるといいです.

  2. 「AlmaLinux-8.7-x86_64-minimal.iso(10-Nov-2022 07:12, 1.7GByte)」をダウンロードする.

「latest」のほうが良いのでしょうが,その場合はこの後の処理はバージョン差等に注意が必要となる...かも...

※ 2023年8月追記:現在,「ダウンロード」には 8.7 が見えませんが,ダウンロード先で過去のバージョンを選べます.

仮想環境の用意

Windows11/Windows10Proで無償で利用できる,Hyper-V を使用します.
使用可能にするための詳細はここでは省略.
作成時の注意点のみ記述します.

  1. 世代指定は「第2世代」にします.

  2. ネットワークの構成は,今後の作業のなかで,IPアドレスで指定する箇所がいくつかあるるため,下記対策を参考にして,アドレスを固定します. https://chiritsumo-life.com/20200718/hyperv-closednetwork/chiritsumo-life.com

  3. 作成した仮想マシンは「設定」でセキュアブートを無効にします.

OSのインストール

下記画面にてそれぞれを設定してインストール開始です.

  • インストール先:いったん設定画面を開き,表示を確認.
  • 日付と時刻:日本をクリックして,アジア/東京に設定.
  • ネットワークとホスト名:ホスト名やIPアドレス等を設定.
  • rootパスワード:rootのパスワードを設定.
  • ユーザの作成:これからの作業で使用するユーザを作成.

インストール後のOSの整備

1)ネットワークとホスト名の変更(nmtuiコマンド)

※OSインストール時の設定を変更したい場合の手順です.
コマンドプロンプトnmtui と入力して実行します.
こんな感じのGUI画面で設定できます.
※ここでは下記の想定とします.

  • IPアドレス=172.27.32.87/20
  • プロキシ=10.10.0.1:8080
    (※利用しているネットワークにプロキシがある想定です)

2)sudoコマンドの有効化
  • 方法① - visudoで登録

※検索するとこの方法をよく見つけたのでメモです.
※今回は後述の方法②にしました.

su
visudo

⇒ root ALL=(ALL) ALL`と記述されている箇所の下にroot権限を与えるユーザーを登録します.

  • 方法② - 権限のあるグループへ参加
su
usermod -aG wheel ユーザ名

⇒ sudoが可能なグループ「wheel」に所属となります.

※sudo コマンド有効化を確認

  1. exit(su していた時)
  2. 方法②はここで一旦ログインしなおしが必要
  3. sudo vi で正常に動作すればOK

3)SELinuxを無効化

sudo vi /etc/sysconfig/selinux
下記変更
SELINUX=enforcing
 ↓
SELINUX=disabled
変更を反映のためにOSを再起動
sudo reboot
再起動後に下記コマンドを実行
getenforce
⇒ 「Disabled」と表示されればSELinuxは無効になっています.


4)dnfのプロキシ対応(※プロキシがある場合)

sudo vi /etc/dnf/dnf.conf
最後尾に下記追加
proxy=http://proxy_host:proxy_port
※proxy_host:proxy_portは実際に合わせて値は設定します.
例)proxy=http://10.10.0.1:8080


5)dnfパッケージの更新

既存のすべてのパッケージを最新の状態にする.
(インストール中の競合を回避するための作業だそうです.)
sudo dnf upgrade --refresh -y
※画面がたくさん流れます.


6)EPELリポジトリの導入

RHEL用ビルド済みパッケージ(Frdoraプロジェクトが作成)
sudo dnf install epel-release -y
※下記コマンドで導入したリポジトリの一覧表示ができます.
dnf repolist


7)開発ツールパッケージを一括インストール

sudo dnf group install "Development Tools" -y
※画面がたくさん流れます.
※グループに含まれるパッケージ内容の確認方法
sudo dnf groupinfo "Development Tools"


8)gccのマニュアルをインストール(これはたぶんおまけの作業)

sudo dnf install man-pages -y
gccのバージョン確認方法
gcc --version


9)gitのプロキシ対応(※プロキシがある場合)

sudo git config --global http.proxy http://proxy_host:proxy_port
※proxy_host:proxy_portは実際に合わせて値は設定します.
例)sudo git config --global http.proxy http://10.10.0.1:8080
※sudoするので,/rootに定義ファイルができ,以降,sudoでないとgitが実行できません.
※設定結果の確認は下記コマンドです
sudo git config --global -l
⇒ 「http.proxy=http://proxy_host:proxy_port」と表示されればOK

※ローカルユーザで使いたいなら,sudoなしで上記コマンド実行.
git config --global http.proxy http://proxy_host:proxy_port
※proxy_host:proxy_portは実際に合わせて値は設定します.
例)git config --global http.proxy http://10.10.0.1:8080
※設定結果の確認は下記コマンドです.
git config --global -l
⇒ 「http.proxy=http://proxy_host:proxy_port」と表示されればOK


10)curlのプロキシ対応(※プロキシがある場合)

sudo vi ~/.curlrc
最後尾に下記追加(おおよそは新規作成)
proxy=http://proxy_host:proxy_port
※proxy_host:proxy_portは実際に合わせて値は設定します.
例)proxy=http://10.10.0.1:8080

※ローカルユーザで使いたいなら,sudoなしで上記コマンド実行.
vi ~/.curlrc
最後尾に下記追加(おおよそは新規作成)
proxy=http://proxy_host:proxy_port
※proxy_host:proxy_portは実際に合わせて値は設定します. 例)proxy=http://10.10.0.1:8080


今回はここまで.