2018.02.06-19일차 Web Server2
* 강사님 강의 노트 :
* Database
1> 개념
ㆍDatabase : 여러가지 공동의 업무에 필요한 데이터를 유기적으로 결합하여 저장한 집합체
ㆍDBMS(DataBase Management System)
- 데이타베이스 관리자라고도 불림
- 다수의 컴퓨터 사용자들의 데이터베이스 안에 데이터들을 기록하거나 접근할 수 있게 해주는 프로그램
- 목적은 데이터베이스 내의 정보 검색, 저장, 효율적인 환경을 제공함
- RDBMS(Relation(관계형) DBMS)는 표준화되어 사용자 및 프로그램 인터페이스를 제공함
ㆍSQL(Structured Query Language : 구조화 질의 언어)
- 종류로는 Oracle, MySQL, MariaDB 등이 있음
ㆍMySQL(CentOS 6.x 까지)
- SQL문을 사용하는 오픈 소스의 RDBMS
- 매우 빠르고 유연하고 사용하기 쉬운 장점
- 다중 사용자, 다중 스레드를 지원하고 C, C++, Java, PHP 스크립트 언어를 위한 응용 프로그램 인터페이스를
제공함
- 유닉스, 윈도우즈 서버, 리눅스에서도 사용함
ㆍMariaDB
- SQL문을 사용하는 오픈 소스의 RDBMS
- MySQL과 동일한 소스 코드를 기반으로 GPL v2 라이선스를 따름
- Oracle 소유의 현재 불확실한 MySQL의 라이선스 상태에서 반발하여 만들어짐
- MySQL 5.5 까지는 소스 코드가 거의 동일함
2> 실습
패키지명은 mariadb로 시작함
mariadb.service를 재시작
mariadb 접속방법
# mysql -u root -p mysql
mysql은 명령어
-u은 접속할 사용가 계정명
root는 관리자
-p는 접속할 사용자 계정의 비밀번호
mysql은 사용할 데이터베이스명
비밀번호는 처음이기 때문에 null 값이다.
mariadb 버전과 현재 날짜
select version(), current_date;
참고로 명령어 뒤에는 반드시 ; (세미콜론)을 입력!
① 첫번째 명령어
> show
show는 데이터베이스 목록을 출력
show는 테이블 목록을 출력
show는 데이터베이스와 테이블에서 사용 가능한 명령어
사용형식
> show databases;
> show tables;
cf) table (> show tables;)
table은 관계형 데이터베이스에서 세로줄과 가로줄의 모델을 이용하여
정렬된 데이터 집합(값)의 모임
db table은 데이터베이스와 사용자를 연동(연결)시켜주는 테이블
user table은 사용자 생성 테이블 사용자는 user table에서만 생성할 수 있음
// mariadb 실습
[root@junga ~]# yum -y install mariadb*
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: ftp.daumkakao.com
* extras: ftp.daumkakao.com
* updates: ftp.daumkakao.com
Package 1:mariadb-libs-5.5.56-2.el7.x86_64 already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package mariadb.x86_64 1:5.5.56-2.el7 will be installed
---> Package mariadb-bench.x86_64 1:5.5.56-2.el7 will be installed
--> Processing Dependency: perl(GD) for package: 1:mariadb-bench-5.5.56-2.el7.x86_64
---> Package mariadb-devel.x86_64 1:5.5.56-2.el7 will be installed
--> Processing Dependency: openssl-devel(x86-64) for package: 1:mariadb-devel-5.5.56-2.el7.x86_64
---> Package mariadb-embedded.x86_64 1:5.5.56-2.el7 will be installed
---> Package mariadb-embedded-devel.x86_64 1:5.5.56-2.el7 will be installed
---> Package mariadb-server.x86_64 1:5.5.56-2.el7 will be installed
--> Processing Dependency: perl-DBD-MySQL for package: 1:mariadb-server-5.5.56-2.el7.x86_64
---> Package mariadb-test.x86_64 1:5.5.56-2.el7 will be installed
--> Processing Dependency: perl(Test::More) for package: 1:mariadb-test-5.5.56-2.el7.x86_64
--> Processing Dependency: perl(Env) for package: 1:mariadb-test-5.5.56-2.el7.x86_64
--> Running transaction check
---> Package openssl-devel.x86_64 1:1.0.2k-8.el7 will be installed
--> Processing Dependency: zlib-devel(x86-64) for package: 1:openssl-devel-1.0.2k-8.el7.x86_64
--> Processing Dependency: krb5-devel(x86-64) for package: 1:openssl-devel-1.0.2k-8.el7.x86_64
---> Package perl-DBD-MySQL.x86_64 0:4.023-5.el7 will be installed
---> Package perl-Env.noarch 0:1.04-2.el7 will be installed
---> Package perl-GD.x86_64 0:2.49-3.el7 will be installed
---> Package perl-Test-Simple.noarch 0:0.98-243.el7 will be installed
--> Running transaction check
---> Package krb5-devel.x86_64 0:1.15.1-8.el7 will be installed
--> Processing Dependency: libkadm5(x86-64) = 1.15.1-8.el7 for package: krb5-devel-1.15.1-8.el7.x86_64
--> Processing Dependency: libverto-devel for package: krb5-devel-1.15.1-8.el7.x86_64
--> Processing Dependency: libselinux-devel for package: krb5-devel-1.15.1-8.el7.x86_64
--> Processing Dependency: libcom_err-devel for package: krb5-devel-1.15.1-8.el7.x86_64
--> Processing Dependency: keyutils-libs-devel for package: krb5-devel-1.15.1-8.el7.x86_64
---> Package zlib-devel.x86_64 0:1.2.7-17.el7 will be installed
--> Running transaction check
---> Package keyutils-libs-devel.x86_64 0:1.5.8-3.el7 will be installed
---> Package libcom_err-devel.x86_64 0:1.42.9-10.el7 will be installed
---> Package libkadm5.x86_64 0:1.15.1-8.el7 will be installed
---> Package libselinux-devel.x86_64 0:2.5-11.el7 will be installed
--> Processing Dependency: libsepol-devel(x86-64) >= 2.5-6 for package: libselinux-devel-2.5-11.el7.x86_64
--> Processing Dependency: pkgconfig(libsepol) for package: libselinux-devel-2.5-11.el7.x86_64
--> Processing Dependency: pkgconfig(libpcre) for package: libselinux-devel-2.5-11.el7.x86_64
---> Package libverto-devel.x86_64 0:0.2.5-4.el7 will be installed
--> Running transaction check
---> Package libsepol-devel.x86_64 0:2.5-6.el7 will be installed
---> Package pcre-devel.x86_64 0:8.32-17.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
===========================================================================================
Package Arch Version Repository Size
===========================================================================================
Installing:
mariadb x86_64 1:5.5.56-2.el7 base 8.7 M
mariadb-bench x86_64 1:5.5.56-2.el7 base 388 k
mariadb-devel x86_64 1:5.5.56-2.el7 base 752 k
mariadb-embedded x86_64 1:5.5.56-2.el7 base 3.6 M
mariadb-embedded-devel x86_64 1:5.5.56-2.el7 base 7.4 M
mariadb-server x86_64 1:5.5.56-2.el7 base 11 M
mariadb-test x86_64 1:5.5.56-2.el7 base 8.1 M
Installing for dependencies:
keyutils-libs-devel x86_64 1.5.8-3.el7 base 37 k
krb5-devel x86_64 1.15.1-8.el7 base 266 k
libcom_err-devel x86_64 1.42.9-10.el7 base 31 k
libkadm5 x86_64 1.15.1-8.el7 base 174 k
libselinux-devel x86_64 2.5-11.el7 base 186 k
libsepol-devel x86_64 2.5-6.el7 base 74 k
libverto-devel x86_64 0.2.5-4.el7 base 12 k
openssl-devel x86_64 1:1.0.2k-8.el7 base 1.5 M
pcre-devel x86_64 8.32-17.el7 base 480 k
perl-DBD-MySQL x86_64 4.023-5.el7 base 140 k
perl-Env noarch 1.04-2.el7 base 16 k
perl-GD x86_64 2.49-3.el7 base 173 k
perl-Test-Simple noarch 0.98-243.el7 base 170 k
zlib-devel x86_64 1.2.7-17.el7 base 50 k
Transaction Summary
===========================================================================================
Install 7 Packages (+14 Dependent packages)
Total download size: 43 M
Installed size: 285 M
Downloading packages:
(1/21): libcom_err-devel-1.42.9-10.el7.x86_64.rpm | 31 kB 00:00:00
(2/21): keyutils-libs-devel-1.5.8-3.el7.x86_64.rpm | 37 kB 00:00:02
(3/21): krb5-devel-1.15.1-8.el7.x86_64.rpm | 266 kB 00:00:02
(4/21): libsepol-devel-2.5-6.el7.x86_64.rpm | 74 kB 00:00:00
(5/21): libkadm5-1.15.1-8.el7.x86_64.rpm | 174 kB 00:00:00
(6/21): libverto-devel-0.2.5-4.el7.x86_64.rpm | 12 kB 00:00:00
(7/21): mariadb-bench-5.5.56-2.el7.x86_64.rpm | 388 kB 00:00:00
(8/21): mariadb-devel-5.5.56-2.el7.x86_64.rpm | 752 kB 00:00:00
(9/21): libselinux-devel-2.5-11.el7.x86_64.rpm | 186 kB 00:00:02
(10/21): mariadb-embedded-5.5.56-2.el7.x86_64.rpm | 3.6 MB 00:00:10
(11/21): mariadb-5.5.56-2.el7.x86_64.rpm | 8.7 MB 00:00:30
(12/21): mariadb-embedded-devel-5.5.56-2.el7.x86_64.rpm | 7.4 MB 00:01:24
mariadb-test-5.5.56-2.el7.x86_ FAILED
http://ftp.daumkakao.com/centos/7.4.1708/os/x86_64/Packages/mariadb-test-5.5.56-2.el7.x86_64.rpm: [Errno 14] curl#18 - "transfer closed with 7331664 bytes remaining to read"
Trying other mirror.
(13/21): pcre-devel-8.32-17.el7.x86_64.rpm | 480 kB 00:00:00
(14/21): openssl-devel-1.0.2k-8.el7.x86_64.rpm | 1.5 MB 00:00:00
(15/21): mariadb-server-5.5.56-2.el7.x86_64.rpm | 11 MB 00:01:26
(16/21): perl-GD-2.49-3.el7.x86_64.rpm | 173 kB 00:00:00
(17/21): perl-Test-Simple-0.98-243.el7.noarch.rpm | 170 kB 00:00:00
(18/21): zlib-devel-1.2.7-17.el7.x86_64.rpm | 50 kB 00:00:00
(19/21): perl-DBD-MySQL-4.023-5.el7.x86_64.rpm | 140 kB 00:00:05
(20/21): perl-Env-1.04-2.el7.noarch.rpm | 16 kB 00:00:05
mariadb-test-5.5.56-2.el7.x86_ FAILED 7:10:46 ETA
http://ftp.kaist.ac.kr/CentOS/7.4.1708/os/x86_64/Packages/mariadb-test-5.5.56-2.el7.x86_64.rpm: [Errno 12] Timeout on http://ftp.kaist.ac.kr/CentOS/7.4.1708/os/x86_64/Packages/mariadb-test-5.5.56-2.el7.x86_64.rpm: (28, 'Operation too slow. Less than 1000 bytes/sec transferred the last 30 seconds')
Trying other mirror.
(21/21): mariadb-test-5.5.56-2.el7.x86_64.rpm | 8.1 MB 00:00:00
-------------------------------------------------------------------------------------------
Total 285 kB/s | 43 MB 00:02:36
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : 1:mariadb-5.5.56-2.el7.x86_64 1/21
Installing : perl-DBD-MySQL-4.023-5.el7.x86_64 2/21
Installing : 1:mariadb-server-5.5.56-2.el7.x86_64 3/21
Installing : libsepol-devel-2.5-6.el7.x86_64 4/21
Installing : pcre-devel-8.32-17.el7.x86_64 5/21
Installing : libselinux-devel-2.5-11.el7.x86_64 6/21
Installing : libkadm5-1.15.1-8.el7.x86_64 7/21
Installing : keyutils-libs-devel-1.5.8-3.el7.x86_64 8/21
Installing : 1:mariadb-embedded-5.5.56-2.el7.x86_64 9/21
Installing : libverto-devel-0.2.5-4.el7.x86_64 10/21
Installing : libcom_err-devel-1.42.9-10.el7.x86_64 11/21
Installing : krb5-devel-1.15.1-8.el7.x86_64 12/21
Installing : perl-GD-2.49-3.el7.x86_64 13/21
Installing : perl-Test-Simple-0.98-243.el7.noarch 14/21
Installing : zlib-devel-1.2.7-17.el7.x86_64 15/21
Installing : 1:openssl-devel-1.0.2k-8.el7.x86_64 16/21
Installing : 1:mariadb-devel-5.5.56-2.el7.x86_64 17/21
Installing : perl-Env-1.04-2.el7.noarch 18/21
Installing : 1:mariadb-test-5.5.56-2.el7.x86_64 19/21
Installing : 1:mariadb-embedded-devel-5.5.56-2.el7.x86_64 20/21
Installing : 1:mariadb-bench-5.5.56-2.el7.x86_64 21/21
Verifying : perl-Env-1.04-2.el7.noarch 1/21
Verifying : 1:mariadb-embedded-devel-5.5.56-2.el7.x86_64 2/21
Verifying : zlib-devel-1.2.7-17.el7.x86_64 3/21
Verifying : perl-Test-Simple-0.98-243.el7.noarch 4/21
Verifying : perl-GD-2.49-3.el7.x86_64 5/21
Verifying : libcom_err-devel-1.42.9-10.el7.x86_64 6/21
Verifying : libverto-devel-0.2.5-4.el7.x86_64 7/21
Verifying : 1:mariadb-embedded-5.5.56-2.el7.x86_64 8/21
Verifying : krb5-devel-1.15.1-8.el7.x86_64 9/21
Verifying : libselinux-devel-2.5-11.el7.x86_64 10/21
Verifying : 1:mariadb-devel-5.5.56-2.el7.x86_64 11/21
Verifying : 1:mariadb-bench-5.5.56-2.el7.x86_64 12/21
Verifying : keyutils-libs-devel-1.5.8-3.el7.x86_64 13/21
Verifying : libkadm5-1.15.1-8.el7.x86_64 14/21
Verifying : pcre-devel-8.32-17.el7.x86_64 15/21
Verifying : libsepol-devel-2.5-6.el7.x86_64 16/21
Verifying : 1:mariadb-test-5.5.56-2.el7.x86_64 17/21
Verifying : 1:mariadb-server-5.5.56-2.el7.x86_64 18/21
Verifying : 1:openssl-devel-1.0.2k-8.el7.x86_64 19/21
Verifying : perl-DBD-MySQL-4.023-5.el7.x86_64 20/21
Verifying : 1:mariadb-5.5.56-2.el7.x86_64 21/21
Installed:
mariadb.x86_64 1:5.5.56-2.el7 mariadb-bench.x86_64 1:5.5.56-2.el7
mariadb-devel.x86_64 1:5.5.56-2.el7 mariadb-embedded.x86_64 1:5.5.56-2.el7
mariadb-embedded-devel.x86_64 1:5.5.56-2.el7 mariadb-server.x86_64 1:5.5.56-2.el7
mariadb-test.x86_64 1:5.5.56-2.el7
Dependency Installed:
keyutils-libs-devel.x86_64 0:1.5.8-3.el7 krb5-devel.x86_64 0:1.15.1-8.el7
libcom_err-devel.x86_64 0:1.42.9-10.el7 libkadm5.x86_64 0:1.15.1-8.el7
libselinux-devel.x86_64 0:2.5-11.el7 libsepol-devel.x86_64 0:2.5-6.el7
libverto-devel.x86_64 0:0.2.5-4.el7 openssl-devel.x86_64 1:1.0.2k-8.el7
pcre-devel.x86_64 0:8.32-17.el7 perl-DBD-MySQL.x86_64 0:4.023-5.el7
perl-Env.noarch 0:1.04-2.el7 perl-GD.x86_64 0:2.49-3.el7
perl-Test-Simple.noarch 0:0.98-243.el7 zlib-devel.x86_64 0:1.2.7-17.el7
Complete!
[root@junga ~]# mysql -u root -p mysql
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
[root@junga ~]#
[root@junga ~]# systemctl restart mariadb.service
[root@junga ~]#
[root@junga ~]# mysql -u root -p mysql
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.56-MariaDB MariaDB Server
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [mysql]> select version(), current_date;
+----------------+--------------+
| version() | current_date |
+----------------+--------------+
| 5.5.56-MariaDB | 2018-02-06 |
+----------------+--------------+
1 row in set (0.00 sec)
MariaDB [mysql]>
MariaDB [mysql]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
MariaDB [mysql]> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| event |
| func |
| general_log |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| host |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| servers |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
24 rows in set (0.00 sec)
* Web Server(Apache)
1> 개념
- apache 웹 서버는 공개형 웹 서버 프로그램으로써 다양한 플랫폼에서 동작할 수 있도록 설계가 되어있음
- apache 웹 서버는 클라이언트가 웹 브라우저를 통해서 요청한 데이터를 클라이언트 웹 브라우저로 보내는 역할
다시 말하면, 웹 서버는 클라이언트의 요청을 기다리고 있다가 요청을 받게 되면 해당 데이터를 보내는 프로그램
2> 특징
- standalone (계속 가동중, 요청 기다림)
3> 설정파일
① /etc/httpd/conf/httpd.conf
-httpd의 설정파일
31줄 : 웹 서버 설정파일, 바이너리 파일, 로그 파일, 모듈 파일 등이 저장되어 있는 기본 디렉터리를
지정
41줄 : 지정한 IP Address를 80번 포트로 듣겠음
42줄 : 모든 IP Address를 80번 포트로 듣겠음
ex> 포트를 바꾸는 경우는 보통 서버 리뉴얼을 하는 경우 바꿔서 작업하고 작업 완료시 포트를 원래로 바꿔줌
ex> clubbox에 각 메뉴 탭들을 보면 사용하는 web언어와, 포트가 각 메뉴마다 다른 것을 확인 할 수 있다.
=> 41, 42 둘 중 하나만 써야..,
( 참고로 serverTokens 항목이 centOS 6.x이하에는 있었는데 centOS 6에서는 없어짐
ServerTokens
- 오류 및 서버 메시지를 출력되는 서버에 대한 정보를 설정
CentOS 7 에서는 ServerTokens를 사용하기 위해서 별도로 추가를 해야함
ServerSignature on
값의 종류
Full → 아파치 서버 버전, 운영체제 정보, 모듈 정보
OS → 아파치 서버 버전, 운영 체제 정보
Major→ 어퍼차 서버의 주 버전
Min → 아파치 서버의 모든 버전
Minor→ 아차피 서버의 하위 버전
Prod → 아파치 서버의 정보 )
56줄 : 모듈 관련 파일을 httpd.conf 설정파일에 포함하겠음
(ls -l /etc/httpd/conf.modules.d/*.conf # /conf.modules.d 하위에 모든 파일목록)
66, 67줄 : 실행되는 httpd의 사용자 및 그룹 권한을 설정하는 항목
(보안상 nobody로 사용함)
69줄은 서버 설정
86줄: 관리자 e-mail 주소를 적어주는 항목
- 웹 문서 로딩시 에러가 발생 했을 경우 에러 페이지에 보여질 관리자 e-mail 주소를 알려줌
94줄 : 클라이언트에게 보여줄 호스트 네임을 지정하는 항목 만약 DNS가 없을 시 IP Address
입력해야함
101~104줄 : 최상위 디렉터리에 대한 기본 옵션과 권한을 나타내는 설정
AllowOverride 지시자는 어떻게 접근을 허용할 것인지에 대한 설정
Require all denied는 요구하는 모든 것들을 거부하겠음
denied를 granted로 변경하면 허용하겠다라는 의미
118줄 : 관리자의 문서 // index.html 관련
- 서버의 웹 문서가 들어있는 경로를 지정
- 참고로 맨 마지막에 /를 추가하지 않음(dir. 티낼 필요 없음!)
- 심볼릭 링크파일이나 alias로 다른 경로를 가르키도록 설정할 수 있음
다시 말해, 웹 문서가 들어있는 경로
// centOS 6.x 버전대와 달리 centOS 7은 123, 130 라인을 추가해줘야..,
123~127줄은 /var/www 디렉터리에 대해서 별도로 기본 옵션과 권한을 나타내는 설정
130 ~156줄은 /var/www/html 디렉터리에 대해서 기본 옵션과 권한을 나타내는 설정
143줄 : Options 지시자는 지정한 디렉터리 하위에 모든 파일과 디렉터리를 적용할
접근 제어를 설정
Indexes는 URL(Uniform Resource Locator : 자원 위치 지정자)을 지정한 디렉터리에
index.html과 같은 지정한 파일이 없을 경우 해당 디렉터리의 파일 목록을 보여줌
FollowSymLinks는 디렉터리내에서 심볼릭 링크의 사용을 허가함
② /etc/httpd/conf.d/userdir.conf
(참고로 centOS 6.x (이하)
/etc/httpd/conf/httpd.conf 파일에
포함되어 있음)
- 웹 서버에서 root 이외에 다른 계정으로
홈페이지를 운영할 때 사용자의 웹 문서
디렉터리를 지정하는 곳
- 사용자 계정의 홈 디렉터리를 이용하여
페이지 출력
vi /etc/httpd/conf.d/userdir.conf
17줄 : 사용할 사용자 계정을 활성화 또는
비활성화 설정하는 항목
ex)
UserDir disabled
→ 모든 사용자 계정을 비활성화
UserDir disabled 계정명
→ 지정한 사용자 계정을 비활성화
UserDir enabled
→ 모든 사용자 계정을 활성화
UserDir enabled 계정명
→ 지정한 사용자 계정을 활성화
UserDir enabled 계정명1 계정명2
→ 여러 사용자 계정을 활성화
24줄 : 지정한 사용자 계정의 웹
경로로 사용할 기본 디렉터리를 지정하는 항목
③ /etc/httpd/conf.d/autoindex.conf
(참고로 centOS 6.x (이하))
/etc/httpd/conf/httpd.conf 파일에 포함되어 있음
centOS 7.x 버전부터는 기능이 나뉘어서 파일이 분리됨)
- 특정 디렉터리를 주소의 일부 페이지처럼 사용할 수 있게 함
21줄 : Alias /icons/
"/usr/share/httpd/icons/"
/icons/ 는 fakename
"/usr/share/httpd/icons/" 는 realname
fakename은 realname으로 설정된 경로에 있는 index.html의 내용을
마치 웹 페이지 주소처럼 사용하기 위해 속이는 이름
realname은 fakename을 사용해서 내용을 출력하기 위한 실제
index.html 파일이 저장되어 있는 디렉터리
VirtualHost(가상 호스트)
(참고로 CentOS6.x(이하)에는
/etc/httpd/conf/httpd.conf 파일에 있었던 내용인데 별도로 작업을 해야함)
준비물
/etc/httpd/conf.d 디렉터리 하위에 파일을 생성(파일명은 예를 들면 vhost.conf)
cafe.mylifebravo.com을 추가
/etc/httpd/conf.d/vhost.conf(이 파일은 우리가 생성한 파일임)
1줄 : <VirtuaHost *:80> 또는 <VirtualHost IP Address:80> // 80 : port no.
2줄 : ServerAdmin 관리자의 e-mail
3줄 : ServerName 사용할 호스트네임
4줄 : DocumentRoot 사용할 디렉터리(웹 문서 경로)
5줄 : ErrorLog "logs/사용할 로그파일
→ 아파치 웹 서버의 에러로그파일의 위치를 지정함(별도로)
(기본: ls -l /etc/httpd/
lrwxrwxrwx 1 root root 19 2월 2 15:12 logs -> ../../var/log/httpd)
6줄 : CustomLog "logs/사용할 로그파일 (각각 파일명을 지정)
→ 아파치 웹 서버의 웹로그파일 위치를 지정
common(접근정보), agent, referer 정보를 모두 저장하기 위함
7줄 : </VirtuaHost>
가상호스트를 사용하면 기존에
DocumentRoot가 가상호스트의 DocumentRoot를 따라가기 때문에
이를 방지하기 위하여 맨 첫줄에 아래와 같이 작업
<VirtuaHost *:80>
</VirtuaHost>
ex)
1 → 2 => 1 → 1
1 → 2
위 설정이 다 되었으면 저장 후 종료
가상호스트의 DocumentRoot를 생성
생성한 디렉터리 하위에 index.html 생성
생성한 index.html 파일안에 내용 입력
/etc/httpd/conf/httpd.conf 파일에
별도로 123줄~127줄처럼 해당 경로를 추가
4> 명령어
web server(apache)
서비스명은 httpd.service
* Web Browser
1> 개념
- 사용자가 웹 서버에게 필요한 데이터를 요청하도록 해주며 웹 서버가 응답하게 되면 데이터를 컴파일을 통해서
사용자에게 보여주는 역할
2> Web Browser의 종류
Windows → Internet Explorer, Edge
Linux → Firefox
Google → Chrome
Apple → Safari
3> 관련 용어
Web Server는 80번 포트를 사용(Well-known)
HTTP(Hyper Text Transfer Protocol)
- WWW(World Wide Web) 상에서 정보를 주고받을 수 있는 프로토콜.
주로 html 문서를 주고받는데 쓰임.
- 클라이언트와 서버 사이에 이루어지는 요청(Request)/응답(Response) 프로토콜.
Web Document(웹 문서 : HTML 문서)
- 웹 문서는 이미지가 포함된 정적인 형태의 html 문서만을 제공함
4> 특징
① 정적 웹 서버의 동작 방식
- 기본적으로 apache 웹 서버는 HTML(HyperText Markup Language)과 같은 정적인 데이터만 처리하게 됨
- 정적이라고 하는 것은 접속 후 데이터를 요청할 때마다 똑같은(변하지 않음) 데이터만 보낸다는 것을 의미
- 호출한 파일을 클라이언트로 가지고 와서 실행함
CSSL(Client Side Script Language) : html, java scripts
- 보안상 취약
- 누구든지 다 볼 수 있음
② 동적 웹 서버의 동작 방식
- 동적인 데이터를 처리하기 위해서 웹 스크립트 언어인 C, ASP(Active Server Page), PHP(Personal
Hypertext Preprocessor), JSP(Pava Server Page), Python, Perl 등
모듈(Module)은 '전체를 다루는 일부'라고 의미를 둘 수 있음
- 프로그램 내부적으로 하나의 종합된 동작을 하도록 작은 부분을 분할함
더 찾아봥~!
- 호출한 파일을 서버에서 실행시켜서 실행 결과 값을 가져옴
- 호출한 파일을 서버에서 실행시켜서 실행 결과 값을 가져옴
SSSL(Server Side Script Language) : asp, php 등등
- 보안상 강함
- 나 혼자 보는 것
(참고로 Linux는 웹 서버는 Apache, FTP 서버는 vsftpd 사용함
Windows Server는 IIS(Internet Information Service)를 사용함
IIS가 웹 서버와 FTP Server를 포함하고 있음)
ex>
사용자들이 naver 요청하면 모두 같은 웹 브라우저를 보게됨 → 정적
여기서 로그인을 하면 모두 다른 화면이 나옴. 나혼자 보는 것→ 동적
인터넷 키면, 웹서버(Apache), DNS, DB 등 같이 구동중..,
// ② UserDir.conf 설정 (/etc/httpd/conf.d/userdir.conf 17, 24줄 )
# systemctl restart named.service
# systemctl restart httpd.service
# vi /etc/httpd/conf.d/userdir.conf
17 UserDir enabled bonwon
24 UserDir public_html
// 준비물 셋팅
[root@junga ~]# cp -r /etc/skel /userdirskel
[root@junga ~]#
[root@junga ~]# mkdir /userdirskel/public_html
[root@junga ~]#
[root@junga ~]# ls -la /userdirskel
합계 16
drwxr-xr-x 4 root root 97 2월 6 13:07 .
dr-xr-xr-x. 22 root root 4096 2월 6 13:07 ..
-rw-r--r-- 1 root root 18 2월 6 13:07 .bash_logout
-rw-r--r-- 1 root root 193 2월 6 13:07 .bash_profile
-rw-r--r-- 1 root root 231 2월 6 13:07 .bashrc
drwxr-xr-x 4 root root 39 2월 6 13:07 .mozilla
drwxr-xr-x 2 root root 6 2월 6 13:07 public_html
[root@junga ~]#
[root@junga ~]# useradd -m -k /userdirskel bonwon
[root@junga ~]#
[root@junga ~]# ls -la /home/bonwon
합계 12
drwx------ 4 bonwon bonwon 97 2월 6 13:08 .
drwxr-xr-x. 4 root root 34 2월 6 13:08 ..
-rw-r--r-- 1 bonwon bonwon 18 2월 6 13:07 .bash_logout
-rw-r--r-- 1 bonwon bonwon 193 2월 6 13:07 .bash_profile
-rw-r--r-- 1 bonwon bonwon 231 2월 6 13:07 .bashrc
drwxr-xr-x 4 bonwon bonwon 39 2월 6 13:07 .mozilla
drwxr-xr-x 2 bonwon bonwon 6 2월 6 13:07 public_html
[root@junga ~]#
[root@junga ~]# systemctl restart httpd.service
[root@junga ~]#
[root@junga ~]# touch /home/bonwon/public_html/index.html
[root@junga ~]#
[root@junga ~]# vi /home/bonwon/public_html/index.html
Hello~ This is UserDir Page!!! :)
[root@junga ~]#
[root@junga ~]# ls -l /home/bonwon/public_html/
합계 4
-rw-r--r-- 1 root root 34 2월 6 13:13 index.html
[root@junga ~]#
// 파이어 폭스
http://www.mylifebravo.com/~bonwon
-------
=> NOT FOUND
# systemctl restart httpd.service
// 허가권 변경
[root@junga ~]# ls -ld /home/bonwon/
drwx------ 4 bonwon bonwon 97 2월 6 13:08 /home/bonwon/
[root@junga ~]#
[root@junga ~]#
[root@junga ~]# chmod 711 /home/bonwon
[root@junga ~]#
[root@junga ~]# ls -ld /home/bonwon/
drwx--x--x 4 bonwon bonwon 97 2월 6 13:08 /home/bonwon/
// 파이어 폭스
http://www.mylifebravo.com/~bonwon
-------
=> Forbidden
[root@junga ~]# chmod 711 /home/bonwon
[root@junga ~]#
[root@junga ~]# ls -ld /home/bonwon/
drwx--x--x 4 bonwon bonwon 97 2월 6 13:08 /home/bonwon/
[root@junga ~]# ls -l /etc/httpd/conf.d
합계 20
-rw-r--r-- 1 root root 366 10월 20 05:39 README
-rw-r--r-- 1 root root 2926 10월 20 05:39 autoindex.conf
-rw-r--r-- 1 root root 323 10월 20 01:44 manual.conf
-rw-r--r-- 1 root root 1257 2월 6 13:07 userdir.conf
-rw-r--r-- 1 root root 824 10월 20 01:44 welcome.conf
// ③ Alias dir.설정 (/etc/httpd/conf.d/autoindex.conf)
# vi /etc/httpd/conf.d/autoindex.conf
21 Alias /icons/ "/usr/share/httpd/icons/"
22 Alias /itbank/ "/a/b/c/"
23
24 <Directory "/usr/share/httpd/icons">
25 Options Indexes MultiViews FollowSymlinks
26 AllowOverride None
27 Require all granted
28 </Directory>
29 <Directory "/a/b/c"> // 복사 후 dir 명만 변경
30 Options Indexes MultiViews FollowSymlinks
31 AllowOverride None
32 Require all granted
33 </Directory>
[root@junga ~]# mkdir -p /a/b/c
[root@junga ~]#
[root@junga ~]# touch /a/b/c/index.html
[root@junga ~]#
[root@junga ~]# vi /a/b/c/index.html
[root@junga ~]#
[root@junga ~]# systemctl restart httpd.service
// virtual host 실습
// 준비물 셋팅
[root@junga ~]# ls -l /etc/httpd/conf.d
합계 20
-rw-r--r-- 1 root root 366 10월 20 05:39 README
-rw-r--r-- 1 root root 3077 2월 6 13:44 autoindex.conf
-rw-r--r-- 1 root root 323 10월 20 01:44 manual.conf
-rw-r--r-- 1 root root 1257 2월 6 13:07 userdir.conf
-rw-r--r-- 1 root root 824 10월 20 01:44 welcome.conf
[root@junga ~]#
[root@junga ~]# touch /etc/httpd/conf.d/vhost.conf
[root@junga ~]#
[root@junga ~]# ls -l /etc/httpd/conf.d
합계 20
-rw-r--r-- 1 root root 366 10월 20 05:39 README
-rw-r--r-- 1 root root 3077 2월 6 13:44 autoindex.conf
-rw-r--r-- 1 root root 323 10월 20 01:44 manual.conf
-rw-r--r-- 1 root root 1257 2월 6 13:07 userdir.conf
-rw-r--r-- 1 root root 0 2월 6 13:55 vhost.conf
-rw-r--r-- 1 root root 824 10월 20 01:44 welcome.conf
[root@junga ~]#
[root@junga ~]# vi /var/named/mylife.for.zone
cafe IN A 192.168.46.90 // 추가
[root@junga ~]#
[root@junga ~]# systemctl restart named.service
[root@junga ~]#
[root@junga ~]# nslookup
> cafe.mylifebravo.com
Server: 192.168.46.90
Address: 192.168.46.90#53
Name: cafe.mylifebravo.com
Address: 192.168.46.90
> exit
[root@junga ~]#
// 파이어폭스 방문기록 전체 삭제
// 파이어 폭스 2개 켜서
http://www.mylifebravo.com/
http://cafe.mylifebravo.com/
// vhost.conf 설정
# vi /etc/httpd/conf.d/vhost.conf
1 <VirtualHost *:80>
2 </VirtualHost>
3
4 <VirtualHost *:80>
5 ServerAdmin root@mylifebravo.com
6 ServerName cafe.mylifebravo.com
7 DocumentRoot /c/a/f/e
8 ErrorLog "logs/mlb_error_log"
9 CustomLog "logs/mlb_access_log" combined
10 </VirtualHost>
// 아파치 설정파일 설정
# vi /etc/httpd/conf/httpd.conf
123 <Directory "/web/server">
124 AllowOverride None
125 # Allow open access:
126 Require all granted
127 </Directory>
128
129 <Directory "/c/a/f">
130 AllowOverride None
131 # Allow open access:
132 Require all granted
133 </Directory>
[root@junga ~]# systemctl restart httpd.service
Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.
[root@junga ~]#
[root@junga ~]# systemctl -l status httpd.service
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since 화 2018-02-06 14:24:21 KST; 1min 27s ago
Docs: man:httpd(8)
man:apachectl(8)
Process: 6120 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=1/FAILURE)
Process: 6119 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
Main PID: 6119 (code=exited, status=1/FAILURE)
2월 06 14:24:21 junga.kgitbank systemd[1]: Starting The Apache HTTP Server...
2월 06 14:24:21 junga.kgitbank httpd[6119]: httpd: Syntax error on line 357 of /etc/httpd/conf/httpd.conf: Syntax error on line 10 of /etc/httpd/conf.d/vhost.conf: Expected </VirtualHost> but saw </VirtuaHost>
2월 06 14:24:21 junga.kgitbank systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
2월 06 14:24:21 junga.kgitbank kill[6120]: kill: cannot find process ""
2월 06 14:24:21 junga.kgitbank systemd[1]: httpd.service: control process exited, code=exited status=1
2월 06 14:24:21 junga.kgitbank systemd[1]: Failed to start The Apache HTTP Server.
2월 06 14:24:21 junga.kgitbank systemd[1]: Unit httpd.service entered failed state.
2월 06 14:24:21 junga.kgitbank systemd[1]: httpd.service failed.
=> 오타 수정
[root@junga ~]# systemctl restart httpd.service
'BigData_Off1 > 리눅스2' 카테고리의 다른 글
2018.02.07-20일차 DB (0) | 2018.02.07 |
---|---|
2018.02.05-18일차 Web Server (0) | 2018.02.05 |
DNS 2(slave DNS), Web Server (0) | 2018.02.02 |
2018.01.30 ~ 02.02-14-17일차 DNS(개념, 실습1-4) (0) | 2018.01.30 |
Autofs 2(① autofs 2nd, ② 실습1) (0) | 2018.01.29 |