AWS에서 CentOS 7 EC2 인스턴스를 생성하고 웹 서버로 nginx를 설치했습니다. 그러나 Apache와 달리 /var/www 폴더가 생성되지 않고 /usr/share/nginx/html이 생성됩니다.
나는 내 웹사이트 파일을 /var/www에 업로드하는 것을 선호합니다. 저는 Linux 터미널에 대한 경험이 있지만(주로 Windows 개발자입니다) PHP 웹 사이트(Yii2 Framework)용 /var/www 폴더를 만드는 올바른 방법이 무엇인지 알고 싶습니다.
mkdir을 사용했지만 파일을 업로드하고 하위 디렉터리를 생성할 때 Filezilla에서 권한 거부 오류가 발생했습니다. 디렉토리에 chown을 적용할 수 있지만 이것이 안전한지 또는 옳은 일인지는 확실하지 않습니다. 이 폴더에 대해 어떤 권한을 설정해야 합니까?
편집하다
어쩌면 이 질문이 좀 헷갈릴 수도 있겠네요...
Filezilla가 올바르게 구성되었으며 다른 디렉터리에 업로드할 수 있습니다. 파일/폴더 권한 문제입니다. /var/www 폴더나 그 안에 폴더를 만들려면 mkdir 앞에 sudo 접두사를 추가해야 하는데 Filezilla는 그렇게 하지 않습니다.
문제는 nginx 폴더를 어떻게 재구성하느냐가 아니라, nginx용 /var/www 폴더를 생성할 때 염두에 두어야 할 사항(보안)입니다. sudo mkdir이 필요하지 않도록 하려면 어떤 권한을 부여해야 합니까? 나는 루트 등에 소유권(chown)을 부여하지 않는 것이 더 낫다고 가정합니다.
이것이 프로덕션 서버가 될 것이기 때문에 확인하고 싶었습니다.
답변1
Apache가 설치된 일반적인 시스템에서는 /var/www
예상한 대로 존재하지만예루트 사용자가 소유함:
~$ ls -ld /var/www
drwxr-xr-x 3 root root 4096 Aug 7 2016 /var/www
사이트의 콘텐츠를 루트가 아닌 다른 사용자가 소유하게 하려면 사이트의 파일을 관리하려는 사용자(루트로서)가 소유한 디렉토리를 생성하거나 /var/www/html
문서를 가리키는 심볼릭 링크를 생성해야 합니다. ngnix가 이미 생성한 루트 디렉터리입니다. 어쨌든 디렉토리는 아마반품루트 사용자가 소유합니다. 사이트의 콘텐츠를 관리하려는 역할 사용자에게 이를 할당 하거나 chown
해당 역할 사용자가 소유한 다른 디렉터리를 가리키는 가상 호스트를 생성하거나(Apache 용어로) 유사한 솔루션을 찾을 수 있습니다.
문서 루트가 루트 소유인 경우 루트만 내용을 변경할 수 있습니다. 즉, 새 파일을 업로드하려면 루트로 인증해야 합니다. 소유자를 바꾸거나 다른 위치에서 서비스를 제공하는 것이 최선의 선택일 수 있습니다.
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