정리하는 공간
리눅스) 웹 서버(아파치, html, perl, python) userdir 본문
아파치 httpd
/etc/httpd/conf/httpd.conf
웹 서버 환경설정 파일
/var/www/
cgi-bin, html 디렉터리가 있는 곳으로 웹서버 파일스크립트 정보가 html, cgi(perl, python 등)에 맞게 담겨있다.
/var/log/httpd (링크)
/etc/httpd/logs (주경로)
접속과 오류관련 로그들이 담겨 있어 해당 서버에 클라이언트가 접속하는 정보, 접속시 오류 당보가 기록된다.
아파치 환경설정 파일
서버루트로 잘 변경하지 않는다.
클라이언트 목적지 포트로 80번 포트를 쓰라는 뜻이다.
(80 포트번호는 생략 가능하다)
아파치 웹서버의 여러 파일들을 소유주와 소유그룹을 지정하는 것이다.
웹서버 관리자의 메일 주소
DNS 서버이름을 넣는 주석이다.
권한을 설정한다.
Tip
외부에서 개인이 만든 웹서버에 접속할 때
http://xxx.xxx.xxx.xx 로 이이피 주소를 입력할텐데, 이때 리눅스 디렉터리에선 /var/www와 같다.
즉, 리눅스에서 /var/www 경로 밑에 A 디렉터리에서 index.html 웹서버 스크립트 를 넣는다면,
http://xxx.xxx.xxx.xx/A/index.html 이 URL 주소가 되는 것이다. (=/var/www/A/index/lhtml)
이때, 하위 디렉터리를 나누어 그 속어 파일 스크립트들을 넣게 되는데, 각각의 디렉터리마다 접근이 부여된다.
여기서 접근이 가능한지의 권한을 설정하는 것이다.
문서들을 위에 설정된 경로에 넣는다. (기본 웹문서 파일)
에러 발생했을 시 로그 값을 위 경로에 넣는다.
/var/log/httpd (링크)
/etc/httpd/logs (주경로)
cgi-bin 디렉터리를 /var/www/cgi-bin 으로 들어가면 된다는 것.
URL 로 나타내면 http://xxx.xxx.xxx.xx/cgi-bin/index.html 과 같다. (=/var/www/cgi-bin/index.html)
Tip
CGI 란?
클라이언트-----------(html)-----------서버-----------(SQL)-----------DB
클라이언트와 서버는 html 언어로 주고받고, 서버와 DB는 SQL언어로 정보를 주고 받는다.
언어가 달라 서로 정보를 읽을 수 없을 텐데, 이를 읽을 수 있도록 변환해주는 것이
CGI이고 이 CGI 안에는 프로그램 PHP, ASP, JSP 등이 있는 것이다.
즉!
웹서버가 클라이언트에게 제공하는 데이터는 html인데 이 언어는 사용자들이 요구하는 동적인 데이터는 제공하지 못한다. 이런 목적을 위해 사용하는 것이 PHP,ASP, JSP, PERL, PYTHON 과 같은 서버사이드 스크립트이다.
이런 서버 사이드 스크립트와 웹 서버가 서로 통신하는 방법을 정의한 것이 CGI이다.
환경설정 파일의 마지막 행은, /etc/httpd/conf.d 디렉터리의 *.conf 파일을 이어 붙이라는 의미로 남겨두었다.
웹서버
웹서버에 설정된 ip값을 입력해 들어가본다. http://xxx.xxx.xxx.xx
아마 접속이 되지 않을 것인데, 방화벽 설정이 안 되어 있기 때문이다.
iptables -A INPUT -p tcp -m state -state NEW --dport 80 -j ACCEPT 입력.
Tip
프로토콜을 꼭 지정해야 목적지 포트를 입력할 수 있다. (둘은 한 몸)
상태값을 입력하지 않아도 목적지가 80인 트래픽에 접속할 수 있다. 하지만 트래픽을 세밀하게 조정하기 위해 설정한다.
기본 웹 문서 넣기
html
기본적인 웹문서는 /var/www/html/ 디렉터리 아래에 파일 스크립트로 있어야 한다. 이 경로 아래에 아무 파일이 없다면
welcome.conf 라는 보조파일이 열린다. 그럼 이 경로에 html 파일을 만들어준다.
이제 웹 주소에 http://xxx.xxx.xxx.xx/index.html 을 입력하면 위 스크립트 형식에 맞추어진 화면을 볼 수 있다.
php
우선 패키지를 설치해 준다. yum -y install php php-pear
환경설정 파일에서 유럽 기준이었던 시간을 서울로 바꿔준다.
(설정 파일이 변경되었다면 httpd 데몬 재가동)
/var/www/html 하래에 .php파일을 하나 만들어 준다.
주소에 똑같이 http://xxx.xxx.xxx.xx/index.php 입력하면 웹 화면을 볼 수 있다.
CGI 웹 서버 만들기 (동적인 프로그램 perl, python)
perl
우선 perl을 받아준다. yum -y install perl
httpd 데몬이 CGI (서버 사이드 언어)를 번역할 수 있게 httpd 환경설정 파일에서 설정해준다.
스크립트를 보면 동적 스크립트 파일은 위에 넣어두자고 되어있다.
동적 언어를 읽을 수 있도록 위에 처럼 권한을 설정해준다.
AddHandler cgi-script 행에 .cgi .pl을 넣어주고 주석도 풀어줘야 웹 서버에 열린다.
마쳤으면 httpd 데몬을 재가동한다.
이제 /var/www/cgi-bin 디렉터리로 이동해서 perl 스크립트를 만들어준다.
임의로 파일을 만들어주고 눈에 보기 쉽게 확장자는 .pl로 만들어준다.
파일을 만들고 권한을 살펴보면 일반 사용자는 실행 권한이 없는데,
이 파일을 누구나 실행할 수 있도록 권한을 설정해준다.
똑같이 http://xxx.xxx.xxx.xx/cgi-bin/first.pl URL을 입력해주면 위 스크립트 파일이 웹 페이지에 열린다.
python
똑같이 httpd 환경설정 파일에서 스크립트를 읽을 수 있도록 .py를 추가해준다.
httpd 데몬을 다시 재가동 해준다.
똑같이 cgi-bin 디렉터리에 임의의 파일 스크립트 .py로 만들어준다
다시 권한 설정을 해서 일반 사용자도 실행을 할 수 있도록 만들어 준다.
httpd://xxx.xxx.xxx.xx/cgi-bin/first.py 를 열면 웹 화면을 볼 수 있다.
userdir 사용 (CGI)
리눅스 시스템에 존재하는 사용자에게 웹 사이트를 제공하고, 그 웹 사이트에서 CGI 사용을 허가하는 방법이다.
[user1 사용자]
userdir의 주 환경 설정 파일을 설정해줘야한다.
/etc/httpd/conf.d/userdir.conf
(환경설정파일)
위 사진처럼 설정을 변경해준다. (25행은 굳이 추가를 안 해 주어도 된다.)
-24행 주석 제거
-옵션 추가
Tip
user1만 활성화하고 나머지 사용자는 비활성화하는 경우
UserDir disabled
UserDir enabled user1
대부분의 사용자에게 UserDir을 허용하고 일부만 제한하는 경우
UserDir disabled user1
UserDir enabled
모든 사용자에게 UserDir을 허용할 때
#UserDir disabled
UserDir public_html
(모든사용자에게 허용하고 사용자 홈디렉터리에 public_html 디렉터리 안에 웹페이지가 존재하면 서비스를 제공하겠다.)
환경설정파일이 바뀌었으니 httpd를 다시 재가동 해준다.
권한 설정
루트사용자가 일반 사용자들에게 웹 서버를 확인 할 수 있게 하는 것이기 때문에
사용자 디렉터리와 사용자 디렉터리의 public_html 디렉터리의 권한을 맞게 변경해주어야 한다.
(user1 홈디렉터리 아래 public_html 디렉터리를 임의로 만들어준다)
/home/user1 디렉터리는 권한을 711
/home/user1/public_html 디렉터리는 권한을 755로 지정해줘야한다.
/home/user1과 /home/user1/public_html 디렉터리의 소유주와 그룹 권한도 모두 user1으로 바꿔준다.
이후 위에서 사용했던 스크립트 파일 하나를 public_html 디렉터리에 복사한다.
마지막으로 URL을 웹 주소에 입력하면 복사된 파일 스크립트를 볼 수 있다.
user1의 디렉터리는 ~user1으로 기입해 주어야한다.
http://xxx.xxx.xxx.xx/~user1/first.pl
Tip
~user1 에서 물결을 없앨 수도 있다.
/etc/httpd/conf/httpd.conf 주 환경 파일에서 알리아스를 아래처럼 넣어준다.
스크립트 파일이 웹에서 보여지지 않을 경우
이유는 SELinux의 보안 설정 때문에 권한이 제한된다고 한다. 이를 풀어주는 명령어를 입력한다.
setsebool -P httpd_enable_homedirs true
chcon -R -t httpd_sys_content_t /home/user1/public_html
chcon -t httpd_sys_script_exec_t /home/user1/public_html/first.pl
chcon -t httpd_sys_script_exec_t /home/user1/public_html/first.py
차례로 입력해준다.
맨 아래 2개는 파일 명의 확장자에 따라 입력해주면 좋을 듯 싶다.
'리눅스 기초' 카테고리의 다른 글
리눅스) Apache 인증 사용(Basic 인증, Digest인증) (0) | 2022.05.12 |
---|---|
리눅스) SELinux (0) | 2022.05.12 |
리눅스) 방화벽(firewalld, iptables) (0) | 2022.05.12 |
리눅스) 리눅스 시스템의 부팅4(grub2) (0) | 2022.05.12 |
리눅스) 리눅스 시스템의 부팅3 (데몬 프로세스) (0) | 2022.05.12 |