こんにちは!
最近、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画面が開けるか確認しておきます。
にアクセスします。
以下のような画面が表示できたら成功です。
次に、環境変数を設定します。
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の教科書 [ 三宅英明 ]
コメント