Ubuntu上でLaravelプロジェクトを作る

目次

スワップ領域の設定

Laravelのプロジェクトを作成しようとしたらメモリの確保に失敗した模様。

コマンド


$ composer create-project laravel/laravel project_name
Creating a "laravel/laravel" project at "./project_name"
Installing laravel/laravel (v7.3.0)
  - Installing laravel/laravel (v7.3.0): Loading from cache
Created project in /home/vagrant/workspace/project_name
> @php -r "file_exists('.env') || copy('.env.example', '.env');"
Loading composer repositories with package information
Updating dependencies (including require-dev)

mmap() failed: [12] Cannot allocate memory

mmap() failed: [12] Cannot allocate memory
PHP Fatal error:  Out of memory (allocated 840966144) (tried to allocate 4096 bytes) in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52

Fatal error: Out of memory (allocated 840966144) (tried to allocate 4096 bytes) in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52

PHPのメモリをチェックしたところ、無制限になっているので問題なし。

コマンド


# PHPで使うメモリの最大値を確認
#     "-1"は無制限の設定
$ php -i | grep memory_limit
memory_limit => -1 => -1

調べてみるとUbuntuでは標準ではswap領域が設定されていないようなので、swap領域を以下のように設定。

コマンド


# swapの確認(初期状態だと設定なし)
$ cat /proc/swaps
Filename                                Type            Size    Used    Priority

# 管理者権限になる
sudo su -

# swap用のディレクトリを作成する
mkdir /var/swap

# 2Gのswap領域を作成する
dd if=/dev/zero of=/var/swap/swap0 bs=1M count=2048

# パーミッションの設定をする
chmod 600 /var/swap/swap0

# swap領域を割り当てる
mkswap /var/swap/swap0
swapon /var/swap/swap0

# 起動時にswap領域が自動割当するように設定する
echo '/var/swap/swap0 swap swap defaults 0 0' >> /etc/fstab

Ubuntu/CentOSサーバのスワップ領域の割り当て

https://morizyun.github.io/blog/linux-swap-memory-space/index.html

ext-mbstringをインストールする

swap領域を設定してメモリの問題は解決したが、今度は”ext-mbstring”がないと怒られた。

コマンド


$ composer create-project laravel/laravel project_name
Creating a "laravel/laravel" project at "./project_name"
Installing laravel/laravel (v7.3.0)
  - Installing laravel/laravel (v7.3.0): Loading from cache
Created project in /home/vagrant/workspace/project_name
> @php -r "file_exists('.env') || copy('.env.example', '.env');"
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - laravel/framework v7.4.0 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system.

なのでインストール。

コマンド


# バージョンは環境に合わせる
$ sudo apt-get install php7.4-mbstring

ext-domをインストール。

「これでイケる!」と思ったら、今度はext-domがないとのこと。

コマンド


$ composer create-project laravel/laravel project_name
Creating a "laravel/laravel" project at "./project_name"
Installing laravel/laravel (v7.3.0)
  - Installing laravel/laravel (v7.3.0): Loading from cache
Created project in /home/vagrant/workspace/project_name
> @php -r "file_exists('.env') || copy('.env.example', '.env');"
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - phpunit/phpunit 8.5.x-dev requires ext-dom * -> the requested PHP extension dom is missing from your system.

なのでインストール。

コマンド


$ sudo apt-get install php-xml

UbuntuでLaravelのプロジェクト作成成功

上記の後、再びLaravelプロジェクトを作成したところ、無事に成功。

コマンド


$ composer create-project laravel/laravel project_name
~ 略 ~ 
Application key set successfully.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です