PHPxさくらサーバー デプロイ攻略＿サーバー側環境編

 **↓前回**

https://qiita.com/dnote/items/5f22f43a9b4158caff97

---

## あらすじ
- [x]  開発環境側で.envファイルを使用した情報の読み取り
- [x]  サーバーへのファイル移動(各自`www`直下へフォルダごとファイルを送信されたし)
- [ ]  サーバー側で開発環境同等の実行環境を作る **(本稿)**


:::note warn 
 CHK：アップロード忘れずに！
composer.json
::: 
 
https://qiita.com/dnote/items/5f22f43a9b4158caff97

ここではさくらのレンタルサーバー側の環境構築を行っていきます。
具体的には下記↓
- composer & phpdotenvのインストール
- .envファイルの作成が必要です。
(FTPで直接送信 or サーバーコントロールパネル上で作成する方法もあります。)

を行います。やりたいことは一緒。でも方法は違います。
ここからはSSH接続を利用した、コマンドベースの作業となります。

## SSH接
公式で紹介されている方法を確認しましょう。

https://help.sakura.ad.jp/rs/2247/

ターミナルを起動します。(私はpowershell)
上記ページに従いパスワード認証で接続してみます。
```powershell:console
#.sshフォルダに移動しておく
PS C:\Users\user-name> cd ~/.ssh
PS C:\Users\user-name\.ssh> 

#接続開始 
PS C:\Users\user-name\.ssh> ssh username@xxxxxxx.sakura.ne.jp

#パスワードを入力しEnter(入力した文字は表示されない)
username@xxxxxxx.sakura.ne.jp's password: 
Last login: Sat Jan 13 05:41:36 2024 from fp276e1590.tcga202.ap.nuro.jp
FreeBSD 13.0-RELEASE-p13 (GENERIC) #0: Mon Aug 29 19:52:47 UTC 2022

#下記表示が出ていれば成功です。
Welcome to FreeBSD!

```

ここから先表示されるものはサーバー側の情報です。`%`と表示されているはずです。
## composerのインストール＠サーバー
### サーバー内のホームディレクトリに移動
>`%`より後ろがユーザーの入力するコマンドです。
```powershell:console
% cd ~
```
### composerをインストール
(コピペしないこと)
```powershell:console
% php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
% php -r "if (hash_file('sha384', 'composer-setup.php') === 'e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
% php composer-setup.php

All settings correct for using Composer
Downloading...

Composer (version 2.6.6) successfully installed to: /home/udon-dsuke/composer.phar
Use it: php composer.phar

% php -r "unlink('composer-setup.php');"

```
:::note warn
`Installer corrupt`が表示されたら、インストールコードが古い可能性あり。公式に記載されているコマンドを使用してもう一度トライしてましょう。
https://getcomposer.org/download/
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3562770/6e61088b-8130-3e68-821a-edd2c465dab6.png)

**<確認>**
`ls`コマンドを入力して、その階層内のフォルダ/ファイルを表示してみます。
```powershell:console
% ls
MailBox         db              ports           sblo_files      www
composer.phar   log             sakura_pocket   tmp
```
composer.pharがあればOKです。

次に単純に`composer`で呼び出したいのでファイル名を変えます。
```powershell:console
% mv composer.phar composer

#変更結果を確認
% ls
MailBox         db              ports           sblo_files      www
composer        log             sakura_pocket   tmp
```
あとは`composer`とコマンドを入力したときに
> これのことっすよね？呼び出しときます！

としておきたいので、PATHの通っている階層にこのファイルを配置してあげます。
ホーム直下のbinフォルダがあれば、PATHが通っている設定(デフォルトでそうらしい)なので、
```powershell:console
#ホームディレクトリに移動
% cd ~ 
#デフォルトではbinフォルダがないので作ってあげて…
% mkdir bin
#composerをbin内に移動
% mv composer bin/composer

#確認
#@home
% ls
MailBox         db              ports           sblo_files      www
bin             log             sakura_pocket   tmp
#@bin
% cd bin
% ls
composer
```
composerコマンドが実行できることを確認する。

```powershell:console
#バージョンを確認するコマンド
% composer about
Composer - Dependency Manager for PHP - version 2.6.6
Composer is a dependency manager tracking local dependencies of your projects and libraries.
See https://getcomposer.org/ for more information.
```

:::note warn
コマンドないよ！と言われたら

**①PATHの通っていない階層にcomposerが配置されている可能性がある**

