#author("2020-10-18T07:40:09+00:00","default:mizutu","mizutu")
#author("2020-10-18T07:41:30+00:00","default:mizutu","mizutu")
[[忘備録]] > サーバー構築4
* 自宅サーバー構築4 [#ad36896d]
| Linuxによるサーバー構築メモ4|
 Ubuntu 20.04LTS 発表から半年経過したので、次のサーバー移行に備えて Hyper-V仮想環境に Ubuntu 20.04LTS をインストールして現行サーバーのデーター移行テストを行った。
#contents
* Ubuntu 20.04LTS [#jd27eabe]
 Ubuntu 20.04 LTSのサーバー版インストールイメージ、「ライブインストーラー版」を使ってインストール。~
 ~
モジュール名:ubuntu-20.04.1-live-server-amd64.iso~

** 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' IDENTIFIED BY 'パスワード';
 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' IDENTIFIED BY 'XXXXXX' 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]
+ 空のデーターベースを作成。
+ データベースにバックアップを phpmyadmin でインポート
+ xoops.tar.gz を/var/www/htmlへ解凍
+ xoops_trust_path.tar.gz を/var/wwwへ解凍

<br>