a2ensiteですべてのサイト設定を有効にする方法(000-default.conf && default-ssl.confを渡しながら)?


11

私は、Apache2でUbuntuサーバー16.04.2を使用しています。Apache2には、個人のWebサイトが格納されています。

下のすべての私の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

特定の設定に注意せずに、すべてのサイト設定を自動的に有効にする方法を探しています---私が追加したすべてのサイト設定を有効にするコマンドを実行したいだけです。

回答:


18

configディレクトリのfindを使用することもできます。

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

これにより、名前に「デフォルト」が含まれていないすべての構成ファイルが検出され、アクティブ化されます。


1
*.conf拡張子を持つファイルも検索する必要があります。それ以外の場合、a2ensiteはサイトが存在しないと不満を言うでしょう
Dan

confディレクトリを検索しているため、@ Danは必要ありません。
Ziazis

この方法は、Nginx Sblockを作成するときに、Apache Vhostsだけでなく、原則として優れていると思います。

8

次の場所に移動して/etc/apache2/sites-available、コマンドを実行する必要があります。

sudo a2ensite *

ディレクトリ内のすべてのサイトが有効になります。(ファイルはxxx.confのようなものでなければなりません)

次に、を使用してApacheをリロードし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、2017年

1

現在の場所に関係なく、コマンドsudo a2ensite "*.conf"はに配置されたすべての構成ファイルを有効にしようとします/etc/apache2/sites-available/

次に、を使用a2dissite 000-default.conf default-ssl.confしてデフォルトのApacheの構成を無効にしてから、を使用systemctl restart apache2.serviceして再起動できます。

これをすべて1つのコマンドのように実行できます。

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、私の場合(Ubuntu 16.04.2)、引用符なしで正しく動作します。しかし、私は答えを更新しました。a2ensite '*.conf'システムで正しく動作するかどうかを確認できますか?
pa4080

1
はい、うまくいきました。私はUbuntu 17.04を使用しています。
ダン

0

実行a2ensite /var/www/html/*/すると、Apache はサイトdir と同じ名前の各サイト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
よくわかりませんが、サイト構成がwebrootフォルダーにあるのはなぜですか?/etc/apache2/sites-availableサイトの構成用のフォルダーを使用してみてください。a2ensiteで有効にすると、自動的ににリンクされ/etc/apache2/sites-enabledます。あなたが今やっていることはかなり奇妙で、あなたのウェブサーバーにアクセスできる誰もがあなたの設定を見ることができますか?
Ziazis

@Ziazis様 私は本当に理解していません、なぜあなたが私に「あなたのウェブサーバーにアクセスできる誰もがあなたの設定を見ることができるのですか?」サーバーを使用するのは私だけです。そうでなければ、通常よりも他のユーザーはドキュメントルートにアクセスできません。とにかく、なぜそれを尋ねるのか、そして何が間違っているのかを明確にしていただけませんか。

さて、私はあなたがこのウェブサーバーを何のために使っているのかわかりません。ただし、これがサードパーティからアクセス可能なライブシステムである場合/var/www/htmldefault.html-SiteのDocumentRootであるため、構成ファイルをそのままにしておく必要はありません。だからあなたの場合、あなたはそこで構成を実行しているようです...それは口を開けて食べるようなものです、それをしないでください;-)。
Ziazis

わかりません。私はconfファイルをドキュメントルートに置いたと思いますか?私がしなかったので。それらをそこに置くことを私に提案しますか?私はそれを避けたいと思います... 000-defaultとdefault-sslではないそれらすべてを有効にしたいだけです。ところで、私はウェブサーバーを使って個人のウェブサイトを保存しています。

ああ、わかりました。すべてのRootDirectoriesに設定ファイルと同じ名前を付けました。そして、私はあなたがあなたのapache2設定を/var/www/htmlconfigフォルダとして持つように変更したと思いました。その後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.shrootユーザーを使用してread + executeコマンドを実行し、スクリプトを実行します


0

デフォルトの設定を別のフォルダに移動すると、*が希望どおりに機能するはずです。

「sites-available」というフォルダでのみ機能するため、このフォルダに移動します。

cd / etc / apache2 / sites-available /

sudo a2ensite *

テスト済み


AFAIK、ドキュメントルートが/ var / www / htmlである場合、システムのどこからでもそうすることができますか?

重要な部分は/ etc / apache2_or_other / sites-availableフォルダーです。次に、ドキュメントルートがその構成でリンクされます。/ usr / share / htlmにrootを置くことができ、confファイルに記述しない限り、何も変更されません。confファイルがsites-availableフォルダーにある限り、サーバーのどこにいても、a2ensiteが機能します。
カロベル

テストさ
Carobell
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.