PCのCPU交換

現在、メインに使用しているPCは2012年年初に組み立てたもので、もう9年も前の仕様。写真のRAWデータ調整作業は処理待ちで少しかったるい事がある。
現状の主な仕様は以下の通り。

プロセッサ:Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz、3601 Mhz、6 コア
物理メモリ (RAM) :32.0 GB
OS 名 :Microsoft Windows 10 Pro
ベースボード製品: X79-UP4

よく見かけるベンチマークソフト、PCMark10 を使って現在の性能がどの程度の物なのかを調べて見た。

1866? インターネットにあるPCMark10の紹介記事などで見かけるスコアと比べるとダイブ低い。PCMark10 のオンライン機能でこのスコアがどの程度に位置するのか、確認してみると、驚愕の結果が!

全体の下から2%よりは良い 何の慰めにもならないコメント。
ベンチマークをしようと言う位のPCの多くはそこそこの性能の物で、低性能と分かっているPCの測定はしないだろうからこのデータベース全体は比較的高めであろうとは思うが、それにしても意外な低さ。
中の下くらいの性能は・・・と期待していたが、実際は殆ど下の下でした。
なるほど。これなら高画素機で撮影したらRAWデータの調整にもたつくのも納得。

これほど最近のPCとの性能差があるなら、最新の仕様で新しいPCを組み立てようと思い、主要パーツであるCPU。マザーボード、グラフィックボードの価格を調べてみた。日本と比べて3割ほど高くなり、これにメモリを加えれば20万円超。カラーマネジメントの出来るディスプレイが購入できる程のコスト差があり、中国での新PC作成は断念することにした。

それではより高性能なCPUに交換はできないかと調べてみた。
GAME DEBATE からX79-UP4で使用可能な中から使用可能で現実的に入手ができるCPUで最も性能の良い物を探してみる。
Xeon E7シリーズは通販で見つからなかったのでXeon E5 のv3 又はv2 シリーズから通販で購入出来る物を探す。12コアのv2 に対して16コアのv3シリーズも仕様的には気になったがGD RATING のより高いE5-2697 v2 を発注した。現状、 6コアのi7-3930K CPU のGD RATING は8.6。E5-2698 v3 は9.6。E5-2697 v2 は9.8。

CPU Benchmarks では、 i7-3930K CPU のスコア 8173 に対して E5-2697 v2 は14358と、176%程度の性能アップになっている。

CPU処理能力で1.5倍程度の向上が期待できそうだ。
しかし一方、GIGABYTE のGA-X79-UP4 (rev. 1.0) CPUサポートリスト にはE5-2697 v2 が載っていない。本当に動作するのか、心配はあるがやって見ることにした。

購入はネット通販、淘宝 の中で『天猫』マークのある業者から。中国人のアドバイスでは『天猫』マークのある業者の方が信用がおけるとの事。
注文したときは769.50人民元(日本円で約12,500円)。これならうまくいかなくても許せる範囲。
しばらくして同じサイトを見ると、いつのまにか倍以上の値段になっている!
どこからか取り外した中古で1719元は高いなぁ。
これなら買わない。
既に購入品は輸送途上にあるが、発送元は淘宝 の商品説明にあった「广东深圳」ではなく、上海の更に北方からの出荷になっている。とにかく怪しさ、いい加減さは満点。

 

やっと届いた梱包を開けてみると、意味不明の樹脂ケースが入っているだけで何も入っていない。内容を確認しないで支払い処理をすればしめたもの、とでも思ったのだろうか?
確信犯だな、これは。
『天猫』マークも信用できない。
この国では何につけ、このような事は良くある。時間を無駄にしたがキャンセル。
他の販売業者に発注しなおした。

こちらは650元(日本円で約10,800円)。
2千円近く安い。これで使えるものがちゃんと届けばかえって、少し得した気分。

今度はそれらしい物が届いた。熱伝導グリスが添付されているのは良心的。
CPUの表示を見るときちんと XEON E5-2697V2 の表示。
リマーク品などで無い事を祈りながら早速CPU交換を開始。

CPUを交換してPCの電源を入れると無事にBIOS、Windows10と立ち上がった。ドライバーのアップデートを実施して早速CPU-Z の簡易ベンチマークで i7-3930K CPU と E5-2697 v2 のスコアを比較し てみた。CPUのクロックが遅くなるのでシングルスレッドのスコアは i7-3930K の方が高くなるのでは?と思っていたが、結果は若干高くほぼ同等。さすがにマルチスレッドのスコアはコア数、スレッド数が2倍になるため、2倍以上に改善されている。

次にPCMark10 でベンチマーク。
i7-3930K CPU の1866 からE5-2697 v2 では 3518と約2倍に上がった。
スコア分布の中では下の下から下の上位くらいには上がっただろうか?
項目別では Color adjusting、Unsharp mask 1、Noise adding の3項目は処理時間が約1/3に高速化している。RAWデータを調整作業時の反応が良くなっていることを期待。
動画処理関係の項目も若干高速化されており、コア/スレッド数が多くなった効果があるようだ。

最後にいつも使用しているニコンの現像ソフト、Capture NX-D で13個のRAWデータ現像に要した時間を手動で測定してみた。
OSとCapture NX-D はSSDによるCドライブ。現像対象のRAWデータと、現像後のJPEGを書き出し先はUSB3.0接続の外付けHDDケースのRAID1 ドライブ。
結果、i7-3930K 、Xeon E5-2697 v2 共に92~93秒で変わらない結果になった。
これはスレッド数が2倍になるXeon E5-2697 v2 の圧勝かと思っていたので意外だった。
USB3.0接続の外付けHDDのデータ転送速度が支配的なのかもしれない。

カテゴリー: Day by Day, Photo life | タグ: , , , , | コメントする

Ubuntu 20.04でサーバー構築 11:写真サーバー

1.PHPの追加設定

最高画質でRAWからJPEGに現像したファイルもアップロードできるように、PHPの設定を以下のように変更しました。

yuu@web2:/$ sudo nano /etc/php/7.4/apache2/php.ini
; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
;memory_limit = 128M
memory_limit = 256M; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
;upload_max_filesize = 2M
upload_max_filesize = 30M

PHPに日本語などマルチバイト文字を使うための拡張モジュールインストールします。

yuu@web2:~$ sudo apt-get -y install php7.4-mbstring \
php7.4-xml \
libonig5

/etc/php/7.4/apache2/php.ini を開いてphp_mbstring.dll を有効にします。

;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;extension=mbstring     ←コメントを外す。

mbstring の設定を行います。 php.ini  の[mbstring] セクションについて、以下の設定を変更しました。

