a2ensite를 사용하여 모든 사이트 conf를 활성화하는 방법 (000-default.conf && default-ssl.conf를 전달하는 동안)?


11

개인 웹 사이트를 저장하는 Apache2와 함께 Ubuntu 서버 16.04.2를 사용합니다.

아래에있는 모든 내 conf의 파일을 사용하려면 /etc/apache2/sites-available(외에 000-default.confssl-default.conf), 나는에 갔다 /var/www/html및 실행 a2ensite.

나는 그때 들었다 :

Your choices are: 
000-default default-ssl domain.tld1 domain.tld2 domain.tld3 domain.tld4 
Which site(s) do you want to enable (wildcards ok)?

그런 다음 Ctrl+ C다른 것을 실행하려고했습니다.

특정 사이트를 보지 않고 모든 사이트 conf를 자동으로 활성화하는 방법을 찾고 있습니다. --- 직접 추가 한 모든 사이트 conf를 활성화하는 명령을 실행하고 싶습니다.

답변:


18

config 디렉토리에서 find를 사용할 수도 있습니다.

find /etc/apache2/sites-available/ -type f -and -not -name "*default*" -exec a2ensite {} \;

이름에 "default"가없는 모든 구성 파일을 찾아 활성화합니다.


1
*.conf확장명 이있는 파일도 검색해야 합니다. 그렇지 않으면 a2ensite는 사이트가 존재하지 않는다고 불평 할 것입니다
Dan

conf 디렉토리에서 검색하기 때문에 @Dan이 필요하지 않습니다.
Ziazis

이 방법은 원칙적으로 Apache Vhosts뿐만 아니라 Nginx Sblocks를 만들 때도 좋습니다.

8

/etc/apache2/sites-available다음 명령 을 탐색 한 후 실행 해야합니다 .

sudo a2ensite *

디렉토리의 모든 사이트를 활성화합니다. (파일은 xxx.conf와 같은 것이어야합니다)

그런 다음을 사용하여 아파치를 다시로드하십시오 sudo service apache2 reload.

따라서 명령 순서는 다음과 같아야합니다.

cd /etc/apache2/sites-available
sudo a2ensite *
sudo service apache2 reload

이것은 또한 conf 파일을 가능하게합니다 default-ssl.conf. 이것은 출력에서 ​​명확합니다Enabling site default-ssl.

dpkg -S구성 파일이 패키지에 있는지 확인하는 데 사용할 수 있습니다 .
muru

1

현재 위치가 무엇이든이 명령 sudo a2ensite "*.conf"은에 위치한 모든 구성 파일을 활성화하려고 시도합니다 /etc/apache2/sites-available/.

다음 a2dissite 000-default.conf default-ssl.conf으로 기본 Apache 구성을 비활성화하고 systemctl restart apache2.service다시 시작하는 데 사용할 수 있습니다 .

우리는 이것을 하나의 명령처럼 실행할 수 있습니다.

sudo bash -c "a2ensite '*.conf' && a2dissite 000-default.conf default-ssl.conf && systemctl restart apache2.service"

무엇보다 bash의 함수를 통해 사용자 정의 명령을 만들 수 있습니다.

function a2ensites {
        sudo bash -c "a2ensite '*.conf' && a2dissite 000-default default-ssl && systemctl restart apache2.service"
}
export -f a2ensites

이제이 작업을 수행하도록 설계된 명령 이 있습니다. 이 명령을 영구적으로 만들려면 위의 행을 파일 의 맨 아래에 배치 한 다음 명령을 배치해야 합니다. 다음 간단한 스크립트는이 작업을 수행합니다.a2ensites~/.bashrcsource

 printf "\nfunction a2ensites { \n\tsudo bash -c \"a2ensite '*.conf' && a2dissite 000-default.conf default-ssl.conf && systemctl restart apache2.service\" \n}\nexport -f a2ensites\n" | tee -a $HOME/.bashrc; source $HOME/.bashrc

첫 번째 줄은 사실이 아닙니다. *그것이 전달되기 전에 와일드 카드 확장되고 a2ensite내 경우에는 명령. 그러나 이것은 작동합니다 sudo a2ensite "*.conf".
Dan

안녕, @ Dan, 내 경우 (Ubuntu 16.04.2) 따옴표없이 올바르게 작동합니다. 그러나 나는 대답을 업데이트했다. a2ensite '*.conf'시스템에서 제대로 작동하는지 확인할 수 있습니까?
pa4080

