Laravelプロジェクトをsourcetreeを使ってエックスサーバーで任意のドメインで公開する方法
手順
sourcetreeのパレットの「ローカル」を選択し「ローカルリポジトリを作成」をクリック。自身のPCのプロジェクトフォルダを指定してOKすると、プロジェクトが開く(この時点ではまだ、プロジェクトフォルダ内のファイル、フォルダはインデックスされてない。コミット&プッシュはまだしない)
エックスサーバーにsshログインし、任意の場所にgit/project.gitを作成し、ベアリポジトリ(共有リポジトリ)を作成
sourcetreeを立ち上げ2で作成したローカルリポジトリを開き、右上の設定(歯車マーク) > リモート を選択し、リモートリポジトリのパスのURLを入力すると、ローカルとリモートリポジトリが連携される
エックスサーバーにログインし、該当のドメインまで移動。(public_htmlなどのフォルダがある場所) もともとのpublic_htmlフォルダはリネームしておき避けておく
$ git clone /home/yourname/git/project1.git project1
で共有リポジトリをドメイン配下のフォルダにクローン
共有リポジトリ配下のhooksフォルダに移動 vi post-receive でファイルを作成して、指定のテキストを打ち込んで保存し権限を変更する
sourcetreeからコミット&プッシュしてみて、ドメイン配下のプロジェクトフォルダ内にLaravelプロジェクトが生成されてるのを確認
$ ln -s /home/sample/sample.xsrv.jp/test-app/public /home/sample/sample.xsrv.jp/public_html
sample.xsrv.jpがブラウザで確認できるか確認 表示されてたらOK
Fatal error: require(): Failed opening required ‘/project/vendor/autoload.php’ (include_path=’.:’) in ・・・
というエラーが出たら vendor フォルダがエックスサーバーの Laravelにインストールされていないので、composer install を実行する
Your lock file does not contain a compatible set of packages. Please run composer update.というエラーが出たら、Problem1〜読んでいく。 – laravel/serializable-closure v1.0.5 requires php ^7.3|^8.0 -> your php version (7.2.34) does not satisfy that requirement.と表示されてたらエックスサーバーのPHPのバージョンが古いことが原因。エックスサーバーの管理画面のPHPのverを変更してもターミナルでphp -vしてもバージョンは変わらない。なのでhttps://blog-and-destroy.com/29755でphpのバージョンを7.4に変更インストールPATH を変更
ターミナルを一度閉じて、再度sshログインして、php -vでバージョン確認。バージョンが変わってたら成功したので、プロジェクトフォルダに行き、composer update
500 SERVER ERROR と表示されていたら、.envファイルが無いことが原因。エックスサーバーでMySQL設定。.envファイルの12〜16行目を編集し、FTPソフトなどを使ってファイルをLaravelプロジェクトフォルダにアップロード
コメント