[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII
mbstring.substitute_character = none
mbstring.func_overload = 0

Apache を再起動して設定を反映します。

yuu@web2:~$ sudo systemctl restart apache2

Windows PC のブラウザから http://(サーバーIPアドレス)/info.php にアクセスして mbstring の設定を確認します。

2.Piwigo 用データベース作成

MySQLにPiwigo のデータベースを作成します。

yuu@web2:/$ mysql -u root -p
Enter password:mysql> CREATE DATABASE piwigo_db DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Query OK, 1 row affected, 2 warnings (0.28 sec)
mysql> show databases;
+————————-+
| Database                       |
+————————-+
| information_schema  |
| mysql                             |
| network_items             |
| performance_schema |
| piwigo_db                     |
| sys                                  |
| wordpress_db             |
+————————-+
7 rows in set (0.00 sec)

MySQLにPiwigo のユーザーを作成してデータベース piwigo_db への権限を付与します。

mysql> CREATE USER piwigo_user@localhost IDENTIFIED BY ‘(パスワード)’;
mysql> GRANT ALL PRIVILEGES ON piwigo_db.* TO ‘piwigo_user‘@’localhost’;
mysql> select Host, User from mysql.user;
+———–+———————-+
| Host         | User                         |
+———–+———————-+
| %              | wordpress_user     |
| %              | yuu                           |
| localhost | debian-sys-maint  |
| localhost | mysql.infoschema |
| localhost | mysql.session         |
| localhost | mysql.sys                |
| localhost | piwigo_user           |
| localhost | root                          |
| localhost | wordpress_user    |
+———–+———————+
9 rows in set (0.00 sec)mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.12 sec)
mysql> exit
Bye

3.ダウンロードとApache の設定

/contents/www/html に移動してPiwigo をダウンロードします。

yuu@web2:~$ cd /contents/www/html
yuu@web2:/contents/www/html$ curl -o piwigo.zip https://piwigo.org/download/dlcounter.php?code=latest
%  Total     % Received % Xferd Average Speed   Time        Time         Time   Current
Dload   Upload   Total        Spent        Left      Speed
56 16.8M 56   9775k      0        0 54680           0   0:05:23   0:03:03  0:02:20   57063
(完了後、ダウンロードファイルを確認)
yuu@web2:/opt$ ls -la
合計 17296
drwxr-xr-x 2 yuu yuu 4096 2月 20 22:19 .
drwxr-xr-x 21 root root 4096 2月 13 00:12 ..
-rw-rw-r– 1 yuu yuu 17695593 2月 20 22:24 piwigo.zip

解凍してApache からアクセスできるようにセットします。

yuu@web2:/contents/www/html$ unzip piwigo.zip
(以下解凍作業メッセージ)
yuu@web2:/contents/www/html$ ls -la
合計 17300
drwxr-xr-x 3 yuu yuu 4096 2月 20 22:29 .
drwxr-xr-x 21 root root 4096 2月 13 00:12 ..
drwxrwxr-x 16 yuu yuu 4096 2月 6 17:01 piwigo
-rw-rw-r– 1 yuu yuu 17695593 2月 20 22:24 piwigo.zip
yuu@web2:/contents/www/html$ sudo chown -R www-data:www-data /piwigo
[sudo] yuu のパスワード:
yuu@web2:/contents/www/html$ ls -la
合計 17300
drwxr-xr-x 3 yuu yuu 4096 2月 20 22:29 .
drwxr-xr-x 21 root root 4096 2月 13 00:12 ..
drwxrwxr-x 16 www-data www-data 4096 2月 6 17:01 piwigo
-rw-rw-r– 1 yuu yuu 17695593 2月 20 22:24 piwigo.zip
yuu@web2:/contents/www/html$ sudo systemctl restart apache2

4.webベースでインストール

Windows PC からブラウザで http://<サーバーIPアドレス>/piwigo/ にアクセスすると、インストール画面が出ます。
「データベース設定」には作成したPiwigo のデータベース設定を入力します。
ホスト:localhost (デフォルトのまま)
ユーザー:piwigo_user
パスワード:(ユーザーに設定したパスワード)
データベース名:piwigo_db
データベーステーブル接頭辞:piwigo_ (デフォルトのまま)
「管理設定」はPiwigo の管理者を登録します。先に、サーバーに登録しているユーザーであることが必要です。
入力が完了したら「インストールを開始する」ボタンを押します。
しかし、インストール完了画面が出てきません。ブラウザでリロードしてみると、既にインストールされてるよ、とのメッセージ。ブラウザ(FireFox)の(設定の)問題かもしれません。
インストールは出来た様です。

5.設定漏れの対策

再度ブラウザで http://<サーバーIPアドレス>/piwigo/ にアクセスすると、最初にアルバムを作成する画面がでます。
しかしここで問題。”GDライブラリがありません。”と言うメッセージが出ています。
Apache のドキュメントルートにinfophp();関数を含んだphpスクリプトファイルを作成して確認しましたが。GDの項目がありません。確かにインストールされいないようです。
GDをインストールしてApache を再起動します。

yuu@web2:~$ sudo apt-get install php7.4-gd
yuu@web2:~$ sudo service apache2 restart

php スクリプトでGDの設定を確認します。
ブラウザで http://<サーバーIPアドレス>/piwigo/ を再読み込みします。
GDのエラーメッセージは消えましたが、”一回のアップロードの最大容量” の設定が不適切とのメッセージが出ました。
/etc/php/7.4/apache2/php.ini を開いて post_max_size = 8M → 3000M に修正します。
3000M はアルバム単位で複数ファイルを一度にアップロードする事を想定して設定しています。

; Maximum size of POST data that PHP will accept.
; Its value may be 0 to disable the limit. It is ignored if POST data reading
; is disabled through enable_post_data_reading.
; http://php.net/post-max-size
; post_max_size = 8M    ← コメントアウト
post_max_size = 3000M

Apache を再起動してブラウザで http://<サーバーIPアドレス>/piwigo/ を読み込みます。これでエラーメッセージがでなくなりました。

6.Piwigo の設定

外面左のダッシュボードから公開するギャラリーについての具体的な設定を行います。
最初は [設定]-[オプション]のそれぞれのタブで、ギャラリーの名称や写真の並び順、許可、等など、設定項目は多義に渡りますが、とりあえず名称、パーミッション、透かし、表示関係をざっと見て最低限必要な項目を設定します。

カテゴリー: サーバー | タグ: , , | コメントする

Ubuntu 20.04でサーバー構築 10:webデータの移行

