日: 2019年11月26日

  • mmap() failed: [12] Cannot allocate memory

    mmap() failed: [12] Cannot allocate memory

    はじめに

    laravelをinstall時、memoryが不十分だとinstallでエラーになる。

    twitterで投稿したところ、アドバイスもらった。確かにswapの設定してなかった。。

    クラウドであれば一時的にインスタンスタイプを変更することでインストールできるが、今回はインスタンスタイプを変更せず対応する。

    swapを設定する

    実は、GCPやAWSの場合、デフォルトでswapの設定がされていない。

    # free
                  total        used        free      shared  buff/cache   available
    Mem:         601172      383328       48068       14160      169776      107824

    手動でswapを設定する

    cat /proc/swaps
    dd if=/dev/zero of=/swapfile bs=1M count=2048
    chmod 600 /swapfile
    mkswap /swapfile
    swapon /swapfile
    free -m

    再起動しても設定されるよう、fstabに設定を追加する

    /swapfile   swap        swap    defaults        0   0

    作業後

    無事swapが追加された

    free -m
                  total        used        free      shared  buff/cache   available
    Mem:            587         375          43          13         167         103
    Swap:          2047           0        2047

    @kondonator さん、ありがとうございます🙏

     

  • CentOS7にlaravel install(nginx,php-fpm)

    CentOS7にlaravel install(nginx,php-fpm)

    はじめに

    PHP でcomposerをinstallしようとした際に使った手順まとめ

    オフィシャルサイトに書いてあったコマンドをそのまんまコピペでinstallすることができる。

    https://getcomposer.org/download/

    今回はnginx, php-fpmで動作する環境を作る。

    nginx install

    yum install nginx -y
    

    設定ファイル修正

    cd /etc/nginx/conf.d
    cp -p default.conf default.conf.org
    vi default.conf
    server {
      listen 80;
      server_name localhost;
      root /usr/share/nginx/html/;
      index index.php index.html index.htm;
    
      location / {
        try_files $uri $uri/ /index.php?$query_string;
      }
    
      location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        include fastcgi_params;
      }
    }

    /etc/nginx/nginx.conf に/etc/nginx/conf.d/default.conf をincludeする設定をするのを忘れずに。

    自分はすっかり忘れて無駄な時間を費やしました。

    上記設定が終わったら再起動する

    systemctl restart nginx

    php-fpmなどをinstall

    yum -y --enablerepo=remi-php72,epel install php-fpm php-gd php-gmp php-mbstring php-mcrypt php-opcache php-pdo php-pear-MDB2-Driver-mysqli php-pecl-memcached php-pecl-msgpack php-xml php-devel php-gd

    php-fpmの設定ファイルを修正

    cd /etc/php-fpm.d/
    cp -p www.conf www.conf.org
    vi www.conf
    [www]
    listen.allowed_clients = 127.0.0.1
    user = nginx
    group = nginx
    listen = /var/run/php-fpm.sock
    listen.owner = nginx
    listen.group = nginx
    pm = dynamic
    pm.max_children = 50
    pm.start_servers = 5
    pm.min_spare_servers = 5
    pm.max_spare_servers = 35
    slowlog = /var/log/php-fpm/www-slow.log
    php_admin_value[error_log] = /var/log/php-fpm/www-error.log
    php_admin_flag[log_errors] = on
    php_value[session.save_handler] = files
    php_value[session.save_path] = /var/lib/php/session
    [www]
    listen.allowed_clients = 127.0.0.1
    user = nginx
    group = nginx
    listen = /var/run/php-fpm.sock
    listen.owner = nginx
    listen.group = nginx
    pm = dynamic
    pm.max_children = 50
    pm.start_servers = 5
    pm.min_spare_servers = 5
    pm.max_spare_servers = 35
    slowlog = /var/log/php-fpm/www-slow.log
    php_admin_value[error_log] = /var/log/php-fpm/www-error.log
    php_admin_flag[log_errors] = on
    php_value[session.save_handler] = files
    php_value[session.save_path] = /var/lib/php/session
    systemctl restart php-fpm

    Composerのinstallコマンド

    php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
    php -r "if (hash_file('sha384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
    php composer-setup.php
    sudo mv composer.phar /usr/local/bin/composer
    php -r "unlink('composer-setup.php');"

    環境変数追加

    公式ドキュメントにあるように

    https://laravel.com/docs/6.x

    環境変数のPATHにcomposerのbinを追加する必要がある。

    export PATH="~/.composer/vender/bin:$PATH";

    最新版のinstall

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

    version指定したinstall。現在、

    v5.5.28がinstall される。

    composer create-project --prefer-dist laravel/laravel cms "5.5.*"

     

    権限変更

    sudo chown -R nginx:nginx cms/storage
    sudo chmod -R 775 cms/storage
    sudo chown `whoami` /usr/share/nginx/html/cms/storage/logs

    selinuxを無効化

    sudo setenforce 0

     

    確認

    installに成功すると、以下のような画面が表示する

    http://{GLOBAL IP}/cms/public/index.php