ばっちこいPlesk

**Pleskとは**
---
VPS/専用サーバーで利用できるコントロールパネル。

- **特徴**
[コマンド操作が不要です](https://academy.gmocloud.com/plesk/20190214/6230)(殆ど)。マウス操作で色々出来ちゃいます。
取得済のドメインを追加して、
既存のGitlabなどのリポジトリをペッと貼り付けるだけでほぼ完了です。

～～～～～　終　～～～～～

ではなく、こんなにも便利なpleskでの実際に運用する上での注意点や解決法を備忘録的に記載しておきます。

※この記事の前提：API側とFE側に分かれたリポジトリをアップロード、ドメインもAPIとFEで取得しています。


- **問題発生**
フロントエンドのリポジトリの追加をしたのに画面が表示されない（　＾ω＾）・・・
→ソースコードに本番ドメインを記載していなかった
ドアホすぎて自分のことどついたろかと思いましたが皆様はどうか忘れないでください。。。
↓みたいにちゃんと記載してあるか確認必須です
``` axios.js
switch (hostname) {
    case "fe.production.jp":
            domain = 'api.production.jp'
            client = 'foo'
            break
    case "staging.jp":
                   略
}

こちらはaxios.jsの例(他にもdomain.jsとか他にも関連したファイルも要注意)

```





composerはどう使う？
---
後から記載するターミナルからの操作も可能ですが、ボタン一つで出来ます。
![composer.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3192195/48751b53-45a1-2065-bacb-1d9a58719416.png)
PHP composerをクリックすると下図がある画面に飛ぶので、Install or Update
クリックで出来ちゃいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3192195/e8bd1bcd-eac9-f968-f2bf-d4a88795cd3f.png)

※このとき、composer.json > require内に必要なパッケージの記載がされているか確認してください！

**SSHターミナル**
----
左メニューのExtensions > My extensions > SSH Terminal
![ssh teminal.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3192195/579ac6c0-6de5-0c48-586b-16fb701a1838.png)
これを使用して各種コマンド操作も可能です。

例えば、artisanコマンドを使用したい場合はターミナルでcdを使用してartisanファイルのあるディレクトリに移動して実行することが出来ます。

**Websites & Domains > PHP > include_path**から[PHPファイルのパスを確認](https://docs.plesk.com/ja-JP/obsidian/administrator-guide/%E3%82%A6%E3%82%A7%E3%83%96%E3%83%9B%E3%82%B9%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0/php-%E7%AE%A1%E7%90%86/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%8B%E3%82%89-php-%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B.76345/)することも出来ます
- Cron設定
**Websites & Domains > Scheduled Tasks > Add Tasks**から設定することが出来ます。
もちろんターミナルから``crontab -eやsystemctl status cron``などで状態を見ることも可能です。

**出たエラーについての対応**
---
**Websites & Domains > Files > logs**で``access_logやproxy_error_log``など様々なログを確認することができます。

- **エラー①** 
``
upstream timed out
``
調べてみるとNginxのエラーでした。
アップストリームがリクエストに応答する際に時間がかかり過ぎてしまい、その結果[アップストリーム](http://www2.matsue-ct.ac.jp/home/kanayama/text/nginx/node79.html)が既にリクエストの処理に失敗したと判断した場合に引き起こされるエラーだそうで。

⇒解決法
**Websites & Domains >  Apache & nginx Settings**に移動。
一番下にある``Additional nginx directives``に追加で記載をします。
⇒プロキシサーバーからの応答を読み取る為のタイムアウトを長くします。
```
proxy_connect_timeout 180s;
proxy_send_timeout 180s;
proxy_read_timeout 180s;

//Nginxでphp-fpmを使用している場合は下記も追加してください。
fastcgi_send_timeout 180s;
fastcgi_read_timeout 180s;
```

- **エラー➁**
``
Allowed memory size of xxxx bytes exhausted (tried to allocate xxx bytes) in /var/www
``
メモリリークです。cron設定がされている割にメモリが少なかったので引き起こされていました。

⇒解決法
**Tool&Settings>PHP settings>8.0.30 FastCGI application>php.ini**にて、memory_limit = 1024Mにするなどして対処。

- **エラーではないものの重要**
フロントに追加変更を加えてpleskでpull->deploy nowをしたものの確認しても変更が反映されていない・・・？

→**Websites & Domains >  Node.js**から``Run Script``をクリック→yarn buildといったコマンドを走らせ、``Restart App``をクリックしてみてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3192195/6dee0363-88ea-1f96-b6d4-d2736cc9e66d.png)

[感謝してもしきれないブログ](https://thundermiracle.com/blog/2020-06-14-plesk-actions-yarn/)
この時は現状打破に必死過ぎて調査していなかったのですが、pleskのpanel.logも見てみたいと思ってます。

最後に
---
pleskを触っていくうちにNginxの役割やphpの実行のされ方、ターミナルでのコマンドの使い方など学べたことが多くありました。

「マウス操作で楽に管理が出来ること」が特徴のコントロールパネルですが、
それでも作成したプロジェクトがどう動くのかは勉強し続けないとなと気が引き締まりました。

🐯参考
- [pleskフォーラム](https://talk.plesk.com/)
→pleskのフォーラムは結構盛り上がっていると感じています。
plesk以外でもwebサーバーの事などで勉強になる記事が多いのでオススメできます。

- [ぷれつく](https://www.pletk.com/plesklink.html)
→pleskとはなんぞやから基本操作まで

- [リバースプロキシとは](https://eset-info.canon-its.jp/malware_info/special/detail/201021.html)
→Nginxを使っていて、リバースプロキシって何？となったので。
    - ブラウザはリバースプロキシサーバにリクエストをするので、大元のwebサーバの特定が難しくなること
    - リバースプロキシに対して複数台のwebサーバを割り当て可能なので負荷分散できる
ということらしいです。