デプロイ方法

ドメインの取得

ドメイン取得をクリック


ドメインの設定

ドメイン設定をクリック
ドメイン名を入力
→無料独自SSLを利用する(推奨)にチェック
SSL=サーバー、ブラウザ間の暗号化

 

サブドメイン設定

サブドメイン設定をクリック
サブドメイン名を入力
→シンプルなURLを選択

 

SSH
SSH=ローカル環境、サーバー間の暗号化

公開鍵認証方式
公開鍵:サーバー上
秘密鍵:ローカル上に保存。SSH接続するときに使う


SSH設定をクリック
SSH設定】タブ:ON →【戻る】ボタン

SSH接続時のポート番号:10022

→公開鍵認証用鍵ペアの生成 タブをクリック
パスフレーズを入力
秘密鍵ファイルをファイル名を id_rsa(拡張子なし)として、C:\Users\ユーザー名\.sshに保存

⑤-1 git
【プッシュ】
ローカル環境→リモートリポジトリ
※エックスサーバー上に、このリモートリポジトリを作る。GitHubにアップする時などは、GitHubがリモートリポジトリとなる。

【プル】
リモートリポジトリ→本番環境

→Git for Windowsインストール
https://gitforwindows.org/

・エディタの設定について、確認画面:Visual Studio Codoを選択
・行末の改行に関するオプション:Checkout as-is, commit as-is にチェック

⑥Sourcetreeのインストール
Bitbucket:スキップ
Mercurial :チェックを外す
SSH読み込み:いいえ

 

⑤-2 git(コミット
注)コミットの前に、npm run build

→Sourcetree:+Create ⇒ Create a repository
→【参照】ボタン⇒プロジェクトディレクトリを選択
→作業ツリー⇒全てインデックスに追加

注).gitignoreファイルをチェックし、もし /public/buildが入っていれば、削除

 

⑤-3 git(プッシュ)
Sourcetree:
→ ツール/オプション
SSHキー:\Users\ユーザー名\.ssh秘密鍵を保存した場所)
SSHクライアント:OpenSSH
パスフレーズを入力
→右上よりターミナルをクリック⇒Git Bashツールが起動
※起動しない⇒【ツール/オプション/Git】
そして、Git Bashをデフォルトのターミナルとして使用にチェック

→コマンド入力
ssh アカウント名@ホスト名 -p 10022
アカウント名:サーバーパネルのサーバーID
ホスト名:サーバー情報
→【yes】を入力
パスフレーズを入力→接続完了

 

⑥エックスサーバーの中にリモートレポジトリを作る
→Sourcetreeからターミナル立ち上げ
SSH接続
 ls
 pwd
 mkdir git
  cd git
  git init(リモートリポジトリ作成コマンド)
  git init --bare ○○.git
   --bare:作業ディレクトリを持たない、リモート用のリポジトリを作る
 ○○.git:リモートリポジトリの名前
※間違えた場合:rm-rfフォルダ名

リポジトリ/リポジトリ設定を選択
リモート名:origin
url/パス:ssh://アカウント名@ホスト名:10022/リポジトリのパス
アカウント名:サーバーID
ホスト名:サーバー情報
リポジトリのパス:/home/ドメイン名/git/リモートリポジトリ名/
→OKボタン
→Sourcetree左上のプッシュボタン
→masterにチェックを入れ、プッシュボタンをクリック

⑦プル
ホームディレクトリ(接続後の場所)/ドメイン名/ public_html /サブドメイン

ここにプロジェクトフォルダを配置
↓しかし。。
https://サブドメイン名.deploy.com /プロジェクトフォルダ名/public

ssh接続後
cd ドメイン
cd public_html
cd サブドメイン
git clone /home/サーバーID/git/リモートプロジェクト名
※初回のみ、以後git pull

home以降のアドレスはSourcetreeのリポジトリ/リポジトリ設定で確認できる。

※もしエックスサーバーに接続していない状態でgit cloneを行うには、ssh~10022の部分も必要

.htaccessファイル
→プロジェクトが設置してある場所のひとつ上の階層に移動
(つまりサブドメインディレクトリの中)
→vi .htaccess
iキー:挿入モード
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(.*)$ プロジェクトディレクトリ名/public/$1 [QSA,L]
</IfModule>
→Escキー:編集モード終了
→:(コロン)を押し、続けて wキーとqキー
→ls -a コマンド

⑨データベースの設定
MySQL追加タブをクリック
→データベースの名前を登録
→追加するボタンをクリック
MySQLユーザー追加タブをクリック
MySQLユーザーIDとパスワードを設定
MySQL一覧タブをクリック
追加ボタンを押す(アクセス権所有ユーザの中に、今追加したユーザが入る)
→データベース/phpmyadminをクリック
設定した ユーザーとパスワードを入力

→.envファイル
※開発環境用と本番環境用で、別々のファイルを用意

Sourcetreeからターミナルを開く
サーバーに接続
プロジェクトディレクトリに移動
ls -a コマンドを実行
vi .envコマンドを実行
iキー
ローカル環境上のプロジェクトの.envファイルをコピー
DB_DATABASE⇒/MYSQL設定/データベースから確認DB_USER_NAME⇒/MYSQL設定/データベースから確認(アクセス権所有ユーザ)
DB_PASSWORD⇒ユーザを登録したときに使ったパスワード

APP_ENV=local⇒ APP_ENV=production 
APP_DEBUG=TRUE⇒APP_DEBUG=FALSE
LOG_LEVEL=debug⇒LOG_LEVEL=info 
他には、メール送信の設定・APIの設定などを変更

:wq
ls -a

 

⑩ライブラリインストール
PHPのバージョンを変える
PHP Ver.切替】をクリック

 

⑪Composer Installの実行

sshで接続
composer install
↓エラーがでた場合
which composer コマンドを実行
~/bin/composer という文字が返ってくる
php8.0 ~/bin/composer install

Compsoerエラー対策
"Your requirements could not be resolved to an installable set of packages."エラー

cd

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '906a84df04cea2aa72f40b5f787e49f22d4c2f19492ac310e8cba5b96ac8b64115ac402c8cd292b8a03482574915d1a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

mkdir -p $HOME/bin

mv composer.phar $HOME/bin/composer

echo $PATH

vi ~/.bashrc


下記コードを追加
export PATH=$HOME/bin:$PATH

escキーを押し、:wq

source ~/.bashrc

 echo $PATHを実行
binディレクトリが一番前に表示されるか確認

php8.0 $HOME/bin/composer install

 

⑫マイクレーション
プロジェクトがある場所まで移動

php artisan migrate
php8.0 artisan migrate

composer update
php8.0 artisan migrate

https://lara.deptest.com

 

常時SSL化設定
プロジェクトがある場所のひとつ上に移動
 ls -a
.htaccessを確認
vi .htaccess
iキー
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteRule ^(.*)$ forum/public/$1 [QSA,L]

 

シンボリックリンク
本番用のプロジェクトがあるディレクトリに移動
php artisan storage:link
php8.0 artisan storage:link

public/storage/avatar の中の画像が表示されない
パーミッション(権限)がない
public/storageに移動
ls -la
chmod go+xr avatar
ls -la

 

⑮デプロイ後の反映