Ubuntu 20.04にXAMPP 7.4.6-0をインストールする方法

今回はUbuntu 20.04にXAMPP 7.4.6-0をインストールする方法をまとめていきたいと思います。

## 環境
Ubuntu 20.04 LTS

## 1.XAMPPをダウンロードする
まずはXAMPP 7.4.6-0をダウンロードします。
以下のリンクをクリックして、ダウンロードしましょう。
[ダウンロードリンク（ここをクリックするとダウンロードします）](https://www.apachefriends.org/xampp-files/7.4.6/xampp-linux-x64-7.4.6-0-installer.run)

### 留意点
通常、ダウンロードディレクトリは以下の通りです。

**louisのところは自分のUbuntuユーザー名が入ります。**

```
/home/louis/ダウンロード
```

~~これ以降のコマンドでは、louisのところは適宜変えて下さい。~~

## 2. root権限に変更する
root権限に変更します。

```
sudo -s
```

## 3. XAMPPファイルに実行権限を付与する
XAMPPファイルに実行権限を付与します。

```
chmod +x ~/ダウンロード/xampp-linux-x64-7.4.6-0-installer.run
```

## 4. インストール画面を開く
GUIのインストール画面を開きます。

```
sudo ~/ダウンロード/xampp-linux-x64-7.4.6-0-installer.run
```

## 5.「NEXT」をクリックする
XAMPP Developer Filesのチェックのまま「NEXT」をクリックします。

## 6. チェックを外し「NEXT」をクリックする
Learn more...Bitnami のチェックを外し「NEXT」をクリックします。

## 7. インストールする
画面に従って、インストールしましょう。

## 8.　完了後、チェックを外し「Finish」
インストールが完了したら、Launch XAMPPのチェックを外して「Finish」します。

## 9. lamppフォルダの所有者を自分に変える
このままだと`opt/lampp`フォルダの所有者はrootで書き換えができないので、所有者をコマンドで自分に変更します。

```
chown -R louis:louis /opt/lampp
```

`louis`と`/opt/lampp`の間には空白が入ります。

### 【注意】
上記のコマンドの**louisは自分のUbuntuユーザー名に変えて下さい。**

## 10. パーミッションを777に変える
`/opt/lampp`フォルダのパーミッションをファイルの書き込みが可能なパーミッション777にしてあげます。

```
chmod -R 777 /opt/lampp
```

## 11. XAMPPを起動する
XAMPPは以下のコマンドでコントロールパネルが起動します。

```
sudo /opt/lampp/manager-linux-x64.run
```

その後、Go To Applicationをクリックするとサーバーを動かすか聞かれるので、Start Serversをクリックして、XAMPPを起動しましょう。

※通常、コマンドだけで起動するには、`/opt/lampp/lampp start`と入力します。

## 12. セキュリティの設定をする
XAMPPはそのままだとセキュリティがかなり問題です。なので設定をしましょう。

### 12-1.セキュリティ設定のコマンドを打つ
セキュリティの設定をするために以下のコマンドを打ちましょう。

```
sudo /opt/lampp/xampp security
```

### 12-2. ２回とも［YES］のまま、Enterを押す
２回とも［YES］のまま、Enterを押します。

### 12-3. MySQL／phpMyAdmin のパスワードを入力する
MySQL／phpMyAdminのパスワードを入力します。打ったら確認のためにもう一度パスワードを入力します。

### 12-4. ［YES］のまま、Enterを押す
［YES］のまま、Enterを押します。

### 12-5. MySQLのrootパスワードを入力する
MySQLのrootパスワードを入力します。打ったら、もう一度確認のためにパスワードを入力して下さい。

### 12-6. FTPのパスワードを入力する
サーバーProFTPDへFTP接続するときのパスワードを入力します。またパスワードを再度入力します。

### 12-7.Done.を確認する
XAMPP:  Done.を確認してセキュリティ設定が終わったことを確認します。

## 13.パーミッションを変更する
Worning表示を防ぐために、以下のコマンドでパーミッションを設定します。

```
chmod 600 /opt/lampp/etc/my.cnf
```

## 14.　作業はこれで終わり
作業はこれで終わりです。お疲れ様でした。
以下のURLにアクセスできます。
http://localhost

## XAMPPのドキュメントルートの場所
XAMPPのドキュメントルートの場所は以下になります。

```
/opt/lampp/htdocs
```

## phpmyadminを開くには
phpmyadminにアクセスするには、以下のURLをクリックします。
ユーザー名は「root」、パスワードを先程の12. セキュリティの設定をするのときに打ったパスワードを入力します。
http://localhost/phpmyadmin/

## XAMPPをアンインストールするには
`/opt/lampp`に移動します。

```
cd  /opt/lampp
```

次に下のコマンドを打って、アンインストールのメッセージウインドウを開きましょう。

```
sudo  ./uninstall
```

YESをクリックするとアンインストール作業が始まります。

## XAMPPを外部公開するには
XAMPPをテスト環境で外部公開するには、ngrokを使います。

### 1. ngrokを以下のコマンドでインストールする
以下のコマンドを打ってngrokをインストールします。

```
snap install ngrok
```

### 2. アカウントを登録する
このままでは外部に公開しても８時間の制限があります。アカウント登録してしまいましょう。
以下のリンクにアクセスします。
[ngrokサインアップ画面](https://dashboard.ngrok.com/signup)
その後、名前とメールアドレスとパスワードを押して登録しましょう。

### 3. ログインする
先程入力した情報でログインしましょう。
[ngrokログイン画面](https://dashboard.ngrok.com/login)

### 4. ngrok本体とアカウントを紐付ける
ログインしたら、インストールしたngrok本体とアカウントを紐づけます。setup&installationのタブをクリックして、2. Connect your accountのところにあるコマンドを下のように打ちましょう。

```
ngrok authtoken [文字列]
```

Authtoken saved to configuration file: /root/.ngrok2/ngrok.ymlという表示が出たら、アカウントとの紐づけは完了です。

### 5. ポートを解放する
以下のコマンドを打ってポートを解放しましょう。

```
ngrok http 80
```

### 6. Forwardingの右にあるURLをブラウザで開く
ポート解放後、ngrokの情報が表示されます。Forwardingの右にあるURLを開きましょう。

```
curl http://xxxxxxxx.ngrok.io
```

※xxxxxxxxはランダムな文字列です。
起動確認をしたら、これで終了です。お疲れ様でした。

## 2回目以降起動する場合
２回目以降起動する場合は11. XAMPPを起動するのコマンドを打ってボタンを押します。その次にXAMPPを外部に公開するにはの3. ログインする以降の手順をして下さい。

## 参照
[XAMPPをLinuxにインストールする](http://z377pier.s377.xrea.com/linux_xp/xampp_lx.html)

[xampp for linux コントロールパネル表示方法](https://watermargin.net/programming/xampp/xampp-for-linux-%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB%E3%83%91%E3%83%8D%E3%83%AB%E8%A1%A8%E7%A4%BA%E6%96%B9%E6%B3%95/)

[一言Ubuntu: xamppをアンインストールする,Linux](http://hitokotoubuntu.blogspot.com/2019/08/xampplinux.html)

[ngrokをubuntu18.04上にインストール](https://qiita.com/RayDoe/items/8a68f40d165819b82463)