Linux 5일 강의 (KREN) (작성중)
2018년 9월 17일에서 21일까지 5일동안 리눅스 강의를 진행하였습니다.
강의 장소는 Skill Support 에서 진행하였으며, 교제는 우재남님의 "이것이 리눅스다" 를 사용하였습니다.
Linux 강의 내용을 정리하자면 아래와 같습니다.
위 이미지의 아키텍쳐를 리눅스를 이용해서 구현하는것을 실습하였습니다.
교제는 이론 수업용으로 사용 하였으며, 설치된 각각의 App 은 server-world.info/en 사이트를 참조 하였습니다.
세팅된 내용에 대해서 점차적으로 정리해서 올리도록 하겠습니다.
1. WEB - apache, nginx
2. APM - apache + php + MariaDB
=======================================================================================
### Wordpress 설치
yum install httpd mariadb mariadb-server php php-common php-mysql php-gd php-xml php-mbstring php-mcrypt php-xmlrpc unzip wget -y
systemctl start httpd
systemctl start mariadb
systemctl enable httpd
systemctl enable mariadb
mysql_secure_installation
Set root password? [Y/n] n
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
mysql -u root -p
MariaDB [(none)]>CREATE DATABASE wordpress;
MariaDB [(none)]>GRANT ALL PRIVILEGES on wordpress.* to 'user'@'localhost' identified by 'password';
MariaDB [(none)]>FLUSH PRIVILEGES;
MariaDB [(none)]>exit
mkdir /data
cd /data
wget http://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz
cp -avr wordpress/* /var/www/html/
mkdir /var/www/html/wp-content/uploads
chown -R apache:apache /var/www/html/
chmod -R 755 /var/www/html/
cd /var/www/html/
mv wp-config-sample.php wp-config.php
vi wp-config.php
define('DB_NAME', 'wordpress');
define('DB_USER', 'user');
define('DB_PASSWORD', 'password');
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload
setenforce 0
vi /etc/selinux/config
SELINUX=disabled
=======================================================================================
3. DNS - Bind
=======================================================================================
# yum -y install bind bind-utils bind-libs bind-chroot
--> chroot 패키지 설치하면 chroot(가상 루트 /var/name/chroot) 폴더에 원본 파일이 생성되고 나머지는 심볼릭 링크
--> named 서비스 데몬을 실행하면 /var/named/chroot/var/named, /var/named/chroot/etc 디렉토리와 설정 파일이 자동으로 생성
# rpm -qa |grep ^bind |sort
bind-9.8.2-0.37.rc1.el6_7.6.x86_64
bind-chroot-9.8.2-0.37.rc1.el6_7.6.x86_64
bind-libs-9.8.2-0.37.rc1.el6_7.6.x86_64
bind-utils-9.8.2-0.37.rc1.el6_7.6.x86_64
--> 설치된 패키지 확인
# vi /etc/named.conf
-> DNS 데몬 설정 파일
# vi /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
//listen-on port 53 { 127.0.0.1; };
listen-on port 53 { any; };
-> DNS 서버의 port 번호 설정과 접근 할 수 있는 IP 설정 옵션
-> DNS port 53에 대한 모든 IP가 접근 가능하도록 설정
listen-on-v6 port 53 { ::1; };
directory "/var/named";
-> zone 파일 디렉토리 설정 옵션
dump-file "/var/named/data/cache_dump.db";
-> cache dump 파일이 생성되는 파일의 디렉토리 설정 옵션
statistics-file "/var/named/data/named_stats.txt";
-> 통계파일이 생성되는 디렉토리와 파일의 이름을 지정하는 설정 옵션
memstatistics-file "/var/named/data/named_mem_stats.txt";
-> memory관련 통계파일이 생성되는 디렉토리와 파일의 이름을 지정하는 설정 옵션
allow-query { any; };
-> DNS 서버의 쿼리를 허용할 ip 대역 설정
recursion yes;
-> 외부에서 Name Server를 지정하여 허용/차단 옵션
dnssec-enable yes;
-> DNSSEC 서명검증 기능 설정 (공개키 암호화방식으로 데이터 위조-변조 공격을 막는 설정 )
-> DNSSEC ( Domain Name System Security Extension ),bind 9버전 부터 적용
dnssec-validation yes;
-> DNSSEC 검증 확인 설정
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
-> DLV ( DNSsec Lookaside Validator )
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
->Name Server의 실행에 있어 디버깅시에 참조 할 수 있는 log파일 생성 위치를 지정하는 설정 옵션
zone "." IN {
type hint;
file "named.ca";
};
-> "." 루트 도메인 지정
-> type : hint(루트도메인을 지정), master(1차 네임서버), slave(2차 네임서버)
-> file : Name Server에 대한 설정을 named.ca라는 파일에서 참조하는 설정
-> named.ca 파일은 13개의 루트 네임서버의 정보가 있다.
-> 루트 네임서버가 13개일 경우 493Byte으로 UDP 연결이 가능하지만
루트 네임서버가 13개 이상일 경우 512Byte가 넘어서 TCP 연결로 해야하기 때문에 부하가 많아 생겨 13개까지 루트 네임서버가 있다.
include "/etc/named.rfc1912.zones";
-> 외부 설정파일 설정 옵션
include "/etc/named.root.key";
-> root 영역을 위한 DNSKey 파일
# named-checkconf /etc/named.conf
-> conf 파일 정상적인지 체크
# vi /etc/named.rfc1912.zones
-> zone 관련 외부 설정 파일
-> zone 설정을 named.conf에서 설정하지 않고 named.rfc1912.zones 파일에서 설정
// named.rfc1912.zones:
//
// Provided by Red Hat caching-nameserver package
//
// ISC BIND named zone configuration for zones recommended by
// RFC 1912 section 4.1 : localhost TLDs and address zones
// and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt
// (c)2007 R W Franks
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
zone "localhost.localdomain" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "localhost" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "1.0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "0.in-addr.arpa" IN {
type master;
file "named.empty";
allow-update { none; };
};
zone "dongwook.com" IN {
->도메인명 (dongwook.com 도메인명으로 요청이 들어오면 dongwook.zone 파일을 참조해서 질의 응답)
type master;
-> MASTER / SLAVE 설정
file "dongwook.zone";
-> zone 파일 설정 (정방향)
allow-update { none; };
-> zone 파일 갱신 허용 (any or none)
};
zone "0.168.192.in-addr.arpa" IN {
->192.168.0 대역으로 요청이 들어오면 dongwook.rev 파일을 참조해서 질의 응답)
type master;
-> MASTER / SLAVE 설정
file "dongwook.rev";
-> zone 파일 설정 (역방향)
allow-update { none; };
-> zone 파일 갱신 허용 (any or none)
};
# named-checkconf /etc/named.rfc1912.zones
-> conf 파일 정상적인지 체크
-> 아무런 메세지가 발생하지 않으면 OK
=======================================================================================
4. DB - MariaDB (Master, Slave Replication configue)
5. Local Cache - Redis
6. Storage - NFS, GlusterFS
7. Proxy Server(L4) - Haproxy