目次
スワップ領域の設定
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.