```powershell:console
% composer about
composer: Command not found.

#pathの通っているフォルダを確認してみる
% cd ~
% .cshrc
.cshrc: Command not found.
% cat .cshrc
# $FreeBSD: src/share/skel/dot.cshrc,v 1.14.6.1 2008/11/25 02:59:29 kensmith Exp $
#
# .cshrc - csh resource script, read at beginning of execution by each shell
#
#～色々表示される～

set path = (/sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin $HOME/bin)
```
`set path=(~)`に記載がない場合はフォルダを作るかpathの追加が必要です。
`さくらレンタルサーバー`　`composer` `path` `設定`などで検索すると色々出てきます。
<br>

**②(PATHは通っている)環境設定がまだ反映されていない可能性がある**
この場合いったんSSHを接続しなおします。
```powershell:console
% exit
logout
Connection to udon-dsuke.sakura.ne.jp closed.

#~再接続~
Welcome to FreeBSD!
```
```powershell:console
% composer about
Composer - Dependency Manager for PHP - version 2.6.6
Composer is a dependency manager tracking local dependencies of your projects and libraries.
See https://getcomposer.org/ for more information.
```
sshをいったん切り接続しなおすとうまくいった。
:::

これでいつでも`composer`コマンドが呼び出せるようになりました。
- ホームディレクトリに戻る


### composerのローカルインストール
公開用フォルダ内のプロジェクトフォルダ`www/bookmark`を例とします。ここにindex.phpがあります。
```powershell:console
#プロジェクトフォルダに移動
% cd www
% ls
bookmark
% cd bookmark
#cd www/bookmark　でもOK

#installを実行
% composer install --optimize-autoloader --no-dev
Installing dependencies from lock file
Verifying lock file contents can be installed on current platform.
Package operations: 6 installs, 0 updates, 0 removals
  - Downloading symfony/polyfill-php80 (v1.28.0)
  - Downloading symfony/polyfill-mbstring (v1.28.0)
  - Downloading symfony/polyfill-ctype (v1.28.0)
  - Downloading phpoption/phpoption (1.9.2)
  - Downloading graham-campbell/result-type (v1.1.2)
  - Downloading vlucas/phpdotenv (v5.6.0)
  - Installing symfony/polyfill-php80 (v1.28.0): Extracting archive
  - Installing symfony/polyfill-mbstring (v1.28.0): Extracting archive
  - Installing symfony/polyfill-ctype (v1.28.0): Extracting archive
  - Installing phpoption/phpoption (1.9.2): Extracting archive
  - Installing graham-campbell/result-type (v1.1.2): Extracting archive
  - Installing vlucas/phpdotenv (v5.6.0): Extracting archive
Generating optimized autoload files
6 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
```
コマンド注意

プロジェクトフォルダ内に開発環境同様のvendorフォルダがあればOKです。
```powershell:console
% cd bookmark
% ls
README.md               dsSqlSimple.php         image-7.png             result_login.php
bm_add.php              funcs_v1.php            image.png               result_registration.php
bm_delete.php           image-1.png             img                     user_main.php
bm_edit.php             image-2.png             index.php               userbm.php
bm_edit_exec.php        image-3.png             js                      vendor　※これ
composer.json           image-4.png             login_registration.php
composer.lock           image-5.png             logout.php
css                     image-6.png             registration.php
```
:::note 
phpdptenvについて
`composer.json`を置いておくと
そこに記載された`require`のパッケージが自動でインストールされます。
開発環境と同じ構成がこれで勝手に作れます。※php関係のパッケージのみ
:::

これで実行環境としては開発環境と同じ状態になったはずです。

## .envファイルの編集(別の手段でアップ済みの場合は省略可)
プロジェクトフォルダに移動して
```powershell:console
#プロジェクトフォルダに移動
% cd www/bookmark

#vi で.envという名前でファイルを開く
vi .env
```

**<モード切り替え>**
コマンド実行モード:`Esc`
文字入力モード：`i`
**<カーソル移動>**
上下左右:`hjkl`
**<その他>**
文字削除：`x`
保存なし終了：`:q!`
上書き保存して終了：`:wq`

最終的に.envファイルの設定値がサーバー側の情報になっていれば、動作するはずです。


## アクセスしてみる
> http(s)://****.sakura.ne.jp/app_name
:::note warn
うまく動かない。。。よくある間違い
- 変数のキーの綴りが間違っている
- データベース名が違う
- データベース内にテーブルをインポートし忘れている