Як увімкнути всі конфіденційні конфлікти на веб-сайті за допомогою a2ensite (при передачі понад 000-default.conf && default-ssl.conf)?


12

Я використовую сервер Ubuntu 16.04.2 з Apache2, на якому я зберігаю свої особисті веб-сайти.

Щоб увімкнути всі мої конф-файли під /etc/apache2/sites-available(крім 000-default.confі ssl-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меті виконати щось інше.

Я шукаю спосіб автоматичного включення всіх конфіденційності сайту, не зазначаючи конкретного --- я просто хочу запустити команду, яка дозволить усім конфіденціям сайтів, які я сам додав.

Відповіді:


19

Можна також скористатися функцією find у вашому довіднику config.

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

Це знаходить всі ваші файли конфігурації, у яких ім'я не має "за замовчуванням", і активує їх.


1
Ви також повинні шукати файли з *.confрозширенням. Або ж a2ensite поскаржиться, що сайт не існує
Dan

@ Не потрібно, оскільки ми шукаємо в каталозі конф.
Зіазіс

Я думаю, цей метод, як правило, також хороший при створенні Nginx Sblocks, і не тільки для Apache Vhosts.

9

Вам потрібно перейти до команди /etc/apache2/sites-availableта виконати команду:

sudo a2ensite *

Це дозволить включити всі сайти в каталозі. (файли повинні бути приблизно як xxx.conf)

А потім перезавантажте апаш за допомогою sudo service apache2 reload.

Отже, ваша послідовність команд повинна бути такою:

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

Це також дозволяє конф-файл default-ssl.conf... Це зрозуміло з результатуEnabling site default-ssl.

Ви можете використовувати, dpkg -Sщоб побачити, чи файл конфігурації з пакета.
муру

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
Так, це працює, я на Ubuntu 17.04 btw.
Dan

0

Виконання a2ensite /var/www/html/*/дозволить Apache ввімкнути конфіденційність кожного сайту, що має те саме ім’я , як і dir сайту.

Як побічний ефект, він також намагатиметься відповідати файлам сайтів, які не відповідають файлам конф-сайтів, як це було передбачено з наступного виводу, але я думаю, що це можна ігнорувати безпечно:

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!

Вам, можливо, доведеться перезапустити Apache після ввімкнення файлів conf:

systemctl restart apache2.service

1
Я не впевнений, але чому конфігурація вашого сайту знаходиться в папці webroot? Спробуйте використовувати /etc/apache2/sites-availableпапку для конфігурацій для своїх сайтів. Після ввімкнення їх через a2ensite вони автоматично зв'язуються /etc/apache2/sites-enabled. Що ви зараз робите, це досить дивно, і кожен, хто має доступ до вашого веб-сервера, може заглянути у ваші конфігурації?
Зіазіс

Привіт @ Ziazis. Я насправді не розумію, чому ви навіть запитуєте мене: "кожен, хто має доступ до вашого веб-сервера, може заглянути у ваші конфігурації?" Я єдиний, хто використовує сервер; Якби я не був, зазвичай інші користувачі не мали б доступу до корінця документів. У будь-якому випадку, чи можете ви уточнити, чому ви це запитуєте, і що саме ви вважаєте неправильним?

Ну я не впевнений, для чого ви використовуєте цей веб-сервер. Однак якщо це жива система з доступом, який доступний третій стороні, ви не хочете, щоб ваші конфігураційні файли лежали, /var/www/htmlоскільки це DocumentRoot default.html-Site. Тож у вашому випадку вам здається, що там працюють конфігурації ... Це як їсти з відкритим ротом, не робіть цього ;-).
Зіазіс

Я не розумію. Ви думаєте, я поставив файли conf у корінь документа? Бо я цього не зробив. Ви мені пропонуєте посадити їх? Я хотів би цього уникнути ... Я просто хочу ввімкнути всіх тих, хто не є за замовчуванням 000 та default-ssl. До речі, я використовую веб-сервер для зберігання своїх особистих веб-сайтів.

Ах, я бачу - ви назвали всі ваші RootDirectories такими ж, як і ваші конфігураційні файли. І тут я подумав, що ви змінили конфігурацію apache2, щоб вона була /var/www/htmlвашою конфігураційною папкою. Нвм тоді. Те, що вам насправді потрібно, - це простоfind ./ -type f -and -not -name "*default*" -exec a2ensite {} \;
Ziazis

0

скопіюйте вставте наступні рядки у назві файлу apache_enable.sh

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

і дати команду read + Execute apache_enable.shта виконати сценарій за допомогою root користувача


0

Перемістіть конфігурації за замовчуванням в іншу папку, а потім * повинен працювати для вас, як ви хочете.

Перейдіть у папку "сайти доступні", оскільки вона працює лише в цій папці.

cd / тощо / apache2 / доступні сайти /

sudo a2ensite *

перевірений


AFAIK, ви можете це зробити з будь-якої точки системи, коли ви документуєте root / var / www / html?

Важливою частиною є папка / etc / apache2_or_other / доступні сайти. Потім корінь документа з'єднується в цій конфігурації. Ви можете мати свій корінь у / usr / share / htlm, і він нічого не змінить, за винятком випадків, якщо ви не записали його у файл conf. Я можу бути де завгодно на своєму сервері, доки файли конф перебувають у доступній для сайтів папці a2ensite зробить свою роботу.
Carobell

Відредагував мою відповідь, оскільки перший варіант не працює перевіреним
Carobell
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.