/contents/www/html にあるサーバーの準備テストで使用したファイルを全て削除して、自宅サーバーでホームページを公開しているweb データを新しいサーバーに展開する。

ユーザーは自分だけなので、/contents/www 以下をユーザーアカウントで変更できるように、ディレクトリとファイルの所有者とグループを変更する。

yuu@web2:~$ sudo chown -R yuu:yuu /contents/www

ホームページ作成ソフトからFTPで現在のサイトデータを新しいサーバーの/contents/www /html に転送する。/contents/www/html 以下のフォルダーの所有者がFTPでデーターをアップロードするときのログインユーザーと同じであれば問題なくデータ転送は完了する。
Windows PCのwebブラウザからサーバーPCにアクセスして、転送したサイトが表示されることを確認する。
新しいサーバーを公開するまでの間のwebデータ変更は、既に公開しているサーバーと同様に新しいサーバーにも展開する。

カテゴリー: サーバー | タグ: , , | コメントする

Ubuntu 20.04でサーバー構築 9:FTPサーバーの設定

ファイル転送用にFTPサーバーを導入します。
vftpd をインストールします。

yuu@web2:/$ sudo apt-get install vsftpd

/etc/vsftpd.conf を編集します。

“#” を削除してコメントアウトを外す。
listen=YES           ← スタンドアローンモードで起動する
write_enable=YES       ← 書き込みを許可する
local_umask=022       ← ローカルユーザーのumaskを指定するascii_upload_enable=YES    ← # アスキーモード転送を許可する
ascii_download_enable=YES
chroot_local_user=YES     ← chroot を有効にする
chroot_list_enable=YES     ← chroot リストを有効にするchroot_list_file=/etc/vsftpd.chroot_list    ← chroot リストを指定するls_recurse_enable=YES     ← ディレクトリ毎の一括転送を有効にするファイルの最後に追加する。
# /etc/vsftpd.user_list に記載されているユーザーのみに接続を許可する
userlist_enable=YES
userlist_deny=NO
# パッシブモードでの接続を設定する
pasv_enable=YES
pasv_promiscuous=NO
pasv_min_port=6100
pasv_max_port=6105

/etc/vsftpd.chroot_list を作成して上位階層への移動を許可するユーザーを登録します。
1行毎に1つのユーザー名を記入します。

yuu@web2:/$ sudo nano /etc/vsftpd.chroot_list

vsftpd.chroot_list を保存終了。
自動起動設定をします。

yuu@web2:~$ sudo systemctl enable vsftpd.service
Synchronizing state of vsftpd.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable vsftpd

vsftpd を再起動します。

yuu@web2:/$ sudo systemctl restart vsftpd

vsftpd の動作を確認するためにlocalhost 内でftp 接続をしてみます。

yuu@web2:~$ ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:yuu): yuu    ←ターミナルと同じユーザー名なら省略可能
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls -la           ←ユーザーホームディレクトリ内を表示
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x 4 1000 1000 4096 Feb 15 10:19 .
drwxr-xr-x 4 0 0 4096 Feb 09 22:29 ..
-rw——- 1 1000 1000 8872 Feb 13 22:22 .bash_history
-rw-r–r– 1 1000 1000 220 Feb 25 2020 .bash_logout
-rw-r–r– 1 1000 1000 3771 Feb 25 2020 .bashrc
drwx—— 2 1000 1000 4096 Feb 05 23:11 .cache
drwxrwxr-x 3 1000 1000 4096 Feb 06 22:03 .local
-rw——- 1 1000 1000 395 Feb 15 10:19 .mysql_history
-rw-r–r– 1 1000 1000 807 Feb 25 2020 .profile
-rw-r–r– 1 1000 1000 0 Feb 05 23:12 .sudo_as_admin_successful
226 Directory send OK.
ftp> quit
221 Goodbye.

ufw にアクセスを許可するポートを設定します。

yuu@web2:~$ sudo ufw allow ftp       ←FTPポート(21)開放
[sudo] yuu のパスワード:
ルールを追加しました
ルールを追加しました (v6)
yuu@web2:~$ sudo ufw allow 6100:6105/tcp   ←パッシブモード用ポート開放
ルールを追加しました
ルールを追加しました (v6)
yuu@web2:~$ sudo ufw status
状態: アクティブTo Action From
— —— —-
Apache ALLOW Anywhere
OpenSSH ALLOW Anywhere
Samba ALLOW Anywhere
80 ALLOW Anywhere
21/tcp ALLOW Anywhere
6100:6105/tcp ALLOW Anywhere
Apache (v6) ALLOW Anywhere (v6)
OpenSSH (v6) ALLOW Anywhere (v6)
Samba (v6) ALLOW Anywhere (v6)
21/tcp (v6) ALLOW Anywhere (v6)
6100:6105/tcp (v6) ALLOW Anywhere (v6)

Windows PC からFFFTPを設定して接続してみます。
ユーザーホームディレクトリだけで無く、サーバーPC上層ディレクトリへも移動してファイルのダウンロード、アップロードを行ってみて確認します。

なお、ftp や ssh はサーバー管理者のみが使用する場合、セキュリティ対策としてサーバーをインターネットに公開する前に使用するポートはwellknown ポートとは異なるポート番号に変更します。

カテゴリー: サーバー | タグ: , | コメントする

Ubuntu 20.04でサーバー構築 8:WordPressのインストール

1.WordPress 用のデータベース作成

MySQL のrootユーザーのパスワードを設定します。設定後、一旦MySQL から抜けます。

yuu@web2:/$ sudo mysql -u root
mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘(MySQL root のパスワード)‘;
Query OK, 0 rows affected (0.26 sec)
mysql> exit
Bye

MySQLのroot で再度ログインします。

yuu@web2:/$ mysql -u root -p
Enter password:

文字コードUTF8でデータベース wordpress_db を作成します。

mysql> CREATE DATABASE wordpress_db DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Query OK, 1 row affected, 1 warning (0.23 sec)

wordpress_db に対して全権限を持つユーザーを作成します。ここではユーザー名を wordpress_user としました。

mysql> CREATE USER ‘wordpress_user’@’localhost’ IDENTIFIED BY ‘(パスワード)’;
Query OK, 0 rows affected (0.30 sec)
mysql> GRANT ALL PRIVILEGES ON wordpress_db.* to wordpress_user@’localhost’;
Query OK, 0 rows affected (0.21 sec)

変更を保存してMySQL を終了します。

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.14 sec)

mysql> exit
Bye

2.WordPressのダウンロードと展開

ドキュメントルートにWordPress をダウンロードします。
WordPress はApacheドキュメントルートの/contents/www/html 以下にインストールすることにしました。

