解決策 1:
ポートが間違ったサービスによってバインドされるのを防ぐことはできません。あなたの場合は、apache を自動起動から削除するだけで問題ありません。
16.04 以降の場合:
sudo systemctl disable apache2
古い Ubuntu バージョンの場合:
sudo update-rc.d apache2 disable
解決策 2:
本当に apache2
を使用していない場合 、そしてそれを必要とするのはPHP 7.0です。それなら、 libapache2-mod-php7.0
があるようです インストールされています。そのパッケージは、Apache なしでは役に立ちません。 nginx を使用しているので、おそらく php7.0-fpm
も持っています または php7.0-cgi
php7.0
を満たすにはどちらでも十分です。 の依存関係要件:
$ apt-cache depends php7.0
php7.0
|Depends: php7.0-fpm
|Depends: libapache2-mod-php7.0
Depends: php7.0-cgi
Depends: php7.0-common
Conflicts: <php5>
php7.0-{fpm,cgi}
のいずれかをお持ちの場合 Apache をアンインストールしてください。
解決策 3:
あなたの質問に答えるために、おそらく SElinux を使用してポートを特定のアプリケーションに制限することができます。私自身は使用したことがなく、その機能については表面的な知識しかありませんが、このサイトで見つけたヒントを次に示します。
https://serverfault.com/a/257056/392230
その回答では、wzzrd は、特定のアプリケーション (foo) に特定のポート (803) にバインドする許可を与える方法を示しているようです。アプリケーション (nginx) のみが指定したポート (80 と 443) を許可されるように、ポリシーを設定する必要があります。
wzzrdの回答に基づいて、これをポリシーに追加するのと同じくらい簡単かもしれません
allow nginx_t nginx_port_t:tcp_socket name_bind;
これを実行する
semanage port -a -t nginx_port_t -p tcp 80
semanage port -a -t nginx_port_t -p tcp 443
ただし、ポリシーには、他のプログラムがこれらのポートにバインドできないことを指定する行も必要になると思います.
結局のところ、適切な構成が何であるかを推測しているだけです.
とにかく、デフォルトで SElinux がインストールされ有効になっている Ubuntu はないと思います。さまざまなユーティリティやカーネル オプションに特定のパッチを適用する必要があると思われるため、SElinux がインストールされ、最初から有効になっている Centos を使用する方が簡単かもしれません。
申し訳ありませんが、私はこれ以上役に立ちません。別の機会に、Centos のイメージをダウンロードして試してみるつもりです。それは良い学習ステップになります。もしそうなら、私はこの答えを更新します。
解決策 4:
答えにはまだ見えていませんが、まだ可能性があります:
念のため、別のポートをリッスンするように Apache 構成を変更します。これを行うには、Apache 構成ファイルを開き、Listen 80
を含む行を変更します。