Git IT備忘録 Laravel サーバ構築

git Laravelで引っ越しの備忘録

投稿日:

自分の備忘録です。正直自分にわかるようにしか書いていません。

真似て事故っても責任は持てませんのでご了承ください。でも何かの参考になれば幸いです。

 

開発環境は自席WindowsPCのXAMPP

本番環境は本番サーバ機Linux/Apache/DB2/PHP/Laravel

 

バージョン管理はGitを使って、本番サーバ機の/opt直下にベアリポジトリを作り、/var/www直下にApacheのドキュメントルートがある。

hookを使ってWindowsPCからPUSHしたときに、/var/www直下の本番からPULLするように仕掛ける。

 

これで問題なく動いていたが、作っていたアプリをAdminLTEというのを使っていたせいか、ちょっと自由度が低くて気になっていた。

このたびフロントはBootstrap4だけを使って画面を作ろうと改良した。

 

その道のりは大変で、かなりの箇所を直すことになるだろう。

さらに、開発側はnothing to commit状態なのに、本番機のドキュメントルートでgit statusをすると変なファイルがいっぱい未コミット状態で残っている。

それも前々から気になっていた。

 

こうなると、私の性格上は一度リフレッシュしたい気分。気持ち悪いし。

バックアップを取ったうえで、新しいソースだけを残して、ベアリポジトリも、リポジトリも全部ぶっ壊すことにした。

 

 

XAMPPのバーチャルホストで新アプリを開発

とりあえずAdminLTEから脱却してBootstrap4のみに載せ替える。

最悪失敗したときのことを考えて元の環境はそのまま、XAMPPのバーチャルホストを使って別テスト環境を使って作り直す。

旧環境はC:\xampp\htdocsで、新環境はC:\xampp\htdocs2にした。

やはりかなりのフォルダを削除することになった。

 

バックアップをとる

とりあえずXAMPPのアプリデータの旧と新をまるまるバックアップを取っておく。

本番とテストとではデータベース等のconfig設定が少し違って.gitignoreで無視するようにしてるので、本番にあるそれ系のデータも避難しておく。

 

案内する

本番側のデータをぶっ壊すので、今日一日使えないぞと案内する。

 

開発側をお引越し

C:\xampp\htdocsのデータを完全クリアして、htdocs2のデータを移行した。

この中にはgitリポジトリは入れていない。gitの呪縛は.gitフォルダがあるかだけの違いなので、.gitを引っ越ししないか削除すればいい。

これで完全にまっさらからスタート。

後は新開発環境で動けばOK。

 

本番側をリフレッシュする

ドキュメントルート、ベアリポジトリ、gitユーザ全てを無かったことにする。

 

ルートに変身

ルートでないと何もできないので変身する

 

ドキュメントルートを空にする

ドキュメントルートはapp。それごと抹殺する。ソースは開発側のものを使うので、既存のものは用済み。全て電子のチリにする。

 

ベアリポジトリを削除

これも抹殺。

 

git用のユーザを削除

この際なのでユーザも削除してリフレッシュ。-rはホームディレクトリごと削除。

 

git用のユーザを再作成して、パスワードを設定する

ユーザを作る。以前の名前は気にくわなかったのでね。使わないけど-mでホームディレクトリも作る。パスワードも設定する。

 

ベアリポジトリを再作成

現在は/opt直下にいる。ここでベアリポジトリ用のディレクトリを再作成する。ベアリポジトリ用のディレクトリは.gitで終わる名前にする必要がある。

 

ベアリポジトリ用のディレクトリをgit_repoユーザ所有にする

ベアリポジトリはgit_repoユーザで扱えるようにする。exitでログアウト。

 

repo.gitディレクトリをベアリポジトリにする

もちろんgit_repoユーザでログインしなおしてから作業する。最初にcdでディレクトリの中に入ってからinitする。

 

 

開発側からプッシュ

 

新ソースにリポジトリを作る。

まずはcdで移動してから。git initコマンドでhtdocsはgitの管理下に置く

 

新ソースをコミットする

まずはコミットをしないと始まらない。初回だからかなりの量だけど気長に待つ。コミットメッセージは定番のfirst commitにした。

 

新ソースから本番サーバのベアリポジトリにプッシュする

git remoteでリモートリポジトリを登録して、プッシュする。これで本番サーバのベアリポジトリに開発ソースが入る。パスワードを聞かれるかもしれないが、それはさきほどpasswdで決めたパスワード。

 

本番機から再度操作

今度はドキュメントルートからベアリポジトリに登録されたデータを引き取る。

 

ドキュメントルートからクローン

まずはドキュメントルートを置くディレクトリに移動。次にcloneを行う。これでappディレクトリが出来て、その中に開発側で作ってベアリポジトリに送ったデータが一式登録される。

 

このとき

のようにappを指定せずにすると、repo.gitというベアリポジトリのrepoを引っ張ってきて、勝手にその名前でディレクトリが作られるので注意。

なので、mkdirで/var/www/appを作った上で、cd /var/www/appに移動し、git clone /opt/repo.gitとすると、/var/www/app/repo/本番ソースという構造のディレクトリになってしまう。

 

ブラウザでアクセス

さて本番ドキュメントルートにソースが設置されたのでブラウザからアクセスしてみる。

すると意味不明なエラー。これはLaravelだけの話かもです。

 

エラーその1

The stream of file “/var/www/app/storage/logs/laravel.log” could not be opened: failed to open stream: Permission denied