yuu@web2:~$ cd /contents/www/html
yuu@web2:/contents/www/html$ sudo wget https://ja.wordpress.org/latest-ja.tar.gz
[sudo] yuu のパスワード:
–2021-02-15 08:32:37– https://ja.wordpress.org/latest-ja.tar.gz
ja.wordpress.org (ja.wordpress.org) をDNSに問いあわせています… 198.143.164.252
ja.wordpress.org (ja.wordpress.org)|198.143.164.252|:443 に接続しています… 接 続しました。
HTTP による接続要求を送信しました、応答を待っています… 200 OK
長さ: 16304330 (16M) [application/octet-stream]
`latest-ja.tar.gz’ に保存中

latest-ja.tar.gz 100%[===================>] 15.55M 2.16MB/s in 64s

2021-02-15 08:33:41 (249 KB/s) – `latest-ja.tar.gz’ へ保存完了 [16304330/16304330]

ダウンロードしたWordPress を展開します。

yuu@web2:/contents/www/html$ ls
html latest-ja.tar.gz
yuu@web2:/contents/www/html$ sudo tar -xzvf latest-ja.tar.gz

フォルダー、/contents/www/html/wordpress が作成されて、その中にWordPress がインストールされます。

yuu@web2:/contents/www/html$ ls -ls
合計 15932
4 drwxr-xr-x 2 root root 4096 2月 15 08:44 html
15924 -rw-r–r– 1 root root 16304330 2月 12 16:00 latest-ja.tar.gz
4 drwxr-xr-x 5 1006 1006 4096 2月 12 16:00 wordpress

3.WordPress の公開設定と確認

Apache の実行ユーザー(www-data)にWordPress サイトディレクトリの所有権を設定します。

yuu@web2:/contents/www/html$ sudo chown -R www-data.www-data /contents/www/html/wordpress/

WordPress のインストール先ディレクトリ名を/wordpress から/blog に変更して、所有権がwww-data のまま、変わっていないことを確認します。このフォルダ名はサイト公開時のurl をドメイン名/blog とする予定なので変更するだけで、お好みです。

yuu@web2:/contents/www/html$ sudo mv wordpress/ blog/
[sudo] yuu のパスワード:
yuu@web2:/contents/www/html$ ls -la
合計 28
drwxr-xr-x 3 root root 4096 2月 15 10:38 .
drwxr-xr-x 3 root root 4096 2月 15 10:24 ..
drwxr-xr-x 5 www-data www-data 4096 2月 12 16:00 blog
-rw-r–r– 1 root root 13 2月 13 17:24 index.html
-rw-r–r– 1 root root 233 2月 13 11:54 index.html.bak
-rw-r–r– 1 root root 17 2月 14 23:00 info.php
-rw-r–r– 1 root root 576 2月 13 11:20 item_list_new.php

Windows PC のweb ブラウザから、サーバーipアドレス/blog で接続してみます。
WordPress の設定開始画面がでればOKです。
現在、日本の自宅で稼働しているサーバーからWordPress に着いてもコンテンツをこのサーバーへの移行を予定しており、ここから先のWordPress の設定は移行方法を確認後に実施します。

カテゴリー: サーバー | タグ: , | コメントする

Ubuntu 20.04でサーバー構築 7:Apacheドキュメントルートの変更

1.Apacheドキュメントルートの作成

増設したRAID1アレイを /contents としてマウントし、この中にApacheのドキュメントルートとするフォルダを作成します。

yuu@web2:/$ cd /contents/
yuu@web2:/contents$ sudo mkdir www
yuu@web2:/contents$ ls
lost+found www
yuu@web2:/contents$ sudo mkdir www/html
yuu@web2:/contents$ ls
lost+found www
yuu@web2:/contents$ ls ./www
html

2.テストファイルの準備

移動先のドキュメントルートに置く index.html ファイルを作成します。
echo でリダイレクトした処理はsudo を実行した一般ユーザー権限で実行されるため、直接 sudo echo ・・・としてもエラーになるのでteeを使います。

yuu@web2:/contents/www/html$ echo “Hello World!” | sudo tee index.html
[sudo] yuu のパスワード:
Hello World!

php の動作を確認するファイル、info.php を作成して以下のスクリプトを記述します。

<?php
phpinfo();

同様に、MySQLの動作を確認するファイルを作成します。

<?php
$user = “yuu”;
$password = “(パスワード)”;
$database = “network_items”;
$table = “item_list”;try {
$db = new PDO(“mysql:host=localhost;dbname=$database”, $user, $password);
echo “<h2>移送先ドキュメントルート表示テスト:テーブル item_list</h2><ol>”;echo “<h1>クエリ開始</h1><ol>”;foreach($db->query(“SELECT name FROM $table”) as $row) {
echo “<li>” . $row[‘name’] . “</li>”;
}echo “<h1>書き出し終了</h1><ol>”;

echo “</ol>”;
} catch (PDOException $e) {
print “Error!: ” . $e->getMessage() . “<br/>”;
die();
}

3.Apache2.conf の編集

/etc/Apache2/Apache2.conf を編集する前にバックアップを取っておきます。

yuu@web2:/etc/apache2$ sudo cp apache2.conf apache2.conf.bak

/etc/apache2/apache2.conf を編集します

yuu@web2:~$ sudo nano /etc/apache2/apache2.conf
# <Directory /var/www/>     ←コメントアウト
<Directory /contents/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

/etc/apache2/sites-available/000-default.conf を編集します。

yuu@web2:~$ sudo nano /etc/apache2/sites-available/000-default.conf
ServerAdmin webmaster@localhost
# DocumentRoot /var/www/html     ←コメントアウト
DocumentRoot /contents/www/html

変更した設定をApache2 に反映します。

yuu@web2:~$ sudo service apache2 reload

Windows PCのブラウザからサーバーPCにアクセスしてみます。変更したドキュメントルートのindex.html が表示されました。
同様にipアドレスの後ろに/info.php を付けてアクセスします。
ip アドレスの後ろに/item_list_new.php を付けてアクセスし、MySQLの動作を確認します。
以上でApacheのドキュメントルート変更と、LAMP スタックの動作確認が完了です。
/content はローカル環境にあるWindows PCからで使いやすいように/etc/samba/smb.conf を編集してsamba へ登録しておきます。

カテゴリー: サーバー | タグ: , , , , | コメントする

Ubuntu 20.04でサーバー構築 6:HDD2台をRAID1で増設

