AWSでCentOS 7 EC2インスタンスを作成し、Webサーバーとしてnginxをインストールしました。ただし、Apacheとは異なり、/var/wwwフォルダは作成されず、/usr/share/nginx/htmlが生成されます。
私は私のウェブサイトファイルを/ var / wwwにアップロードすることを好みます。私はLinuxターミナルの経験がありますが(主にWindows開発者です)、PHP Webサイト(Yii2 Framework)用の/ var / wwwフォルダを作成する正しい方法が何であるかを知りたいです。
mkdirを使用しましたが、ファイルをアップロードしてサブディレクトリを作成しようとしたときに、Filezillaで権限拒否エラーが発生しました。ディレクトリにchownを適用できますが、これが安全であるのか正しいのかはわかりません。このフォルダに対してどの権限を設定する必要がありますか?
編集する
たぶんこの質問は少し混乱するかもしれません...
Filezillaが正しく設定されており、別のディレクトリにアップロードできます。ファイル/フォルダ権限の問題です。 / var / wwwフォルダまたはその中にフォルダを作成するには、mkdirの前にsudoプレフィックスを追加する必要がありますが、Filezillaはそうしません。
問題は、nginxフォルダをどのように再構成するのではなく、nginx用の/var/wwwフォルダを作成するときに心に留めておくべきこと(セキュリティ)です。 sudo mkdirが必要ないようにするには、どのような権限を付与する必要がありますか?私はルートなどに所有権を与えない方が良いと仮定します。
これが本番サーバーになるから確認したかったです。
答え1
Apacheがインストールされている一般的なシステムでは、期待/var/www
どおりに存在しますが、はいrootユーザーが所有する:
~$ ls -ld /var/www
drwxr-xr-x 3 root root 4096 Aug 7 2016 /var/www
サイトのコンテンツをルート以外のユーザーに所有させるには、サイトのファイルを管理したいユーザー(ルートとして)が所有するディレクトリを作成するか、ドキュメントを指す/var/www/html
シンボリックリンクを作成する必要があります。 ngnixによってすでに作成されたルートディレクトリ。とにかく、ディレクトリはおそらく返品rootユーザーが所有します。サイトのコンテンツを管理する役割ユーザーにそれを割り当てたり、chown
その役割ユーザーが所有する他のディレクトリを指す仮想ホストを作成したり(Apache用語で)、同様のソリューションを見つけることができます。
ドキュメントルートがルート所有の場合、ルートのみ内容を変更できます。つまり、新しいファイルをアップロードするにはrootとして認証する必要があります。所有者を変更したり、他の場所でサービスを提供したりするのが最善の選択肢かもしれません。
ngnixという用語では、仮想ホストはサーバーブロックとも呼ばれます。/etc/ngnix/sites-available/
通常、接続できる例を見つけることができます/etc/ngnix/sites-enabled
。サーバー・ブロックを使用する際の鍵は、server_name
(ngnix) またはServerName
(Apache) ディレクティブを使用して HTTP 要求ヘッダーで検索するホスト名を示すことです。サンプル ngnix サーバーブロックファイルは次のとおりです。
server {
listen 80;
listen [::]:80;
root /var/www/example.com/html;
index index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ =404;
}
}
このroot
ディレクティブは、ファイルシステムで提供される物理ファイルを見つける場所を指定します。ユーザーがいる場合は、それを希望のディレクトリwebsiteadmin
として指定できます。/home/websiteadmin/var/www/html