- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2020-11-17T20:59:32+00:00","default:mizutu","mizutu")
#author("2020-12-09T08:03:20+00:00","default:mizutu","mizutu")
[[忘備録]] > サーバー構築4
* 自宅サーバー構築4 [#ad36896d]
| Linuxによるサーバー構築メモ4|
2020/10/23 Ubuntu 20.04LTS 発表から半年経過したので、次のサーバー移行に備えて Hyper-V仮想環境に Ubuntu 20.04LTS をインストールして現行サーバーのデーター移行テストを行った。~
2020/11/18 ファンレス本体「XS36V4」にSSD(480GB)を装着して Ubuntu 20.04LTS をインストール 現行サーバー(徳島)の移行準備をする。
#contents
* Ubuntu 20.04LTS [#jd27eabe]
Ubuntu 20.04 LTSのサーバー版インストールイメージ、「ライブインストーラー版」を使ってインストール。~
途中インストーラーのアップデートができる。日本対応が若干追加されていてよりスムーズになった。~
~
モジュール名:ubuntu-20.04.1-live-server-amd64.iso~
** net-tools をインストール [#h5367100]
- ubuntu20.04LTS インストール完了、アップデート後「net-tools」を入れておく。
$ sudo apt update
:
$ sudo apt upgrade
:
$ sudo apt install net-tools
** 「固定IPアドレス」を設定する [#bb53b0e1]
- ネットワーク設定ファイル「/etc/netplan/00-installer-config.yaml」
DHCPサーバーからネットワーク設定を取得するよう設定した場合
network:
ethernets:
enp2s0f2:
addresses: []
dhcp4: true
version: 2
- 元の設定ファイルを保存しておく。
$ cd /etc/netplan/
$ sudo cp 00-installer-config.yaml 00-installer-config.yaml.disabled
- 「00-installer-config.yaml」をviなどを使って変更
$ sudo vi /etc/netplan/00-installer-config.yaml
network:
version: 2
ethernets:
enp2s0f2:
addresses: [192.168.0.200/24]
gateway4: 192.168.0.1
nameservers:
addresses: [192.168.0.1]
search: []
optional: true
※以下のネットワーク設定の記述例。~
ネットワークインタフェース:enp2s0f2~
アドレス:192.168.0.200~
ネットマスク:255.255.255.0(ビット指定だと「/24」)~
ゲートウェイ:192.168.0.1~
DNS:192.168.0.1~
&color(red){※yamlファイル記述のインデントに注意すること。TABでなくスペースで数にも要注意。};
- 設定の反映~
$ sudo netplan apply
- IPアドレスの確認
$ ifconfig
enp2s0f2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.200 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::82ee:73ff:fe95:5f21 prefixlen 64 scopeid 0x20<link>
ether 80:ee:73:95:5f:21 txqueuelen 1000 (Ethernet)
RX packets 643 bytes 560193 (560.1 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 421 bytes 38273 (38.2 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 108 bytes 8464 (8.4 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 108 bytes 8464 (8.4 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
複数の「YAML」ファイルを「/etc/netplan/」に配置すると、ファイル名の辞書順で読み込んで設定がマージされ設定項目が重複する場合は、後から読み込まれたファイルが前に読み込まれたファイルの設定を上書きする。よって、「01」「50」で始まるファイルより、「99」で始まるファイルに書かれた設定が優先される、ということになる。~
~
出典:https://linuxfan.info/ubuntu-1804-server-static-ip-address
** SSHサーバー [#ze4af75f]
Ubuntu20.04では、インストール時にサーバーをインストールできる。
- SSHサーバーの確認
$ dpkg -l | grep ssh
openssh-serverが含まれていればOK。
- SSHサーバーのインストール~
$ sudo apt-get install openssh-server
- SSHサーバーの起動しているかの確認
$ ps -ax | grep ssh
ii libssh-4:amd64 0.9.3-2ubuntu2.1 amd64 tiny C SSH library (OpenSSL flavor)
ii openssh-client 1:8.2p1-4ubuntu0.1 amd64 secure shell (SSH) client, for secure access to remote machines
ii openssh-server 1:8.2p1-4ubuntu0.1 amd64 secure shell (SSH) server, for secure access from remote machines
ii openssh-sftp-server 1:8.2p1-4ubuntu0.1 amd64 secure shell (SSH) sftp server module, for SFTP access from remote machines
ii ssh-import-id 5.10-0ubuntu1 all securely retrieve an SSH public key and install it locally
** sambaサーバー [#m1d53a8c]
- samba インストール
$ sudo apt update
$ sudo apt install samba
- samba 設定
$ sudo vi /etc/samba/smb.conf
[gloval]
workgroup = XXXXXX
[share]
path = /var/samba/fshare
read only = no
browseable = yes
- 共有フォルダ作成
$ sudo mkdir -p /var/samba/fshare
$ sudo chmod 777 /var/samba/fshare
$ sudo pdbedit -a ユーザー名
- samba 再起動
$ sudo systemctl restart smbd nmbd
** LAMPサーバ (Linux Apache MySQL PHP) [#h620d0c7]
- tasksel を用いて LAMP サーバをインストール
$ sudo apt install tasksel
$ sudo tasksel install lamp-server
- インストールの確認
$ apachectl -v
$ mysql --version
$ php --version
- Webブラウザで実行
http://サーバーIP/
** Apache2 (Webブラウザ) [#w1698d6b]
ドキュメントルートを/var/www/htmlから変更せずに使用する場合。
- ログインしているアカウントで作成・変更できるようにパーミッションを変更。
$ sudo chgrp -R グループ名 /var/www
$ sudo chmod g+w /var/www
$ sudo chmod g+w /var/www/html
- index.phpの作成
$ cd /var/www/html
$ vi index.php
<?php
phpinfo();
?>
- index.phpが作成されているか確認
$ cat index.php
- ブラウザで確認
http://(LinuxのIPアドレス)/index.php
*** 404,401エラーのリダイレクトを可能にする。 [#q1ada3a6]
- 設定ファイルの変更
$ sudo vi /etc/apache2/apache2.conf
<Directory />
Options FollowSymLinks
# AllowOverride None
AllowOverride All
Require all denied
</Directory>
:
<Directory /var/www/>
# Options Indexes FollowSymLinks
# AllowOverride None
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
- Apache2 再起動~
$ sudo /etc/init.d/apache2 restart
- 参考サイト:[[カスタムエラーレスポンス - Apache HTTP サーバ バージョン 2.4>+https://httpd.apache.org/docs/2.4/ja/custom-error.html]]
** MySQL設定 [#te1313fd]
- MySQLコマンドおさらい
ローカルコンソールからMySQLサーバに接続
$ sudo mysql -u root
状態表示
mysql> status
ユーザ一覧表示
mysql> select user,host from mysql.user;
データベース一覧表示
mysql> show databases;
特定のユーザーの権限確認
mysql> show grants for 'ユーザ名'@'ホスト名';
終了
mysql> exit
- その他 コマンド覚書
新しくユーザを作成
CREATE USER 'ユーザ名'@'ホスト名' IDENTIFIED BY 'パスワード';
ユーザ名は、'ユーザ名'@'ホスト名'のように表す。ホスト名はMySQLへ接続するホスト名。サーバパソコンの場合はlocalhostとなる。ネットワークアドレスを指定する場合は192.168.1.%などのようにする。
@以下ホスト名を省略した場合は、'ユーザ名'@'%'として扱われ、どのホストからも接続できる。
ユーザ一覧を表示
mysql> SELECT user, host FROM mysql.user;
作成したユーザに権限を付与
mysql> CREATE USER文でユーザを作成した場合、初期設定では権限「なし」の状態。GRANT文を使って、権限を付与する。
mysql> GRANT [権限] ON [適用対象のデータベース].[適用対象のテーブル] TO 'ユーザ名'@'ホスト名' IDENTIFIED BY 'パスワード';
mysql> FLUSH PRIVILEGES;
[権限]の部分には、設定したい権限を列挙する。[適用対象の~]には、権限を適用する対象を指定。例えば適用の単位に「データベース」を指定できる権限であれば、データベース名を指定して設定することができる。「全範囲(グローバル)」を指定したい場合は、「*.*」と指定。FLUSH PRIVILEGESを実行することで、権限の変更をデータベースに反映する。
ユーザの権限を確認する
mysql> SHOW GRANTS FOR 'ユーザ名'@'ホスト名';
ユーザの権限を削除する
mysql> REVOKE [権限] ON [適用対象のデータベース].[適用対象のテーブル] FROM 'ユーザ名'@'ホスト名';
mysql> FLUSH PRIVILEGES;
新規データベースの作成
mysql> CREATE DATABASE [任意のデータベース名];
データベースの削除
mysql> DROP DATABASE [任意のデータベース名];
rootユーザーからの接続はパスワード要求がなくなった。ので、若干の設定変更が必要となる。
- 新しくユーザを作成
mysql> CREATE USER 'ユーザ名'@'localhost' IDENTIFIED BY 'パスワード';
- 作成したユーザに権限を付与
mysql> GRANT ALL ON *.* TO 'ユーザ名'@'localhost' WITH GRANT OPTION;
- 作成したユーザに権限を付与 &color(red){(以前の版からの構文変更に注意)};
mysql> GRANT ALL ON *.* TO 'ユーザ名'@'localhost';
mysql> FLUSH PRIVILEGES;
- DBの文字コードは「UTF8」になっている。
mysql> status
--------------
mysql Ver 8.0.21-0ubuntu0.20.04.4 for Linux on x86_64 ((Ubuntu))
Connection id: 9
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 8.0.21-0ubuntu0.20.04.4 (Ubuntu)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8mb4
Conn. characterset: utf8mb4
UNIX socket: /var/run/mysqld/mysqld.sock
Binary data as: Hexadecimal
Uptime: 36 min 39 sec
Threads: 2 Questions: 27 Slow queries: 0 Opens: 145 Flush tables: 3 Open tables: 66 Queries per second avg: 0.012
** phpmyadmin (MySQLをWebから管理) [#s64b7862]
- phpmyadmin インストール
$ sudo apt install phpmyadmin
Webサーバの種類を聞かれるので「apache2」を選択。
dbconfig-commonで設定しますか?と聞かれるので「yes」を選択。続いてMySQLサーバ上の「phpmyadmin」ユーザのパスワードを聞かれるので2回入力。
- MySQLサーバー上でのphpmyadminユーザーの権限確認
mysql> SHOW GRANTS FOR 'phpmyadmin'@'localhost';
+--------------------------------------------------------------------+
| Grants for phpmyadmin@localhost |
+--------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'phpmyadmin'@'localhost' |
| GRANT ALL PRIVILEGES ON `phpmyadmin`.* TO 'phpmyadmin'@'localhost' |
+--------------------------------------------------------------------+
2 rows in set (0.00 sec)
- phpmyadminユーザーに管理や権限付加
mysql> GRANT ALL ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> SHOW GRANTS FOR 'phpmyadmin'@'localhost';
+---------------------------------------------------------------------------+
| Grants for phpmyadmin@localhost |
+---------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION |
| GRANT ALL PRIVILEGES ON `phpmyadmin`.* TO 'phpmyadmin'@'localhost' |
+---------------------------------------------------------------------------+
2 rows in set (0.00 sec)
- Webブラウザで実行
http://サーバーIP/phpmyadmin
phpmyadminのIDとパッケージをインストール時に入力したパスワードでログイン。
** webmin (Webブラウザでの管理) [#i887b529]
- webmin の導入
Webminのリポジトリを追加してwebminパッケージをインストール。
$ echo "deb http://download.webmin.com/download/repository sarge contrib" |sudo tee /etc/apt/sources.list.d/webmin.list
$ wget http://www.webmin.com/jcameron-key.asc -O - | sudo apt-key add -
$ sudo apt update -y
$ sudo apt install -y webmin
- webブラウザからアクセス
Linuxの管理ユーザとパスワードでログイン。
https://サーバーIP:10000
言語をJapanese(JA_JPUTF-8),Japanease ,yyyy/mm/dd(ie 2001/09/16) に変更。
** PHP7 設定ほか [#tfaa1b80]
- Soapの拡張をインストール
$ sudo apt install php-soap
- php.iniを変更
$ sudo vi /etc/php/7.2/apache2/php.ini
post_max_size = 32M
upload_max_filesize = 32M
allow_url_fopen = off
- aoache2再起動
$ sudo service apache2 restart
** xoopsの移行(テストのみ) [#vf41c205]
- &color(red){新サーバーにはxoops搭載をやめる。CMSは移行サポートが問題なので以後使用しないこととする。};
+ 空のデーターベースを作成。
+ データベースにバックアップを phpmyadmin でインポート
+ xoops.tar.gz を/var/www/htmlへ解凍
+ xoops_trust_path.tar.gz を/var/wwwへ解凍