NASのHDDを容量の大きなHDDに換装したので2台の3TB HDDが余った。
DiskInfo で健康状態を確認してみる。特に問題なさそうで、使用時間もまだ1万時間にも届いていないので、準備中のUbuntu サーバーに実装してコンテンツ専用ドライブとして使うことにした。

2台のHDDをそれぞれドライブベイ2と4に取り付けてサーバーPCを起動。ドライブの認識を確認する。

yuu@web2:~$ ls -la /dev/sd*
brw-rw—- 1 root disk 8, 0 2月 11 18:20 /dev/sda
brw-rw—- 1 root disk 8, 1 2月 11 18:20 /dev/sda1
brw-rw—- 1 root disk 8, 2 2月 11 18:20 /dev/sda2
brw-rw—- 1 root disk 8, 16 2月 11 18:20 /dev/sdb
brw-rw—- 1 root disk 8, 17 2月 11 18:20 /dev/sdb1
brw-rw—- 1 root disk 8, 32 2月 11 18:20 /dev/sdc
brw-rw—- 1 root disk 8, 33 2月 11 18:20 /dev/sdc1
brw-rw—- 1 root disk 8, 34 2月 11 18:20 /dev/sdc2
brw-rw—- 1 root disk 8, 48 2月 11 18:20 /dev/sdd
brw-rw—- 1 root disk 8, 49 2月 11 18:20 /dev/sdd1

/dev/sdb と/dev/sdd が新しく追加したドライブ。
parted コマンドで/dev/sdb の全容量に対してRAID 用のパーティションを作成する。

yuu@web2:~$ sudo parted /dev/sdb
[sudo] yuu のパスワード:
GNU Parted 3.3
/dev/sdb を使用
GNU Parted へようこそ! コマンド一覧を見るには ‘help’ と入力してください。
(parted) unit GB
(parted) mklabel gpt
警告: いま存在している /dev/sdb のディスクラベルは破壊され、このディスクの全データが失われます。続行しますか?
はい(Y)/Yes/いいえ(N)/No? y
(parted) mkpart primary xfs 0% 100%
(parted) set 1 raid on
(parted) p
モデル: ATA WDC WD30EFRX-68E (scsi)
ディスク /dev/sdb: 3001GB
セクタサイズ (論理/物理): 512B/4096B
パーティションテーブル: gpt
ディスクフラグ:番号 開始 終了 サイズ ファイルシステム 名前 フラグ
1 0.00GB 3001GB 3001GB xfs primary raid(parted) quit
通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。yuu@web2:~$

/dev/sdd に対しても同様の処理を行う。
mdadm コマンドでRAID1 アレイを作成する。
–create /dev/md1 にはRAIDアレイの名前を指定する。md0は既にあるのでmd1。
–level=1       RAIDの種類はミラーリングのRAID1を指定する。
–raid-device=2 /dev/sdb1 /dev/sdd1  でRAID1を構成する2台のデバイスを指定。

yuu@web2:~$ sudo mdadm –create /dev/md1 –level=1 –raid-device=2 /dev/sdb1 /dev/sdd1
mdadm: partition table exists on /dev/sdb1
mdadm: partition table exists on /dev/sdb1 but will be lost or
meaningless after creating array
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store ‘/boot’ on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
–metadata=0.90
mdadm: partition table exists on /dev/sdd1
mdadm: partition table exists on /dev/sdd1 but will be lost or
meaningless after creating array
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
yuu@web2:~$

コマンドが完了すると2台のデバイス間での同期が始まる。
次に作成したRAID1アレイをフォーマットする。

yuu@web2:~$ sudo mkfs.ext4 /dev/md1
mke2fs 1.45.5 (07-Jan-2020)
Creating filesystem with 732533248 4k blocks and 183140352 inodes
Filesystem UUID: be7b4534-682d-40f7-bc5e-63311a6f08cd
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848, 512000000, 550731776, 644972544Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done

増設したドライブ、md1 が正常にRAID1として動作しているかどうかは以下のように確認できます。

yuu@web2:~$ cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md1: active raid1 sdd1[1] sdb1[0]  ←sdd1とsdb1でRAID1アレイを構築
2930132992 blocks super 1.2 [2/2] [UU] ←2台のドライブ共に正常動作
bitmap: 0/22 pages [0KB], 65536KB chunkmd0 : active raid1 sda2[0] sdc2[1]
1952856064 blocks super 1.2 [2/2] [UU]
bitmap: 1/15 pages [4KB], 65536KB chunkunused devices: <none>

増設したRAID1アレイを使用できるようにマウントします。
始めにマウントするためのディレクトリを作り、そこにマウントします。
このドライブにはweb公開用のデータなどを入れる予定なので、ディレクトリ名は”contents”としました。

yuu@web2:~$ sudo mkdir /contents
yuu@web2:~$ sudo mount /dev/md1 /contents

マウントされていることを確認します。

yuu@web2:~$ sudo ls -la /
合計 4194392
drwxr-xr-x 21 root root 4096 2月 13 00:12 .
drwxr-xr-x 21 root root 4096 2月 13 00:12 ..
lrwxrwxrwx 1 root root 7 8月 1 2020 bin -> usr/bin
drwxr-xr-x 4 root root 4096 2月 6 05:17 boot
drwxr-xr-x 2 root root 4096 2月 5 22:10 cdrom
drwxr-xr-x 3 root root 4096 2月 12 14:55 contents
drwxr-xr-x 19 root root 4520 2月 11 20:09 dev
drwxr-xr-x 100 root root 4096 2月 12 15:11 etc
drwxr-xr-x 4 root root 4096 2月 9 22:29 home
lrwxrwxrwx 1 root root 7 8月 1 2020 lib -> usr/lib
lrwxrwxrwx 1 root root 9 8月 1 2020 lib32 -> usr/lib32
lrwxrwxrwx 1 root root 9 8月 1 2020 lib64 -> usr/lib64
lrwxrwxrwx 1 root root 10 8月 1 2020 libx32 -> usr/libx32
drwx—— 2 root root 16384 2月 5 22:09 lost+found
drwxr-xr-x 2 root root 4096 8月 1 2020 media
drwxr-xr-x 2 root root 4096 8月 1 2020 mnt
drwxr-xr-x 2 root root 4096 8月 1 2020 opt
dr-xr-xr-x 180 root root 0 2月 11 18:20 proc
-rw-r–r– 1 root root 1391 2月 9 11:51 q
drwx—— 5 root root 4096 2月 11 09:16 root
drwxr-xr-x 32 root root 980 2月 12 14:15 run
lrwxrwxrwx 1 root root 8 8月 1 2020 sbin -> usr/sbin
drwxr-xr-x 6 root root 4096 2月 5 22:57 snap
drwxr-xr-x 2 root root 4096 8月 1 2020 srv
-rw——- 1 root root 4294967296 2月 5 22:23 swap.img
dr-xr-xr-x 13 root root 0 2月 11 18:20 sys
drwxrwxrwt 13 root root 4096 2月 13 00:09 tmp
drwxr-xr-x 14 root root 4096 8月 1 2020 usr
drwxr-xr-x 14 root root 4096 2月 10 10:26 var

