저는 RPM을 생성 중이며 초기 단계에서 웹 애플리케이션 파일을 거기에 복사할 수 있도록 Apache의 문서 루트를 결정하려고 합니다.
먼저 Apache가 설치되어 있는지 확인합니다. Apache가 설치된 경우 스크립트는 문서 루트 매개변수가 포함되어 있는 httpd.conf 파일의 위치를 찾습니다. 하지만 명령 반환을 처리하는 방법을 모르겠습니다 find / -name httpd.conf
. 저는 쉘 스크립트와 RPM을 처음 사용합니다. 또한 이것이 가능한지 궁금합니다. 목표는 많은 수동 개입 없이 모든 시스템에 배포할 수 있도록 RPM을 갖는 것입니다. 아래는 내 계획에 대한 코드입니다. 아직 작동하지 않음
if [ "$(expr substr $(httpd -v) 17 6)" == "Apache"]; then
echo "Apache is installed";
find / -name httpd.conf
//need to handle the return of find and store to a location var to be used on the next line
grep -i 'DocumentRoot' $location/httpd.conf
//need to store the return document root to a var
el
echo "Apache is not installed";
fi
답변1
다른 파일을 포함하여 여러 개의 .conf 파일이 있을 수 있으므로 작업이 생각보다 어렵습니다.
출력을 확인하면 마일리지를 얻을 수 있습니다.
httpd -S
또는 apachectl -S
또는 apache2ctl -S
(배포판에 따라 다름)
현재 정의된 가상 호스트의 이름과 해당 호스트가 정의된 위치에 대한 정보를 인쇄합니다.
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
_default_:443 a.example.com (/etc/httpd/conf.d/ssl.conf:74)
*:80 is a NameVirtualHost
default server b.example.com (/etc/httpd/conf/httpd.conf:1010)
port 80 namevhost b.example.com (/etc/httpd/conf/httpd.conf:1010)
이는 가상 호스트가 /etc/httpd/conf.d/ssl.conf
및/etc/httpd/conf/httpd.conf
답변2
그런 것은 없습니다 apache's document root
. 구성 파일에는 여러 사이트에 대한 여러 루트가 포함될 수 있습니다.
또한, 특히 기본 apache2가 수정된 경우 데이터를 복사하여 기존 설정을 깨뜨릴 수 있으므로 복사할 위치와 내용에 대해 매우 주의해야 합니다.
어쨌든 이 시나리오를 계속하려면 사용 a2query -s
가능한 사이트를 확인하고 이를 사용하여 문서를 배치할 사이트를 찾을 수 있습니다. 사용할 수 없다면 a2query
apache2가 설치되어 있지 않은 것일 수 있습니다.
문서 루트 중 하나에 콘텐츠를 복사하는 경우 문서 루트 내의 특정 디렉터리 이름 아래에 모든 콘텐츠를 배치하세요.그리고아무것도 쓰기 전에 디렉토리가 존재하지 않는지 확인하십시오.
기존 Apache 설정에 삽입할 수 있는 HTML 기반 문서를 제공하는 다른 패키지를 살펴볼 수도 있습니다. 나는 이것을 할 수 있는 어떤 것도 모르지만 당신은 그럴 수도 있습니다.
RPM을 설치하는 시스템의 apache2 기본 설정이 "사용자 페이지"에 액세스하는 메커니즘을 지원하는 경우 패키지에 대한 새 사용자를 생성하고 거기에 문서를 넣을 수 있습니다. 물론 관리자는 이 메커니즘을 끌 수 있지만 그렇지 않은 경우 구성을 방해하지 않습니다. 또한 이 작업을 수행하기 위해 기록할 문서 루트를 찾을 필요가 없습니다(사용자가 하나 nginx
또는 다른 서버를 설치한 경우 운이 좋게도 동일한 사용자 페이지 메커니즘을 사용할 수 있습니다).
답변3
OpenSuse 및 Ubuntu에서 성공적으로 사용했습니다.
find /etc/apache2 -name '*default*' -exec grep -sHin "documentroot.*www" {} \; | grep -v available
답변4
- Main
DocumentRoot
은 많은(아마 대부분의) Apache 관리자가 호스팅을 위해 VirtualHosts를 사용하는 웹 페이지의 위치일 뿐입니다.
예를 참조하세요:https://httpd.apache.org/docs/2.2/vhosts/index.html
또는:https://httpd.apache.org/docs/2.4/vhosts/index.html
- 루트()부터 시작하여 전체 시스템 파일을 검색하는 것은
/
시간이 너무 많이 걸리기 때문에 정말 좋지 않은 생각입니다. 특히 서버에 다른 리소스가 설치되어 있는 경우(최악의 경우는 연결이 느리고 파일이 많은 네트워크 설치입니다) ).
일부 비표준 위치 에 대해 구성 httpd.conf
(또는 구성하지 않음) 해야 할 수도 있습니다 .apache2.conf