これはlogs直下のlaravel.logを開けないよと怒られている。といってもlogsディレクトリの中には何も入っていないので、logsを誰でもアクセスできるようにしよう。

 

管理者になり、storageに移動し、logsのパーミッション変更し、外部ユーザでも書き込み可能に変更する。

ところでこのファイルにアクセスしようとしているユーザは、apacheユーザになるのか。ならばファイルは全てapacheユーザにしてあげてもよいが、ちょっとその辺よく解らない。

外注の人はgitユーザを作ってその所有権に設定していたので、それでいいと思う。

後で見るとこのディレクトリの中にlaravel.logができていた。

 

エラーその2

The /var/www/app/bootstrap/cache directory must be present and writable.

これまた書き込みできないと怒られているようだ。

 

でcacheディレクトリへのパーミッションを変更した。

 

エラーその3

エラーメッセージ忘れた。IBM ODBCドライバーがおかしいとのこと。

調べてみたら/var/www/app/config内にあるdatabase.phpが消えていた。

これは.gitignoreで管理していたせいか、開発側からコピーされなかったようだ。

やれやれバックアップを取っておいてよかった。本番側にこれだけをftpでコピーして、本番用の項目をバックアップを見て直す。

 

 

一応開通

これで一応開通したみたい。

 

 

 

エラーその4

unserialise(): error at offset 0 of 40bytes

composer updateをすれば直るみたい。

 

 

エラーその5

.gitignoreが効かない

これはキャッシュが残っていることが原因らしい。

 

これで解決したみたい。

 

エラー6

相変わらず本番ドキュメントルート側でgit statusすると変なファイルが未コミットで存在して消えない

開発側から見ると特にコミットするべきものはなく、開発側からPUSHして、本番側からPULLしても変わらない。

これは本番側で、

  • git rm -r cached(キャッシュクリア)
  • composer update(コンポーザのアップデート)
  • エラー1と2のようなアクセスエラー

時にできたファイルの残骸か、何かだと思う。deleteとあったので自動的に削除したものなのかもしれない。

といはいえこれもステージング&コミットすれば問題ないかと思ったが、私のgitバージョン1.8環境だと、git add .してもステージングできなかった。

 

そんなときはgit add –allとすればいいみたい。

 

コミットとプッシュをしてベアリポジトリに上げておく。

これでgit statusをしてもクリーンになった。

開発側からプルしておく。

これで取得か削除か解らないが、ベアリポジトリと同期された。

 

 

最後にhookの設定をしておく

サーバ側で操作を行う。hooksディレクトリに移動してファイルを作る

 

中身は

とする。

 

こうすることにより、開発側でプッシュしたら、本番側に取り込まれる手はずになる。

しかし実際に開発側でプッシュしても反映しない。

本番側でプルするとしっかり反映される。これはいったいどういうことだ。

 

エラーその7

hooks内に作成したpost-receiveファイルの実行権がない

ベアリポジトリはgit_repoユーザでinitしたので、所有権はgit_repoユーザ。

開発からPUSHすると受けるベアリポジトリ側が自動実行するのがhooksという役割。

これはおそらくgit_repoユーザ権限で行うはず。

だけど、このpost-receiveファイルのパーミッションは644になっている。

6といえば読みこみと書き込みのはず。これでは実行ができない。

なのでパーミッションを替えてあげる。

 

これで上手くいく。ちなみに読みこみと実行だけでいいのだから、555でもいいはず。

まぁ555だとrootユーザでないと内容変更できないので755で良いと思う。

 

 

その他

Laravel-Excelがおかしくなった

私の環境はIBMi/AS400なので文字コードの関係上、Laravel-Excelデフォだと使えない。

なので簡単な文字変換の命令を一行追加している。

だが、さきほど行ったcomposer updateでLaravel-Excelがキレイに上書きされたみたいだ。

なのでその文字変換の命令を再度追加してあげたら治った。

 

 

 

スポンサーリンク




スポンサーリンク




-Git, IT備忘録, Laravel, サーバ構築

執筆者:


comment

Your email address will not be published. Required fields are marked *

関連記事

VB.NET OBJやBINやビルドの意味

ビルドはコンパイルとリンクの2段階の作業に分かれる。 ソースコードをアセンブリにするのがコンパイル。 アセンブリと周辺データを混ぜ合わせ動くプログラムを作るのがリンク。 OJBフォルダにはコンパイルさ …

AS400/IBMi ファイルの簡単編集 UPDDTA

STRDFUなど使って事細かく設定DFUファイルを作らなくても、深く考えずに編集するだけなら UPDDTA ライブラリ名/ファイル名 を使えば、すぐ編集画面に飛ぶ。編集方法はDFUと同じ。

Laravel SQLでWhereをIF文で追加したり外したりしたい

LaravelでSQL文を直で打ちたいときは、コントローラーの冒頭で

を宣言し、   こんな感じでSQL文を書く。 [cra …

FTPができるようにしておかないとな

そろそろバックアップを取らなければならないな。投稿数が伸び悩む中でも、これだけの投稿が一瞬で無くなってしまうのも、ぞっとする。もしバックアップ&復元が失敗したら、今書いている文字すら電子のチリとなって …

AS400/IBMi からデータを取得 ExcelVBA カラム名COLHDG取得編

注意 これは私の環境下における私の備忘録です。お使いの環境によっては内容が異なる場合があります。システム管理者でない方は絶対にやらないでください。システムにはログが残るものなので、万が一があればクビに …

Adsense広告


文字で検索

人気記事

なぜだか人気記事

読んでほしい順に