#author("2021-05-27T03:38:48+00:00","default:mizutu","mizutu") [[忘備録]] > サーバー構築5 * 自宅サーバー構築5 [#cd958526] | Linuxによるサーバー構築メモ5| Intel® NUC キット BXNUC10I5FNHに1TB のSSDを搭載して、Ubuntu 20.04LTS をインストールし大阪サーバーの後継機とする。~ 同時にサイトの https化に挑戦する。~ #contents RIGHT:&size(12){※ 最終更新:2021/05/27 }; * Ubuntu 20.04LTS [#r64e28e3] Ubuntu 20.04 LTSのサーバー版インストールイメージ、「ライブインストーラー版」を使ってインストール。~ ~ モジュール名:ubuntu-20.04.2-live-server-amd64.iso~ ** net-tools をインストール [#zea20907] - ubuntu20.04LTS インストール完了、アップデート後「net-tools」を入れておく。 #codeprettify(){{ $ sudo apt update : $ sudo apt upgrade : $ sudo apt install net-tools }} ** 「固定IPアドレス」を設定する [#x5375a20] - ネットワーク設定ファイル「/etc/netplan/00-installer-config.yaml」 DHCPサーバーからネットワーク設定を取得するよう設定した場合 #codeprettify(){{ # This is the network config written by 'subiquity' network: ethernets: eno1: dhcp4: true version: 2 }} - 元の設定ファイルを保存しておく。 #codeprettify(){{ $ cd /etc/netplan/ $ sudo cp 00-installer-config.yaml 00-installer-config.yaml.disabled }} - 「00-installer-config.yaml」をviなどを使って変更 #codeprettify(){{ $ sudo vi /etc/netplan/00-installer-config.yaml network: ethernets: eno1: addresses: [192.168.3.203/24] gateway4: 192.168.3.1 nameservers: addresses: [192.168.3.1] search: [] optional: true version: 2 }} ※以下のネットワーク設定の記述例。~ ネットワークインタフェース:eno1~ アドレス:192.168.3.203~ ネットマスク:255.255.255.0(ビット指定だと「/24」)~ ゲートウェイ:192.168.3.1~ DNS:192.168.0.1~ &color(red){※yamlファイル記述のインデントに注意すること。TABでなくスペースで数にも要注意。}; - 設定の反映~ #codeprettify(){{ $ sudo netplan apply }} - IPアドレスの確認 #codeprettify(){{ $ ifconfig eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.3.203 netmask 255.255.255.0 broadcast 192.168.3.255 inet6 2001:a453:6346:100:1e69:7aff:fe6f:fbb8 prefixlen 64 scopeid 0x0<global> inet6 fe80::1e69:7aff:fe6f:fbb8 prefixlen 64 scopeid 0x20<link> ether 1c:69:7a:6f:fb:b8 txqueuelen 1000 (Ethernet) RX packets 75463 bytes 110054579 (110.0 MB) RX errors 0 dropped 54 overruns 0 frame 0 TX packets 15522 bytes 1098082 (1.0 MB) 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 164 bytes 13530 (13.5 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 164 bytes 13530 (13.5 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 }} ** SSHサーバー [#a5073e0a] Ubuntu20.04では、インストール時にサーバーをインストールできる。 - SSHサーバーが起動しているかの確認 #codeprettify(){{ $ 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サーバー [#ca643a8d] - samba インストール #codeprettify(){{ $ sudo apt update $ sudo apt install samba }} - samba 設定 #codeprettify(){{ $ sudo vi /etc/samba/smb.conf [gloval] workgroup = XXXXXX [share] path = /var/samba/fshare read only = no browseable = yes }} - 共有フォルダ作成 #codeprettify(){{ $ sudo mkdir -p /var/samba/fshare $ sudo chmod 777 /var/samba/fshare $ sudo pdbedit -a ユーザー名 }} - samba 再起動 #codeprettify(){{ $ sudo systemctl restart smbd nmbd }} ** LAMPサーバ (Linux Apache MySQL PHP) [#hd3d87de] - tasksel を用いて LAMP サーバをインストール #codeprettify(){{ $ sudo apt install tasksel $ sudo tasksel install lamp-server }} - インストールの確認 #codeprettify(){{ $ apachectl -v $ mysql --version $ php --version }} - Webブラウザで実行 #codeprettify(){{ http://サーバーIP/ }} ** Apache2 (Webブラウザ) [#hb7d9dd9] ドキュメントルートを/var/www/htmlから変更せずに使用する場合。 - ログインしているアカウントで作成・変更できるようにパーミッションを変更。 #codeprettify(){{ $ sudo chgrp -R グループ名 /var/www $ sudo chmod g+w /var/www $ sudo chmod g+w /var/www/html }} - index.phpの作成 #codeprettify(){{ $ cd /var/www/html $ vi index.php <?php phpinfo(); ?> }} - index.phpが作成されているか確認 #codeprettify(){{ $ cat index.php }} - ブラウザで確認 #codeprettify(){{ http://(LinuxのIPアドレス)/index.php }} *** 404,401エラーのリダイレクトを可能にする [#n623b38f] - 設定ファイルの変更 #codeprettify(){{ $ 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 再起動~ #codeprettify(){{ $ sudo /etc/init.d/apache2 restart }} - 参考サイト:[[カスタムエラーレスポンス - Apache HTTP サーバ バージョン 2.4>+https://httpd.apache.org/docs/2.4/ja/custom-error.html]] ** MySQL設定 [#m8a77f74] - MySQLコマンドおさらい #codeprettify(){{ ローカルコンソールからMySQLサーバに接続 $ sudo mysql -u root 状態表示 mysql> status ユーザ一覧表示 mysql> select user,host from mysql.user; データベース一覧表示 mysql> show databases; 特定のユーザーの権限確認 mysql> show grants for 'ユーザ名'@'ホスト名'; 終了 mysql> exit }} - その他 コマンド覚書 #codeprettify(){{ 新しくユーザを作成 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 [任意のデータベース名]; }} - MySQLサーバにログイン #codeprettify(){{ $ sudo mysql -u root }} - 新しくユーザを作成 #codeprettify(){{ mysql> CREATE USER 'ユーザ名'@'localhost' IDENTIFIED BY 'パスワード'; }} - 作成したユーザに権限を付与 &color(red){(以前の版からの構文変更に注意)}; #codeprettify(){{ mysql> GRANT ALL ON *.* TO 'ユーザ名'@'localhost'; mysql> FLUSH PRIVILEGES; }} - DBの文字コードは「UTF8」になっている。 #codeprettify(){{ 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から管理) [#ve45f6e6] - phpmyadmin インストール #codeprettify(){{ $ sudo apt install phpmyadmin Webサーバの種類を聞かれるので「apache2」を選択。 dbconfig-commonで設定しますか?と聞かれるので「yes」を選択。続いてMySQLサーバ上の「phpmyadmin」ユーザのパスワードを聞かれるので2回入力。 }} - MySQLサーバー上でのphpmyadminユーザーの権限確認 #codeprettify(){{ 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ユーザーに管理や権限付加 #codeprettify(){{ 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ブラウザで実行 #codeprettify(){{ http://サーバーIP/phpmyadmin phpmyadminのIDとパッケージをインストール時に入力したパスワードでログイン。 }} ** webmin (Webブラウザでの管理) [#ve25173b] - webmin の導入 Webminのリポジトリを追加してwebminパッケージをインストール。 #codeprettify(){{ $ 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ブラウザからアクセス #codeprettify(){{ Linuxの管理ユーザとパスワードでログイン。 https://サーバーIP:10000 言語をJapanese(JA_JPUTF-8),Japanease ,yyyy/mm/dd(ie 2001/09/16) に変更。 }} ** PHP7 設定ほか [#ncebfe9e] - Soapの拡張をインストール #codeprettify(){{ $ sudo apt install php-soap }} - php.iniを変更 #codeprettify(){{ $ sudo vi /etc/php/7.2/apache2/php.ini post_max_size = 32M upload_max_filesize = 32M allow_url_fopen = off }} - aoache2再起動 #codeprettify(){{ $ sudo service apache2 restart }} #br ** LAN内から自宅公開Webサーバーにアクセス [#gfab9913] LAN ないから公開webサーバーにアクセスする場合、名前解決ができない。YAMAHAルーターではそのための設定ができるが残念ながら徳島のNTTルーターではその機能がない。~ とりあえず「hosts」ファイルを編集して対応する。~ - 「メモ帳」を「管理者として実行」する。~ - c:\Windows\System32\drivers\etc にある hosts ファイルを開く。~ - 192.168.3.203 XXXXXX.jp などを追加。~ - これで、URLでLAN内からURLでアクセスできるようになる。 ** 更新履歴 [#yb030f09] - 2021/05/26 初版 #br * 参考資料 [#r1046633] - [[LAN内から自宅公開Webサーバーにアクセスする方法>+https://wwq.mydns.jp/467/]]~ #br