/contents の中を確認します。

yuu@web2:~$ ls -la /contents
合計 24
drwxr-xr-x 3 root root 4096 2月 12 14:55 .
drwxr-xr-x 21 root root 4096 2月 13 00:12 ..
drwx—— 2 root root 16384 2月 12 14:55 lost+found

web公開用のコンテンツなどはこのドライブ置くことにします。

OS起動時に増設したRAIDドライブが自動的にマウントする設定をします。
HDDのUUIDを確認します。

yuu@web2:/$ sudo blkid /dev/md127
/dev/md1: UUID=”be7b4534-682d-40f7-bc5e-63311a6f08cd” TYPE=”ext4″

/etc/fstab を編集して以下の1行を書き加えます。各項目の間はTABで区切ります。

UUID=be7b4534-682d-40f7-bc5e-63311a6f08cd  /contents  ext4  defaults

保存終了してOSを再起動し、増設したドライブが自動でマウントされていることを確認します。

yuu@web2:~$ df
Filesystem 1K-blocks Used Available Use% Mounted on
udev 7877580 0 7877580 0% /dev
tmpfs 1584304 2644 1581660 1% /run
/dev/md0 1921155304 7692188 1815803932 1% /
tmpfs 7921508 0 7921508 0% /dev/shm
tmpfs 5120 0 5120 0% /run/lock
tmpfs 7921508 0 7921508 0% /sys/fs/cgroup
/dev/sda1 523248 7988 515260 2% /boot/efi
/dev/md1 2883089592 90164 2736476396 1% /contents
/dev/loop0 56832 56832 0 100% /snap/core18/1944
/dev/loop1 71680 71680 0 100% /snap/lxd/19188
/dev/loop2 73088 73088 0 100% /snap/lxd/16099
/dev/loop3 31872 31872 0 100% /snap/snapd/10707
/dev/loop4 56832 56832 0 100% /snap/core18/1988
/dev/loop5 31872 31872 0 100% /snap/snapd/11036
tmpfs 1584300 0 1584300 0% /run/user/1000
カテゴリー: サーバー | タグ: , , , , | コメントする

NETGEAR ReadyNAS102のHDD換装

もう7年以上もネットワークオーディオ、写真データ保存、その他データの保存に使用しているNETGEARのNAS、ReadyNAS102 のハードディスク容量が不足したので大きな容量のHDDに換装した。換装手順を忘れていてもたついたので備忘録として記録することにした。

ReadyNAS102は騒音が増えることも無く、ハードもトラブルフリーで全く問題ない。データ転送速度は遅いがミュージックサーバーとデータバックアップが主目的なので性能的に大きな不満は無く、今後も長く(壊れるまで)使う予定。換装するHDDは現状と同じWDのRED。容量は8TBに上げることにした。

ReadyNAS102はホットスワップに対応しているので、NAS の電源を落とさずに作業が出来る。最初に片側のHDDを8TBの物に差し替える。
フロントパネルはマグネットでしまっているだけなので開けるのは容易。
HDDの取り出しは各ドライブの下部にある四角い穴に指を入れて押し下げるとドライブ取り出しレーバーが起きるので、このレバーを更に上に上げるようにしてドライブを引き出す。この四角い穴の上部には樹脂成形で下向き三角表示があるが気が付きにくい。また、穴の奥に押し下げのストップスイッチがある。スイッチが左側にあるときはロックされていて、押し上げることが出来ないので、スイッチを右側にずらしてから操作する。

NAS から取り出したHDDはHDDをNAS に実装するためのフレームに取り付けられている。HDDをフレームから取り外すには、再度、HDD前面の四角い穴を同様に下方向に押し下げながらHDDを後方にずらして。樹脂製のサポートとHDDを金属のフレームから引き抜く。
HDDを交換後、逆の手順でHDDをフレームに取り付け、NAS 本体に挿入する。NAS への挿入後は取り出しレバーを押し下げて確実にロックする。

新しいHDDを装着するとドライブの同期が始まる。状況はReadyNAS の管理ソフト、RAIDar から確認できる。
片側の同期が完了した状態では容量の少ない方の3TBのRAID1として動作している。
最初のHDD同期の完了を確認後、もう片方のHDDも同様に8TBに入れ替える。
2本のHDD共に同期が完了。片側で約9時間を要した。
2台のHDD共に8TBとなったが、この時点でシステムの認識は換装前の3TB。
既存容量で2台のHDDの同期が完了すると、ドライブ容量、8TBが認識され、容量を拡大する為の再構築が始まる。20時間前後掛かるとの見込み。
再構築が完了すると8TBのRAID1として使用可能。

一連の作業におよそ3日間を要したが、作業方法は難しいことも無く完了。

カテゴリー: サーバー | タグ: , , , | コメントする

Ubuntu 20.04でサーバー構築 5:LAMPスタックの構築

注:DigitalOceanチュートリアルを参考にしています。

1.UFWを起動する

UFW のインストールを確認して有効化します。

yuu@web2:~$ sudo ufw status
状態: 非アクティブ
yuu@web2:~$ sudo apt install ufw
パッケージリストを読み込んでいます… 完了
依存関係ツリーを作成しています
状態情報を読み取っています… 完了
ufw はすでに最新バージョン (0.36-6) です。
ufw は手動でインストールしたと設定されました。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
yuu@web2:~$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
ファイアウォールはアクティブかつシステムの起動時に有効化されます。
yuu@web2:~$

2.Apacheをインストールしてファイアウォールを設定

apt でApache2をインストールします。

yuu@web2:~$ sudo apt install apache2

インストールは特に問題なく終了します。
HTTPトラフィックを許可する為にファイアウォールを設定します。
UFW で利用可能なアプリケーションを確認します。

yuu@web2:~$ sudo ufw app list
利用可能なアプリケーション:
Apache
Apache Full
Apache Secure
OpenSSH
yuu@web2:~$

リストアップされている3種類のApache の意味は次の通りです。

  • Apache:ポート80(暗号化されていないwebトラフィック)のみを開く
  • Apache Full:ポート80(暗号化無し)とポート443(暗号化)の両方を開く
  • Apache Secure:ポート443(TLS/SSL 暗号化トラフィック)のみを開く