1
그러나 그것은 효과가 있습니다. 나는 우분투 17.04 btw에 있습니다.
Dan

0

실행 a2ensite /var/www/html/*/하면 Apache 가 사이트 디렉토리 와 이름같은 각 사이트 conf를 활성화합니다 .

부작용으로, 다음 출력에서 ​​예측 한 것처럼 사이트 conf 파일과 일치하지 않는 사이트 디렉토리를 일치 시키려고 시도하지만 안전하게 무시할 수 있다고 생각합니다.

ERROR: Site /var/www/html/domain.tld1 does not exist!
ERROR: Site /var/www/html/domain.tld2 does not exist!
ERROR: Site /var/www/html/nice_directory does not exist!
ERROR: Site /var/www/html/nice_file does not exist!

conf 파일을 활성화 한 후 Apache를 다시 시작해야 할 수도 있습니다.

systemctl restart apache2.service

1
확실하지 않지만 왜 웹 루트 폴더에 사이트 구성이 있습니까? /etc/apache2/sites-available사이트 구성에 폴더를 사용해보십시오 . a2ensite를 통해 활성화하면 자동으로에 연결됩니다 /etc/apache2/sites-enabled. 당신이 지금하고있는 일은 꽤 이상하고 웹 서버에 액세스 할 수있는 모든 사람이 구성을 조사 할 수 있습니까?
Ziazis

안녕하세요 @Ziazis. "웹 서버에 액세스 할 수있는 모든 사람이 구성을 조사 할 수 있습니까?" 나는 서버를 사용하는 유일한 사람입니다. 그렇지 않은 경우 일반적으로 다른 사용자가 문서 루트에 액세스 할 수 없습니다. 어쨌든, 왜 그런지 물어 보시고 정확히 무엇이 잘못되었는지 명확하게 말씀해 주시겠습니까?

글쎄,이 웹 서버를 무엇을 사용하고 있는지 잘 모르겠습니다. 그러나 이것이 제 3자가 접근 할 수있는 액세스 권한이있는 라이브 시스템 인 경우 구성 파일 /var/www/htmldefault.html-Site 의 DocumentRoot 이므로이 파일을 놓기를 원하지 않습니다 . 따라서 귀하의 경우에는 거기에서 구성을 실행하는 것 같습니다 ... 열린 입으로 먹는 것과 같습니다. ;-)하지 마십시오.
Ziazis

이해가 안 돼요 conf 파일을 문서 루트에 넣었다고 생각하십니까? 내가하지 않았기 때문에. 내가 거기에 두도록 제안하니? 나는 그것을 피하고 싶을 것입니다 ... 000-default 및 default-ssl이 아닌 모든 것을 활성화하고 싶습니다. BTW, 나는 웹 서버를 사용하여 개인 웹 사이트를 저장합니다.

아, 알다시피-모든 RootDirectories의 이름을 구성 파일과 동일하게 지정했습니다. 그리고 여기에서 apache2 구성을 /var/www/html구성 폴더로 변경했다고 생각했습니다 . 그런 다음 Nvm. 실제로 필요한 것은 단지find ./ -type f -and -not -name "*default*" -exec a2ensite {} \;
Ziazis

0

파일 이름에 다음 줄을 붙여 넣습니다. apache_enable.sh

cd /etc/apache2/sites-available/
a2ensite *
service apache2 reload

apache_enable.sh루트 사용자를 사용하여 스크립트에 읽기 + 실행 명령을 내리고 실행하십시오.


0

기본 설정을 다른 폴더로 이동하면 원하는대로 *가 작동합니다.

이 사이트에서만 작동하므로 "sites-available"폴더로 이동하십시오.

CD / etc / apache2 / sites-available /

sudo a2ensite *

테스트


AFAIK, 루트가 / var / www / html입니까?를 문서화하면 시스템의 어느 곳에서나 그렇게 할 수 있습니까?

중요한 부분은 / etc / apache2_or_other / sites-available 폴더입니다. 그런 다음 문서 루트가 해당 구성에 연결됩니다. / usr / share / htlm에 루트가있을 수 있으며 conf 파일에 루트를 쓰지 않는 한 아무것도 변경하지 않습니다. conf 파일이 sites-available 폴더에있는 한 a2ensite가 작업을 수행하는 한 서버의 어느 곳에 나있을 수 있습니다.
Carobell

첫 번째 옵션이 테스트
Carobell
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.