Ubuntu上にLaravel × MySQL × Apache環境を構築する

Laravel

こんにちは!

最近、Linux環境を色々と触ることにハマっているブログ運営者のたらおです。

今の時代は仮想化技術を使って専用のイメージをダウンロードして組み合わせるだけで環境構築ができてしまいますが、たまに素で環境にMySQLをインストールしたりApacheをインストールしたりする機会があります。

そこで、今回は学習のためにUbuntu上にLaravel,MySQL,Apacheをインストールする手順をまとめてみたので、備忘録として残しておきます。

読者
読者

「Linux環境上にLaravelの環境構築をしたいが、手順がわからない…」

とお考えの方には参考になる内容だと思います。

本記事を最後まで読めば以下のようなことがわかります。

  • Ubuntu上にLaravelをインストールする手順
  • Ubuntu上にMySQLをインストールする手順
  • Ubuntu上にApacheをインストールする手順
  • Laravel, MySQL, Apacheを組み合わせてアプリケーションを起動する手順

最後にLaravelのマイグレーションとブラウザでの起動確認までを行います。

それでは、早速みていきましょう!

前提

前提として、今回はDockerを使ってUbuntu環境を構築し、その中にLaravel,MySQL,Apacheをインストールしていきます。

Dockerを使うのであれば、普通こんな運用はしないと思いますが、今回は予行練習だと思ってください。

手順

それでは、順番に手順をご紹介していきます。

1. Dockerを使ってUbuntu環境を構築する

まずはdockerが起動していることを確認します。

docker --version

次に、ubuntuイメージを取得します。

docker pull ubuntu

ubuntuイメージが取得されたことを確認します。

docker images | grep ubuntu

ubuntuイメージをベースにコンテナを作成します。この時、ポートは80番にしておきます。

docker run -it -d --name laravel -p 80:80 ubuntu

最後にコンテナが起動しているか確認します。

docker ps

ポートが80番になっており、コンテナが起動していることを確認します。

これからこのコンテナ内に色々と入れていくことになるので、事前にコンテナに入っておきます。

docker exec -it laravel bash

2. MySQLをインストール

このセクションでは、MySQLをインストールします。

その前に、これから必要になりそうなパッケージは事前に入れておきます。

apt update
apt install -y sudo curl vim lsof

mysql-server パッケージをインストールします。

apt install -y mysql-server

インストール時に自動的にMySQLが起動するものだと思っていましたが、筆者がインストールしたときは起動していませんでした。

MySQLの起動確認は以下のコマンドから行えます。

/etc/init.d/mysql status

Uptime: と書かれているところに、MySQLが起動されてからの経過時間が表示されていれば起動しています。

もし、起動していない場合は以下のコマンドで起動できます。

/etc/init.d/mysql start

MySQLの起動方法は、systemctlコマンドやserviceコマンドなどがありますが、残念ながらsystemctlコマンドはDockerコンテナの中では使えません。

これにも深い理由があるのですが、今回は割愛させていただきます。

次に、セキュリティ強化のスクリプトを叩いておきます。

mysql_secure_installation

色々聞かれるので適当に答えておきましょう。

こちらを設定することで、パスワード認証を行うことができるようになります。

次に、MySQLに入ります。

sudo mysql

ログインできたら、新しいMySQLユーザーを作成します。

mysql> CREATE USER 'username'@'host' IDENTIFIED BY 'password';

本当は認証プラグインを設定することができ、これはこれで奥が深いのですが、今回は省略しておきます。

作成したユーザーに権限をつけておきましょう。

mysql> GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT ON *.* TO 'username'@'host';

時々ユーザーに全ての権限をつけている記事を見かけたりしますが、おすすめできません。必要に応じて権限は調整しましょう。

それでは、メモリを解放しておきます。

mysql> FLUSH PRIVILEGES;
mysql> quit;

作成したユーザーでログインしてみます。

mysql -u username -p

パスワードを聞かれるので、登録しておいたパスワードを入力し、ログインできたら成功です。

最後に、今回動作確認用で使う予定のテスト用DBを作成しておきます。

CREATE DATABASE test_db;

3. Apache2のインストール

このセクションでは、Apache2をインストールしていきます。

apt install -y apache2

次に、Apacheが起動しているか確認しておきます。

/etc/init.d/apache2 status

起動していなかったら、以下のコマンドから起動しておきます。

/etc/init.d/apache2 start

Apacheの設定ファイルを設定しておきましょう。

設定ファイルは大抵「/etc/apache2/sites-available/000-default.conf」にあるはずです。

vim /etc/apache2/sites-available/000-default.conf

ファイルを編集しておきます。

<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        ServerName localhost

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/sample_app/public

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        <Directory "/var/www/sample_app/public">
          Require all granted
          AllowOverride All
        </Directory>

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

今回はLaravelのプロジェクトフォルダを「/var/www/sample_app」に配置する予定なので、この設定にしています。

ServerNameはlocalhostとしておきましょう。

4. PHPおよびPHP拡張機能のインストール

このセクションでは、PHPとPHP拡張をインストールしていきます。

apt install -y php php-common php-cli php-gd php-mysql php-curl php-intl php-mbstring php-bcmath php-xml php-zip

インストールが完了したら、動作確認しておきます。

php -v

バージョンが表示されたら成功です。

5. Composerのインストール

このセクションでは、Laravelのインストールに必要なComposerをインストールしておきます。

curl -sS <https://getcomposer.org/installer> | php -- --install-dir=/usr/bin --filename=composer

動作確認として、バージョン確認しておきます。

composer -V

6. Laravelのインストール

このセクションでは、いよいよLaravelをインストールしていきます。

まずは、プロジェクトを配置する予定のディレクトリに移動します。

cd /var/www

次に、Laravelプロジェクトをインストールします。

composer create-project --prefer-dist laravel/laravel sample_app

余談ですが、「–prefer-dist」というオプションをつけるとzip形式で圧縮してダウンロードできるため、高速でダウンロードできます。

ダウンロードが完了したら、storageフォルダの権限を変更しておきます。

cd sample_app && chmod -R 777 storage

動作確認として、Welcome画面が開けるか確認しておきます。

無効なURLです

にアクセスします。

以下のような画面が表示できたら成功です。

次に、環境変数を設定します。

vim .env

.env ファイルを編集していきます。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=test_db
DB_USERNAME=username
DB_PASSWORD=password

ユーザー名とパスワードはMySQLの設定時に設定しておいたものをセットしてください。

それでは、マイグレートを走らせてみましょう。

php artisan migrate

マイグレートが通れば成功です。

以上で、Laravel動作環境の構築は完了です。

お疲れ様でした✨

参考

参考リンク
Ubuntu 20.04にMySQLをインストールする方法

参考書籍


新しいLinuxの教科書 [ 三宅英明 ]

コメント

タイトルとURLをコピーしました