まだHTTPSのトラフィックを許可するTLS/SSL証明書が無いのでポート80での接続のみを許可します。

yuu@web2:~$ sudo ufw allow in “Apache”
ルールをアップデートしました
ルールをアップデートしました(v6)

変更を確認します。

yuu@web2:~$ sudo ufw status
状態: アクティブTo                       Action          From
—                         ——             —-
Apache               ALLOW      Anywhere
Apache (v6)      ALLOW      Anywhere (v6)

ポート80へのトラフィックはファイアウォールを通して許可されています。
Apacheが正常に動いていればwebブラウザでデフォルトのwebページを確認できます。

3.MySQLのインストール

apt でMySQLをインストールします。

yuu@web2:~$ sudo apt install mysql-server

MySQLにプリインストールされているセキュリティスクリプトを実行します。

yuu@web2:~$ sudo mysql_secure_installation

最初に、VALIDATE PASSWORD COMPONENT を使用するかどうかの質問がでます。
下記では使用しないように設定しています。

yuu@web2:~$ sudo mysql_secure_installation

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: n
Please set the password for root here.

New password:
Re-enter new password:
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

他の質問には全て「Yes」としました。

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Success.Normally, root should only be allowed to connect from
‘localhost’. This ensures that someone cannot guess at
the root password from the network.Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Success.

By default, MySQL comes with a database named ‘test’ that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
– Dropping test database…
Success.

– Removing privileges on test database…
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Success.

All done!

MySQLのコンソールにログインできることを確認します。

yuu@web2:~$ sudo mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.23-0ubuntu0.20.04.1 (Ubuntu)Copyright (c) 2000, 2021, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

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

mysql>

MySQLコンソールを終了します。

mysql> exit
Bye

以上でMySQL サーバーをインストール出来ました。

4.PHPのインストール

LAMPスタックでPHPはMySQLのデータからApache を通してダイナミックコンテンツを生成、表示する働きをします。
php 単体に加えて、PHPがMySQLと通信するためのモジュール(php-mysql)、及びApache がPHPファイルを処理するためのライブラリ(libapache2-mod-php)が必要です。これらのパッケージを一度にインストールします。

yuu@web2:~$ sudo apt install php libapache2-mod-php php-mysql

インストールが完了したらPHPのバージョンを確認します。

yuu@web2:~$ php -v
PHP 7.4.3 (cli) (built: Oct 6 2020 15:47:56) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

これでLAMPスタックが構築されているはずです。

5.Apache からPHP スクリプトの動作確認

PHPのスクリプトがApacheで動作するする事を確認します。
Apacheの公開ドキュメントルートディレクトリ、/var/www/html にPHPのテストファイルを作成します。

yuu@web2:~$ sudo nano /var/www/html/info.php

info.php に以下のスクリプトを記述してファイルを保存します。

?php
phpinfo();

Windows PC のwebブラウザからサーバPCのipアドレスの後ろに/info.php を付けてアクセスします。次のような画面が表示されればPHPは正常に動作しています。
作成したinfo.php ではサーバーやPHPに関する詳細情報が確認できるので、セキュリティの為に確認が完了したらファイルを削除しておきます。

yuu@web2:~$ sudo rm /var/www/html/info.php

6.PHP とMySQL の接続確認

MySQL にテスト用のデータベースを作成し、PHPから接続してApache でwebに表示できる事を確認します。
MySQL に接続してテスト用のデータベース”network_items”を作成。

yuu@web2:~$ sudo mysql
[sudo] yuu のパスワード:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.23-0ubuntu0.20.04.1 (Ubuntu)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

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

mysql> CREATE DATABASE network_items
-> ;
Query OK, 1 row affected (0.27 sec)

mysql> SHOW DATABASES;
+————————–+
| Database                         |
+————————–+
| information_schema   |
| mysql                              |
| network_items             |
| performance_schema |
| sys                                   |
+————————–+
5 rows in set (0.02 sec)

作成したデータベース”network_items”のユーザー登録をしてこのデータベースに対する完全な権限を付与します。

mysql> CREATE USER ‘yuu’@’%’ IDENTIFIED WITH mysql_native_password BY ‘(パスワードを記入)‘;
Query OK, 0 rows affected (0.33 sec)

mysql> GRANT ALL ON network_items.* TO ‘yuu’@’%’;
Query OK, 0 rows affected (0.24 sec)

“item_list” と言う名前でテスト用のテーブルを作成します。

mysql> CREATE TABLE network_items.item_list (
-> item_id INT AUTO_INCREMENT,
-> name VARCHAR(255),
-> PRIMARY KEY(item_id)
-> );
Query OK, 0 rows affected (0.98 sec)

作成したテーブルに適当な情報を入れて、出来上がったテーブルを確認します。

mysql> INSERT INTO network_items.item_list (name) VALUES (“JUPITER”);
Query OK, 1 row affected (0.27 sec)

mysql> INSERT INTO network_items.item_list (name) VALUES (“MERCURY”);
Query OK, 1 row affected (0.23 sec)

mysql> INSERT INTO network_items.item_list (name) VALUES (“ReadyNAS”);
Query OK, 1 row affected (0.22 sec)

mysql> INSERT INTO network_items.item_list (name) VALUES (“N-70AE”);
Query OK, 1 row affected (0.18 sec)

mysql> INSERT INTO network_items.item_list (name) VALUES (“web2”);
Query OK, 1 row affected (0.19 sec)

mysql> SELECT * FROM network_items.item_list;
+———-+—————–+
| item_id | name                |
+———-+—————–+
| 1              | JUPITER         |
| 2             | MERCURY      |
| 3             | ReadyNAS       |
| 4             | N-70AE            |
| 5             | web2                 |
+———+——————+
5 rows in set (0.00 sec)

MySQL のコンソールを終了します。

mysql> exit
Bye

次にitem_list の内容をweb に表示するためのテスト用スプリクトを/var/www/html に作成します。

yuu@web2:~$ sudo nano /var/www/html/item_list.php
<?php
$user = “yuu”;
$password = “(パスワードを記入)”;
$database = “network_items”;
$table = “item_list”;

try {
$db = new PDO(“mysql:host=localhost;dbname=$database”, $user, $password);
echo “<h2>表示テスト:テーブル item_list</h2><ol>”;

echo “<h1>クエリ開始</h1><ol>”;

foreach($db->query(“SELECT name FROM $table”) as $row) {
echo “<li>” . $row[‘name’] . “</li>”;
}

echo “<h1>書き出し終了</h1><ol>”;

echo “</ol>”;
} catch (PDOException $e) {
print “Error!: ” . $e->getMessage() . “<br/>”;
die();
}

