RHSCL PHP를 전 세계적으로 제공하는 가장 좋은 방법


10

다음 URL을 사용하여 RHSCL 2를 설치했습니다.

https://access.redhat.com/documentation/en-US/Red_Hat_Software_Collections/2/html/2.0_Release_Notes/chap-Installation.html

RedHat 구독 관리자를 사용합니다.

그때 달렸다 yum remove php*다음yum install rh-php56

PHP는 어디에서도 찾을 수 없다는 것을 제외하고는 모든 것이 순조롭게 진행되었습니다. 나는 다음 실행 find / -name php발견 rh-php56다음 디렉토리에 :

/var/opt/rh/rh-php56/lib/php
/opt/rh/rh-php56/register.content/var/opt/rh/rh-php56/lib/php
/opt/rh/rh-php56/root/usr/bin/php
/opt/rh/rh-php56/root/usr/lib64/php
/opt/rh/rh-php56/root/usr/share/php

이 바이너리 /usr/bin를 모든 사용자가 일반적으로 전역 적으로 사용할 수있는 다른 디렉토리 로 가져 오는 가장 좋은 방법은 무엇입니까 ?

패키지를 설치할 때 전 세계에서 사용할 수없는 이유가 무엇입니까? 아니면 이것이 RHSCL을 사용할 때 발생하는 것입니까?

해당 폴더의 바이너리를 테스트했으며 실행할 때 작동 php -v하므로 정상적으로 작동합니다.

내 첫번째 생각은이다 cp/bin또는 /usr/bin하지만 어쩌면 내가 요구하고 무엇을 할 수있는 공식적인 방법은 무엇입니까?

편집하다

내가 게시 한 링크의 3 장에서 주석을 달거나 회신 할 수 없습니다. 소프트웨어 모음 패키지를 다음과 같이 실행해야한다고 말합니다.

scl enable rh-php56 'php -v'

어느 것이 효과가 있습니까? 그러나 $ php -v추가 명령없이 모든 사용자가 어떻게 실행할 수 있습니까? 웹 서버가 그것을 사용할 수 있고 일반적인 쉘을 가진 ssh 사용자가 사용할 수 있도록 전 세계적으로 사용할 수있는 PHP 바이너리가 필요합니다.


당신은 당신이 준 링크의 3 장을 읽는 것을 잊었다 ....
Sven

1
스벤 .. 나는 그것을 스스로 읽었다. 그리고 그것이 가지고있는 모든 것은 가능한 컬렉션으로 서브 쉘을 시작하는 것이다. 사용자가 하위 셸을 실행할 필요없이 기본적으로 컬렉션을 사용 가능하게 만드는 방법에 대해서는 자세히 설명하지 않습니다. 적절한 솔루션을 아래에서 자세히 설명하겠습니다.
앤서니

Sven은 모든 사용자와 모든 데몬을 실행해야한다는 것을 의미 scl enable rh-php56 command하며 이는 복잡합니다. @antofthy의 답변을 통해 전 세계적으로 활성화하는 것이 훨씬 우아합니다.
Stefan Lasiewski

답변:


16

서브 쉘을 실행하지 않고 현재 쉘로 소프트웨어 콜렉션을 가져 오는 방법은 "활성화"파일을 소싱하는 것입니다.

예를 들어 Redhat 7 컴퓨터에서 rh-php56의 경우 ...

소스 / opt / rh / rh-php56 / enable

이제 "php"를 실행하거나 "man php"맨 페이지를 정상적으로 읽을 수 있습니다.

적절한 환경 변수를 현재 쉘 환경에 추가합니다. 개별 사용자는 .bashrc 파일에서이를 수행 할 수 있으며 SSH (비 대화식 쉘)에서 사용할 수 있습니다.

활성화 파일을 ".sh"접미사를 사용하여 /etc/profile.d/에 복사 (또는 symlink)하여 모든 사용자가 자동으로 활성화 할 수 있습니다.

예를 들어

ln -s / opt / rh / rh-php56 / enable /etc/profile.d/rh-php56.sh

데몬과 같은 환경 이상의 환경이 필요한 경우이 작업을주의하십시오. 또는 해당 소프트웨어의 여러 버전이 시스템에 존재하는 경우 (다른 소프트웨어 / 서비스와의 하위 호환성을 위해) 버전간에 상호 작용이있을 수 있습니다. 또한 사용자는 '최신'버전을 원하지 않거나 '기본'시스템 (EG : / etc configs)이 소프트웨어 콜렉션 버전에 영향을 미치지 않는 이유에 대해 혼동 될 수 있습니다.

Anthony Thyssen (아주 오래된 시스템 관리자)


이 메소드는 어떤 php.ini 인스턴스를 호출합니까?
Darvanen

1
읽은 php.ini 파일은 PHP 프로그램에 하드 코딩되어 있습니다. 위의 예에서 "/etc/opt/rh/rh-php56/php.ini"입니다. ".php"웹 페이지에서 또는 CLI PHP 명령을 사용하여 PHP 스크립트 <? php phpinfo ()?>를 사용하여이를 확인할 수 있습니다.
anthony

아아 ... php-fpm 서비스 대신 httpd를 다시 시작하고있었습니다. 다른 사람이 그런 식으로 붙어 경우 여기에 게시.
Darvanen

이것이 실제로 SCL 패키지를 활성화하기에 충분합니까? access.redhat.com/solutions/527703는 같은 것을 수행하는 bash는 스크립트를 작성하는 것source scl_source enable python33
스테판 Lasiewski

충분해야합니다. 기본적으로 시스템 버전보다 특정 버전을 사용하도록 환경을 설정합니다. 그러나 하위 셸 내에서만 시작되었습니다.
Anthony Anthony
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.