はじめに
以前投稿したLaravelのインストール記事にて、WSL2上にLaravel Sailを構築しましたが、いきなりサーバのお引越しを行います。
今回はVMware上に建てた仮想マシンのUbuntu 24.04を使用し、Dockerの導入およびGitでCloneをしたソースでLaravel Sailの起動が出来る所までやりたいと思います。
環境
冒頭でも記載しましたが、今回はUbuntuの最新バージョンであるLTSの24.04を使用していきます。
OS情報
$ cat /etc/os-release
PRETTY_NAME="Ubuntu 24.04 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04 LTS (Noble Numbat)"
~省略~
Gitの設定
WSLのUbuntu 24.04ではgitをインストールすると記載していた方もいたのですが、今回私の環境には既にgitが導入されていましたので、インストールは不要みたいです。
Gitバージョン
$ git --version
git version 2.43.0
早速Git関連の設定をしていきます。
「user.name」、「user.email」は言わずもがなですが、「core.autocrlf」はチェックアウトの際に、Gitが勝手に改行コードがLFからCRLFに変換するのを防ぐ役割があります。
Gitアカウント設定
$ git config --global user.name [ユーザ名]
$ git config --global user.email [メールアドレス]
$ git config --global core.autocrlf false
以下のコマンドで設定を確認することができます。
$ git config user.name
$ git config user.email
GitのSSH設定とClone実行
単純にCloneするだけであればHTTPSでもよいかと思いますが、自身の管理しているソースコードという体ですので、SSHで一通りのやり取りができるようにしていきます。
SSHキーの作成
ユーザのホームディレクトリ配下にあるSSHディレクトリに移動し、ssh-keygenコマンドで鍵を作成します。
3回ほど何か聞かれますので、エンターを押して進めて行きます。
ここで作成された「~/.ssh/id_rsa.pub」を後ほどGit HUBのページに登録します。
$ cd ~/.ssh
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/XXX/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/XXX/.ssh/id_rsa
Your public key has been saved in /home/XXX/.ssh/id_rsa.pub
Git HUBへ公開鍵の登録
Git HUBの以下のページへアクセスすると、鍵の登録ページが表示されます。
以下の「Key」項目に先ほど作成した公開鍵の情報を貼り付けます。
Titleは任意でわかりやすい名前を付けておくとわかりやすいです。
「Add SSH key」を押すと、スマホアプリ側に認証のリクエストが飛びました。
スマホ側で番号を入力してあげると処理が正常に完了します。
Git HUBへの疎通確認
鍵の登録が無事にできたらSSHコマンドで試しにアクセスしてみます。
「successfully authenticated」と表示されれば正常に疎通できています。
$ ssh -T git@github.com
Hi XXX! You've successfully authenticated, but GitHub does not provide shell access.
Git HUBからソースのClone実行
コマンドは「git clone」を実行するだけです。
無事Laravelのプロジェクトがダウンロードできました。
$ git clone git@github.com:motuneko253/test-project-v10.git
Cloning into 'test-project-v10'...
remote: Enumerating objects: 103, done.
remote: Counting objects: 100% (103/103), done.
remote: Compressing objects: 100% (79/79), done.
remote: Total 103 (delta 6), reused 103 (delta 6), pack-reused 0
Receiving objects: 100% (103/103), 73.84 KiB | 491.00 KiB/s, done.
Resolving deltas: 100% (6/6), done.
$
$ cd test-project-v10
$ ls -la
合計 392
drwxrwxr-x 12 test01 test01 4096 7月 16 15:18 .
drwxr-x--- 18 test01 test01 4096 7月 16 15:18 ..
-rw-rw-r-- 1 test01 test01 258 7月 16 15:18 .editorconfig
-rw-rw-r-- 1 test01 test01 1097 7月 16 15:18 .env.example
drwxrwxr-x 8 test01 test01 4096 7月 16 15:18 .git
-rw-rw-r-- 1 test01 test01 186 7月 16 15:18 .gitattributes
-rw-rw-r-- 1 test01 test01 243 7月 16 15:18 .gitignore
-rw-rw-r-- 1 test01 test01 4109 7月 16 15:18 README.md
drwxrwxr-x 7 test01 test01 4096 7月 16 15:18 app
-rwxrwxr-x 1 test01 test01 1686 7月 16 15:18 artisan
drwxrwxr-x 3 test01 test01 4096 7月 16 15:18 bootstrap
-rw-rw-r-- 1 test01 test01 1882 7月 16 15:18 composer.json
-rw-rw-r-- 1 test01 test01 301825 7月 16 15:18 composer.lock
drwxrwxr-x 2 test01 test01 4096 7月 16 15:18 config
drwxrwxr-x 5 test01 test01 4096 7月 16 15:18 database
-rw-rw-r-- 1 test01 test01 1761 7月 16 15:18 docker-compose.yml
-rw-rw-r-- 1 test01 test01 248 7月 16 15:18 package.json
-rw-rw-r-- 1 test01 test01 1064 7月 16 15:18 phpunit.xml
drwxrwxr-x 2 test01 test01 4096 7月 16 15:18 public
drwxrwxr-x 5 test01 test01 4096 7月 16 15:18 resources
drwxrwxr-x 2 test01 test01 4096 7月 16 15:18 routes
drwxrwxr-x 5 test01 test01 4096 7月 16 15:18 storage
drwxrwxr-x 4 test01 test01 4096 7月 16 15:18 tests
-rw-rw-r-- 1 test01 test01 263 7月 16 15:18 vite.config.js
Dockerのインストール
gitと同様に既にDockerが導入されていました。インストールイメージに既に色々入っていて拍子抜けというかなんというか…。
Dockerバージョン
# docker -v
Docker version 27.0.3, build 7d4bcd8
PHPのインストール
まさかのgitやdockerはインストール済みなのに、PHPは入っていなかったのでインストールします…。
Laravelのインストール記事のLaravel10の構築内容と重複しているのでさらっと書いておきます。
PHPのインストールとバージョン確認
# apt -y install php8.3-fpm php-xml php-curl php-dom
# php -v
PHP 8.3.6 (cli) (built: Jun 13 2024 15:23:20) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.6, Copyright (c) Zend Technologies
with Zend OPcache v8.3.6, Copyright (c), by Zend Technologies
Composerのインストールとバージョン確認
# php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
# php -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
Installer verified
# php composer-setup.php
All settings correct for using Composer
Downloading...
Composer (version 2.7.7) successfully installed to: /root/composer.phar
Use it: php composer.phar
# php -r "unlink('composer-setup.php');"
# mv composer.phar /usr/local/bin/composer
# composer -V
Composer version 2.7.7 2024-06-10 22:11:12
PHP version 8.3.6 (/usr/bin/php8.3)
Run the "diagnose" command to get more detailed diagnostics output.
Laravelの起動
このままLaravelを起動しようとすると、「vendar」ディレクトリと「.env」ファイルが存在しておらず起動が出来ません。
「composer install」コマンドで必要な情報をインストールしてくれます。
composer install
~/test-project-v10$ composer install
Installing dependencies from lock file (including require-dev)
Verifying lock file contents can be installed on current platform.
Package operations: 112 installs, 0 updates, 0 removals
- Downloading doctrine/inflector (2.0.10)
- Downloading doctrine/lexer (3.0.1)
- Downloading symfony/polyfill-ctype (v1.30.0)
- Downloading webmozart/assert (1.11.0)
~省略~
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
INFO Discovering packages.
laravel/sail ............................................................. DONE
laravel/sanctum .......................................................... DONE
laravel/tinker ........................................................... DONE
nesbot/carbon ............................................................ DONE
nunomaduro/collision ..................................................... DONE
nunomaduro/termwind ...................................................... DONE
spatie/laravel-ignition .................................................. DONE
83 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
.envの作成
「.env.example」ファイルがサンプルですのでこちらをコピーすればひな形ができますが、今回は移行という体ですのでベースは元のサーバの「.env」をベースにしてしまいます。
$ cp -p .env.example .env
ユーザのdockerグループ追加
どのユーザでsailを起動するかにもよりますが、起動ユーザがdockerグループに所属していないと起動権限が足りずエラーとなります。
以下のコマンドでユーザにグループを追加してあげましょう。
# usermod -aG docker test01
# id test01
uid=1000(test01) gid=1000(test01) groups=1000(test01),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),100(users),114(lpadmin),984(docker)
プロジェクトの起動
ここまで行けば後は起動するだけです。
プロジェクトディレクトリに移動してsailを起動しましょう。
$ cd ~/test-project-v10
$ sail up -d
~省略~
✔ Container test-project-v10-laravel.test-1 Started 1.4s
sailの起動確認
「docker ps」コマンドでコンテナの確認を行うと、無事起動しておりトップページも表示できています!
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8a66a650b8c9 sail-8.3/app "start-container" 3 minutes ago Up 3 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:5173->5173/tcp, :::5173->5173/tcp, 8000/tcp test-project-v10-laravel.test-1
880991debf46 mariadb:11 "docker-entrypoint.s…" 3 minutes ago Up 3 minutes (healthy) 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp test-project-v10-mariadb-1
おまけ
自身の作ったアプリを移行し起動したところエラーが発生したので、npmのインストールなどを行いました。
ついでにDBのマイグレーションも忘れずに。
$ sail php artisan migrate
INFO Preparing database.
Creating migration table ........................................................... 11ms DONE
INFO Running migrations.
2014_10_12_000000_create_users_table ............................................... 16ms DONE
2014_10_12_100000_create_password_reset_tokens_table ................................ 5ms DONE
2019_08_19_000000_create_failed_jobs_table ......................................... 13ms DONE
2019_12_14_000001_create_personal_access_tokens_table .............................. 21ms DONE
$ sail npm install
added 146 packages, and audited 147 packages in 3s
36 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
$ sail npm run build
> build
> vite build
vite v5.3.3 building for production...
✓ 54 modules transformed.
public/build/manifest.json 0.27 kB x gzip: 0.15 kB
public/build/assets/app-DrEXVF1d.css 35.79 kB x gzip: 6.69 kB
public/build/assets/app-Cs0QkU1O.js 78.50 kB x gzip: 29.14 kB
✓ built in 1.33s
最後に
Laravelで簡単なWebアプリが作れるので色々楽しんで作っています。
また別記事で自身の備忘のために、Laravelの簡単な流れもまとめていく予定です。
最終的にはkubernetesでLaravelを起動させる所まで実験&記事に出来たらよいなと思っています。
参考サイト
・Git を Ubuntu にインストールしてリモートリポジトリにプッシュする
https://qiita.com/studio_meowtoon/items/719e6765dd11f17a0b19
・GitHubでssh接続する手順~公開鍵・秘密鍵の生成から~
https://qiita.com/shizuma/items/2b2f873a0034839e47ce
・気をつけて!Git for Windowsにおける改行コード
https://qiita.com/uggds/items/00a1974ec4f115616580
・【入門】UbuntuにDockerをインストールする
https://www.kagoya.jp/howto/cloud/container/dockerubuntu/
・LaravelのプロジェクトをGithubからcloneして開発環境を構築する方法
https://qiita.com/jefftech/items/32694685f2afdae176fd