본문 바로가기
서버/리눅스

CentOS7, nginx, php-fpm 환경에서 버전별 PHP 사용하기

by 사악신 2018. 5. 20.


1. root 권한으로 작업


먼저, remi 리포에서 php7.2 버전을 설치합니다.

yum install php72 php72-php-common php72-php-fpm

yum install php72-php-mysql php72-php-gd php72-php-mbstring php72-php-mcrypt php72-php-xml php72-magickwand php72-php-pecl-zip php72-pecl-imagick


기존 php 버전과 충돌이 되지않드록 디렉토리를 생성하고 퍼미션을 조정합니다.

mkdir /var/run/php72-fpm

mkdir /var/lib/php72

mkdir /var/lib/php72/nginx-session

mkdir /var/lib/php72/nginx-wsdlcache

mkdir /var/lib/php72/nginx-opcache


cd /var/lib/php72

chmod 770 *

chown root.nginx *


nginx 에서 php-fpm 연결 부분을 생성된 디렉토리쪽으로 지정합니다.


vi /etc/nginx/conf.d/laravel56.conf

(생략)


    root /home/gslee/html/laravel56/public;


(생략)


    location ~ \.php$ {

        try_files $uri =404;

        fastcgi_keep_conn on;

        fastcgi_split_path_info ^(.+\.php)(/.+)$;

        fastcgi_index   index.php;

        fastcgi_pass    unix:/var/run/php72-fpm/laravel56.sock;

        fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;

        include fastcgi_params;

    }


이제부터 부분이 핵심이라고 할 수 있습니다. php 7.2.x 용 php-fpm 설정 파일을 생성하고 php72-php-fpm 을 실행합니다.


vi /etc/opt/remi/php72/php-fpm.d/laravel56.conf

[laravel56]

listen = /var/run/php72-fpm/laravel56.sock

listen.owner = nginx

listen.group = nginx

listen.mode = 0660

user = gslee

group = nginx

pm = dynamic

pm.max_children = 5

pm.start_servers = 1

pm.min_spare_servers = 1

pm.max_spare_servers = 2

chdir = /home/gslee/html/laravel56


php_value[session.save_handler] = files

php_value[session.save_path]    = /var/lib/php72/nginx-session

php_value[soap.wsdl_cache_dir]  = /var/lib/php72/nginx-wsdlcache

php_value[opcache.file_cache]  = /var/lib/php72/nginx-opcache


systemctl restart nginx

systemctl start php72-php-fpm



2. 설치 계정에서 작업


php72 의 alias 를 지정합니다.


vi .bash_profile

(생략)


alias php='/usr/bin/php72'


라라벨 설치를 위해서 coposer 를 로컬 경로에 설치합니다.


curl -sS https://getcomposer.org/installer | php


라라벨을 설치합니다.


php composer.phar create-project --prefer-dist laravel/laravel laravel56


브라우저에서 확인합니다.




php 버전이 맞지 않아 laravel 명령어 또는 composer 가 실행되지 않을 경우, .bash_profile 의 PATH 에서 $HOME/.config/composer/vendor/bin 를 맨 앞에 지정합니다. 그런 다음  .config/composer/vendor/bin 에서 ln -s /usr/bin/php72 php 를 실행합니다. 이렇게함으로 스크립트 #!/usr/bin/env php 가 php72 를 가리키도록 할 수 있습니다.(Laravel 5.8 기준)




기본 php 를 변경하는 방법은, 아래 명령을 루트 권한으로 실행한 후 재접속하면 됩니다.


scl enable php72 bash


yum 의 기본 php 를 변경하려면 다음을 실행합니다. 이때 info 명령어로 현재 php 의 버전을 확인할 수 있습니다.


yum info php

yum-config-manager --enable remi-php72




yum 또는 dnf 업데이트시 www.conf 가 버전별로 설치되면서, 포트 9000 에서 충돌이 발생합니다. 따라서 www.conf 파일의 모든 설정을 사용하지 않는 형태로 생성두어 충돌을 방지하여야합니다.



반응형

댓글