Windows PC のwebブラウザからサーバPCのipアドレスの後ろに/item_list.php を付けてアクセスします。次のような画面が表示されればPHPは正常に動作しています。

これでLAMPスタックが構築できました。

カテゴリー: サーバー | タグ: , , , , | コメントする

Ubuntu 20.04でサーバー構築 4:sambaのインストール

1.インストールとユーザー登録

家庭LANの中で、通常作業で使用するWindows PCとサーパートとの間でファイルをやりとりするに為にsambaをインストールします。

yuu@web2:~$ sudo apt install samba

sambaのインストールが完了したらsambaのユーザーを登録してパスワードを設定します。ユーザーは予めこのサーバーに登録されているユーザーである必要があります。

yuu@web2:~$ sudo pdbedit -a yuu
new password:
retype new password:

登録が完了すると登録ユーザー情報が表示されます。
サーバーを再起動してsambaの状態を確認します。

yuu@web2:~$ sudo service smbd status

インストールしたそのままで、boot時の自動起動が設定されているようです。
sambaのconfigファイルをデフォルトのままでもWindows PCからサーバーPC(WEB2)が見えるようになりました。まだ何も設定していないのでサーバーPC内のフォルダを見ることは出来ません。

2.共有フォルダーの作成

sambaでのファイル共有を一般に開放することは無いので必ずしも共有ディレクトリを作る必要は無いのですが、非公開ファイルとweb上に公開するファイルのやりとりを区別するために共有ファイルを作ります。
share フォルダは /home の下に作りました。
chmod コマンドで /home/share フォルダーのアクセス権限を変更します。

uu@web2:~$ sudo mkdir /home/share
yuu@web2:~$ sudo ls /home
share yuu
yuu@web2:~$ sudo chmod 777 /home/share
yuu@web2:~$ sudo ls -la /home
合計 16
drwxr-xr-x 4 root root 4096 2月 9 22:29 .
drwxr-xr-x 20 root root 4096 2月 9 11:51 ..
drwxrwxrwx 2 root root 4096 2月 9 22:29 share
drwxr-xr-x 4 yuu yuu 4096 2月 6 22:03 yuu
yuu@web2:~$

3.フォルダー共有の設定

(1)ネットワークインターフェイスの確認

yuu@web2:~$ sudo ip address show

サーバーに2つ有るLANポートの内、enp2s0f0 を使用しています。
ip アドレスは、192.168.11.65/24。
この情報を以下の設定で使用します。

(2)smb.conf の編集

yuu@web2:~$ sudo nano /etc/samba/smb.conf

(3)[global] セクションへの追記
文字化けを防ぐためにキャラクターセットを追加。
workgroupe 名はWindows PC からサーバーが見えているので取り合えず変更無し。

#====================== Global Settings =======================

[global]
dos charset = CP932   # 追記
unix charset = UTF-8   # 追記
## Browsing/Identification ###

# Change this to the workgroup/NT-domain name your Samba server will part of
workgroup = WORKGROUP

# server string is the equivalent of the NT Description field
server string = %h server (Samba, Ubuntu)

Networking の項目を以下のように編集する。

#### Networking ####

# The specific set of interfaces / networks to bind to
# This can be either the interface name or an IP address/netmask;
# interface names are normally preferred
; interfaces = 127.0.0.0/8 eth0
interfaces = 192.168.11.0/24 enp2s0f0 # 追記

(4)ホームディレクトリの設定
[homes]セクションのコメントアウトを解除して編集します。

# [homes]セクションのセミコロンを削除して有効化する
[homes]
comment = Home Directories # セミコロンを外す
# 次の行のセミコロンを外す
browseable = no# By default, the home directories are exported read-only. Change the
# next parameter to ‘no’ if you want to be able to write to them.
; read only = yes# File creation mask is set to 0700 for security reasons. If you want to
# create files with group=rw permissions, set next parameter to 0775.
; create mask = 0700
create mask = 0755    # 追記# Directory creation mask is set to 0700 for security reasons. If you want to
# create dirs. with group=rw permissions, set next parameter to 0775.

; directory mask = 0700
directory mask = 0755    # 追記

# By default, \\server\username shares can be connected to by anyone
# with access to the samba server.
# Un-comment the following parameter to make sure that only “username”
# can connect to \\server\username
# This might need tweaking when using external authentication schemes
valid users = %S    # セミコロンを外す

(5)共有ディレクトリの設定
smb.conf ファイルの末尾に共有ディレクトリの設定セクションを追記します。

[share]
path = /home/share
writable = yes
guest ok = yes
guest only = yes
create mode = 0777
directory mode = 0777

(6)設定の有効化
編集した smb.conf を保存終了してsamba を再起動。
正常に起動していることを確認します。smb.conf に構文間違いがあるとエラーになって再起動が失敗します。

yuu@web2:~$ sudo systemctl restart smbd nmbd
yuu@web2:~$ sudo service smbd status

(7)ファイアウォール(ufw)の設定
ufw を利用可能なアプリケーションを確認します。

yuu@web2:~$ sudo ufw app list
[sudo] yuu のパスワード:
利用可能なアプリケーション:
Apache
Apache Full
Apache Secure
OpenSSH
Samba

samba の利用を登録します。

yuu@web2:~$ sudo ufw allow in “Samba”
ルールを追加しました
ルールを追加しました (v6)

ufw への登録を確認します。

yuu@web2:~$ sudo ufw status
状態: アクティブTo Action From
— —— —-
Apache ALLOW Anywhere
OpenSSH ALLOW Anywhere
Samba ALLOW Anywhere
Apache (v6) ALLOW Anywhere (v6)
OpenSSH (v6) ALLOW Anywhere (v6)
Samba (v6) ALLOW Anywhere (v6)

(8)Windows PCからの共有接続確認
Windows PC のエクスプローラからネットワークを確認すると、サーバーPCとその下のshare フォルダーが見えます。この段階でshare フォルダーには読書可能です。
自分のホームディレクトリを共有するにはログインが必要です。
エクスプローラから、\\サーバー名\ユーザ名 でログインします。
ログインすると、サーバーPCの下に、ユーザーディレクトリが現れ、読書可能になります。

(9)Ubuntu起動時の自動実行設定
OSを再起動したときにsambaを自動実行するように設定します。

yuu@web2:~$ sudo systemctl enable smbd nmbd
Synchronizing state of smbd.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable smbd
Synchronizing state of nmbd.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable nmbd

 

カテゴリー: サーバー | タグ: , , | コメントする