- 2014.12.26
1. Apache
1) Section 3 : Virtual Hosts
한 시스템에서 여러 개의 도메인과 호스트 이름을 구분하여 웹 서비스 가능. 이름 기반의 버추얼 호스팅
도메인 앞에 cafe 등의 호스트를 붙여 쓰는 것
[/etc/httpd/conf/httpd.conf] 설정
# vi /etc/httpd/conf/httpd.conf
975 ### Section 3: Virtual Hosts
992 #NameVirtualHost *:80
993 NameVirtualHost 192.168.1.24:80
1006 줄 아래로 7줄을 복사 및 수정해서 아래와 같이 버츄얼 호스트 설정
1014 <VirtualHost 192.168.1.24:80>
1015 DocumentRoot /export/home/main/public_html
1016 ServerName www.hatms.com
1017 </VirtualHost>
1018
1019 <VirtualHost 192.168.1.24:80>
1020 DocumentRoot /export/home/main/public_html
1021 ServerName hatms.com
1022 </VirtualHost>
1023
1024 <VirtualHost 192.168.1.24:80>
1025 DocumentRoot /subhost
1026 ServerName sub.hatms.com
1027 </VirtualHost>
# mkdir /subhost/
# cat > /subhost/index.html
<center><H1>Sub Page</H1></center>
# /etc/rc.d/init.d/httpd restart
하지만 sub.hatms.com 페이지가 작동하지 않는다. => DNS 설정 필요.
# vi /var/named/ha.z
12 sub IN A 192.168.1.24
# vi /var/named/ha.r
12 24 IN PTR sub.hatms.com.
# /etc/rc.d/init.d/named restart
[주의]
헌데 버츄얼 호스트를 사용하면 2 section 이 무시되고 바로 버츄얼 호스트가 먹힌다.
따라서 기존의 hostname(www, 없는것) 도 버츄얼호스트 맨 밑에 추가하자.
2. Apache_user directory
user directory 사용하기 (ex www.abc.com/~user)
367 #UserDir disabled
368 UserDir enabled
# service httpd restart
httpd 를 정지 중: [ OK ]
httpd (을)를 시작 중: Syntax error on line 368 of /etc/httpd/conf/httpd.conf:
UserDir "enable" keyword requires a list of usernames
[실패]
enable 은 아니다. 사용자 명으로 진행
368 UserDir samadal
# service httpd restart
재시작은 성공했지만 www.hatms.com/~samadal 은 안됨.
index.html 페이지를 생성 안했다.
# cd ~samadal
# cat > ./index.html
<center><H1>samadal main</H1></center>
375 UserDir public_html
# service httpd restart
여전히 되지 않는다? 아마 public_html 디렉터리에 만들어야 하는듯.
# pwd
/home/samadal
# mkdir ./public_html/
# cat > ./public_html/index.html
<center><H1>samadal public page</H1></center>
이제서야 페이지가 들어가진다. 즉 public_html 디렉터리 안에 해야하는 것이다.
public_html 말고 자기 자신 홈 디렉터리를 사용하려면 아래처럼 사용하면 된다.
375 # UserDir public_html
376 UserDir /export/home
=> samadal 홈 디렉터리 앞쪽에 있는 경로까지 절대경로로 지정
좀더 나은 보안을 위해 다른 계정은 막지만 samadal만 허용하는 스크립트 기재.
367 UserDir disabled
368 UserDir samadal
root만 막는 것은 아래처럼 하면 된다
367 UserDir disabled root
3. Mysql
[구조]
database table field value
Linux반 지웅 인간성 Good
학습력 Good
Mysql 은 R-DBMS(Relationed DabaBase Manage System) 이다.
[DB server 종류]
MySQL : 무료, 오픈소스, 중소형 급
Oracle, MSSQL : 엔터프라이즈급의 대형 DB 서버. 유료
[실습]
cd 안에 있는 mysql* PKG 설치
- mysql-connector-java 는 --nodeps 로 진행
- 이전 mysql 설치했던 것 참조, test 도 nodeps 로 지우고 설치
# /etc/rc.d/init.d/mysqld restart
mysqld 를 정지 중: [ OK ]
MySQL 데이타베이스 초기화 중: WARNING: The host 'samadal.madalgyo' could not be looked up with resolveip.
This probably means that your libc libraries are not 100 % compatible
with this binary MySQL version. The MySQL daemon, mysqld, should work
normally with the exception that host name resolving will not work.
This means that you should use IP addresses instead of hostnames
when specifying MySQL privileges !
Installing MySQL system tables...
OK
Filling help tables...
OK
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h samadal.madalgyo password 'new-password'
Alternatively you can run:
/usr/bin/mysql_secure_installation
which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.
See the manual for more instructions.
You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &
You can test the MySQL daemon with mysql-test-run.pl
cd /usr/mysql-test ; perl mysql-test-run.pl
Please report any problems with the /usr/bin/mysqlbug script!
[ OK ]
mysqld (을)를 시작 중: [ OK ]
[Tip]
mysql 은 서버와 맞물려있기 때문에 완전히 못지운다.
자동 줄바꿈 사용하지 않는 것이 좋으며 줄이 넘어갈것 같으면 엔터 치고 진행. 행의 마지막은 ; 로 종료.
엔터와 스페이스는 같다. 단어를 엔터로 나누지 말아라.
Mysql 명령어 사용 가능 표
D/B Table
creat O O
drop O O
select X O
update X O
insert X O
delete X O
show O O
desc X O
use O X
alter X O
# mysql -u root -p mysql
user ----- db 명
(/etc/passwd user와 mysql user는 다르다.)
초기 password 는 없다. 엔터치면 됨
만들어진 database 목록 보기
mysql> show databases;
+----------------------------+
| Database |
+----------------------------+
| information_schema |
| mysql |
| test |
+---------------------------+
3 rows in set (0.00 sec)
mysql database 로 이동.
use 명령어는 cd 명령어라고 이해하면 된다.
mysql> use mysql;
Database changed
mysql database 안에 있는 table 들 목록 확인
mysql> show tables;
+-------------------------------------+
| Tables_in_mysql |
+------------------------------------+
| columns_priv |
| db | => 사용자와 db를 연결시켜주는 table
| event |
. . .
| time_zone_transition |
| time_zone_transition_type |
| user | => 사용자
+------------------------------------+
23 rows in set (0.00 sec)
table 내의 user 항목으로 이동하려 했으나 실패!
즉 use 명령어가 cd 랑 비슷한 역할이라고 한다면 database 는 directory, table 은 file 이라 생각하면 될듯.
file 은 당연히 cd 로 볼 수 없으니까.
mysql> use user;
ERROR 1049 (42000): Unknown database 'user'
따라서 테이블 내의 항목(필드 & 타입)을 확인하는 명령어인 desc 사용.
mysql> desc user;
+-------------------------------+----------------------------+--------+--------+-----------+---------+
| Field | Type | Null | Key | Default | Extra |
+-------------------------------+-----------------------------+-------+--------+-----------+---------+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Password | char(41) | NO | | | |
. . .
| max_connections | int(11) unsigned | NO | | 0 | |
| max_user_connections | int(11) unsigned | NO | | 0 | |
+-----------------------+------------------------------------+--------+-------+----------+---------+
39 rows in set (0.00 sec)
dbsamadal 이라는 새로운 database를 생성해보자.
mysql> create database dbsamadal;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+----------------------------+
| Database |
+----------------------------+
| information_schema |
| dbsamadal |
| mysql |
| test |
+----------------------------+
4 rows in set (0.01 sec)
새로 만든 dbsamadal database로 이동
mysql> use dbsamadal;
Database changed
mysql> show tables;
Empty set (0.00 sec)
새로 만들었으니 당연히 table도 비어있다. tbsamadal 이라는 table 생성
mysql> create table tbsamadal;
ERROR 1113 (42000): A table must have at least 1 column
하지만 생성에 오류가 떴다. 적어도 1개 이상의 field & type 이 있어야 한다.
정수형의 num, 문자형의 name 항목 생성. 괄호 안에 있는 것은 인수 개수를 뜻함.
mysql> create table tbsamadal(num int(2), name char(10));
Query OK, 0 rows affected (0.01 sec)
잘 만들어진 것 확인할 수 있다.
mysql> show tables;
+-------------------------------+
| Tables_in_dbsamadal |
+-------------------------------+
| tbsamadal |
+-------------------------------+
1 row in set (0.00 sec)
tbsamadal 테이블에 제대로 num과 name이 있는지 확인.
mysql> desc tbsamadal;
+--------+----------+-------+------+-----------+-------+
| Field | Type | Null | Key | Default | Extra|
+-------+-----------+-------+------+-----------+-------+
| num | int(2) | YES | | NULL | |
| name| char(10)| YES | | NULL | |
+-------+-----------+-------+-----+------------+-------+
2 rows in set (0.01 sec)
헌데 이 테이블에 전화번호도 추가했으면 좋겠다. 정수형으로 16개를 받자.
mysql> alter table tbsamadal add tel int(16);
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
잘 추가 되었는지 확인.
mysql> desc tbsamadal;
헌데 이름이 char형 10개면 한글로는 5글자이다. 20으로 늘려 10글자 한글 이름도 가능하게 변경
mysql> alter table tbsamadal modify name char(20);
------- type 변경 시 사용
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
확인은 필수.
mysql> desc tbsamadal;
num 대신 id 라는 것으로 바꾸면서 type도 char 형으로 변경
mysql> alter table tbsamadal change num id char(10);
------ field & type 변경
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
역시나 확인.
mysql> desc tbsamadal;
전화번호에 대한 내용을 삭제해보자.
mysql> alter table tbsamadal drop tel;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc tbsamadal;
table 자체를 삭제해보자.
mysql> show tables;
mysql> drop table tbsamadal;
mysql> show tables;
Empty set (0.00 sec)
작업할 db를 mysql로 변경
mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
mysql> desc user;
테이블의 내용 중 내가 보고 싶은 것들만 골라서 보기
mysql> select host, user, password from user;
password라는 함수를 통해 암호화 하는데 user의 root 에게 주겠다.
mysql> update user set password=password('samadal') where user='root';
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3 Changed: 3 Warnings: 0
mysql> select host, user, password from user;
user 테이블에서 user 항목이 빈칸으로 되어 있는 것들을 지우라는 명령어
mysql> delete from user where user='';
mysql> select host, user, password from user;
테이블에 내가 원하는 값을 입력. password는 password라는 함수를 이용하여 암호화 한 값을 저장
mysql> insert into user(host, user, password) values('localhost', 'usersamadal', password('samadal'));
mysql> select host, user, password from user;
이제 사용자와 database 를 연결시켜줘야한다.
mysql> desc db;
mysql> select host, db, user from db;
+-------+-----------+-------+
| host | db | user |
+-------+-----------+-------+
| % | test | |
| % | test_% | |
+--------+----------+-------+
2 rows in set (0.00 sec)
쓰레기 값이 들어가있다. db 테이블 중 host 에 %가 들어가 있는 것 삭제
mysql> delete from db where host='%';
mysql> select host, db, user from db;
Empty set (0.00 sec)
이제 사용자와 db를 연결시켜주기 위해 host, db명, user명 및 user가 갖게 될 권한에 y 를 준다.
mysql> insert into db values('localhost', 'dbsamadal', 'usersamadal',
-> 'y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y');
확인.
mysql> select host, db, user from db;
+------------+----------------+-----------------+
| host | db | user |
+------------+----------------+-----------------+
| localhost | dbsamadal | usersamadal |
+------------+----------------+-----------------+
1 row in set (0.00 sec)
mysql> Bye
# /etc/rc.d/init.d/mysqld restart
새로 만든 계정과 db가 연동되는지 확인
# mysql -u usersamadal -p dbsamadal
--------- 뒤에 db명을 적어주지 않아도 되지만
작업위해 어차피 use db명으로 이동해야 함
Enter password:
mysql> show databases;
+---------------------------+
| Database |
+---------------------------+
| information_schema |
| dbsamadal |
+---------------------------+
'Study > CentOS' 카테고리의 다른 글
[38] myphpadmin(2), xe (0) | 2015.04.06 |
---|---|
[37] mysql(2), mysql password 분실 시 대처 방법, myphpadmin(1) (0) | 2015.04.06 |
[35] 종합 중간점검, Apache_Alias (0) | 2015.04.06 |
[34] Apache (0) | 2015.04.06 |
[33] DNS 실습, static ip 설정, interface 이름 변경 (0) | 2015.04.06 |
- 2014.12.24
[문제]
웹 기본경로 : /export/home/main/public_html 기존에 설정한 내용들 모두 삭제 후 진행
- 조건
host : ns, www
domain : hatms.com
user : main
skel : /sam/
auto creating directory : public_html
ip : 192.168.1.24
index : main.html
hdd : 1G, SCSI : 100, 200, 200, 300, 200
automount, nfs, autofs 설정 partition : 300M - main 계정 생성
ip 변경
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
5 IPADDR=192.168.1.24
8 DNS1=192.168.1.24
11 DOMAIN=hatms.com
1G SCSI HDD 추가, fdisk, mkfs 진행
=> 이전 실습 문서 참조
기존 samadal 계정 $HOME = /home/samadal 로 이동
# usermod -d /home/samadal samadal
# mv /export/home/samadal/ /home/
nfs, autofs 관련 PKG 설치 및 실행
=> 설치 되어 있음
# /etc/rc.d/init.d/nfs restart
# chkconfig nfs on
# /etc/rc.d/init.d/autofs restart
# chkfonfig autofs on
nfs export 설정, server측 automount 설정
# mkdir /sdb
# cd /sdb/
# mkdir 1 2 3 5 6
# vi /etc/fstab
19 /dev/sdb1 /sdb/1 ext4 defaults 1 2
20 /dev/sdb2 /sdb/2 ext4 defaults 1 2
21 /dev/sdb3 /sdb/3 ext4 defaults 1 2
22 /dev/sdb5 /sdb/5 ext4 defaults 1 2
23 /dev/sdb6 /sdb/6 ext4 defaults 1 2
# mount -a
# vi /etc/exports
1 /sdb/1 192.168.1.0/24(rw,no_root_squash,sync)
2 /sdb/2 192.168.1.0/24(rw,no_root_squash,sync)
3 /sdb/3 192.168.1.0/24(rw,no_root_squash,sync)
4 /sdb/5 192.168.1.0/24(rw,no_root_squash,sync)
5 /sdb/6 192.168.1.0/24(rw,no_root_squash,sync)
# exportfs -ra
# exportfs -v
nfs 방화벽 오픈
# system-config-firewall
=> NFS4 체크
client측 automount : 100, 200, 300(/export/home)
# vi /etc/fstab
24 192.168.1.24:/sdb/1 /nfs_client/1 nfs defaults 1 2
25 192.168.1.24:/sdb/2 /nfs_client/2 nfs defaults 1 2
26 192.168.1.24:/sdb/5 /export/home nfs defaults 1 2
autofs : 200, 200
# vi /etc/autofs.conf
38 browse_mode = yes
# vi /etc/auto.misc
16 sdb3 -rw,hard,intr 192.16 8.1.24:/sdb/3
17 sdb6 -rw,hard,intr 192.16 8.1.24:/sdb/6
auto creating directory & skel 생성
# cp -r /etc/skel/ /sam/
# mkdir /sam/public_html
main 계정 생성
# useradd -d /export/home/main -m -k /sam main
tip) autofs 로 300M 마운트 하는 방법
# vi /etc/auto.master
7 /export /etc/auto.misc
# vi /etc/auto.misc
18 home -rw,hard,intr 192.16 8.1.24:/sdb/5
# /etc/rc.d/init.d/autofs restart
# useradd -d /export/home/main -m -k /sam main
DNS & Web 설정
# vi /etc/named.rfc1912.zones
43 zone "hatms.com" IN {
44 type master;
45 file "ha.z";
46 allow-update { none; };
47 };
48
49 zone "1.168.192.in-addr.arpa" IN {
50 type master;
51 file "ha.r";
52 allow-update { none; };
53 };
# vi /var/named/ha.z
1 $TTL 1D
2 @ IN SOA ns.hatms.com. root.hat ms.com(
3 2014122401
4 3H
5 15M
6 1W
7 1D)
8 IN NS ns.hatms.com.
9 IN A 192.168.1.24
10 ns IN A 192.168.1.24
11 www IN A 192.168.1.24
# vi /var/named/ha.r
1 $TTL 1D
2 @ IN SOA ns.hatms.com. root.hat ms.com(
3 2014122301
4 3H
5 15M
6 1W
7 1D)
8 IN NS ns.hatms.com.
9 IN A 192.168.1.145
10 24 IN PTR ns.hatms.com.
11 24 IN PTR www.hatms.com.
# chmod 660 /var/named/ha*
# chown .named /var/named/ha*
# vi /etc/httpd/conf/httpd.conf
262 ServerAdmin root@hatms.com
277 ServerName www.hatms.com:80
293 DocumentRoot "/export/home/main/public_html"
403 DirectoryIndex index.html index.php index.html .var main.html
# vi /export/home/main/public_html/main.html
1 <html>
2 <head></head>
3 <body><H1>main page</H1></body>
4 </html>
# chmod 701 /export/home/main/
# /etc/rc.d/init.d/httpd restart
# chkfonfig httpd on
[문제]
www.hatms.com
www.hatms.com/user1
두개의 내용이 다르게 뜨도록 설정
# cd ~main/public_html/
# mkdir user1
# cp ./main.html ./user1/
[ Apache_Alias ]
# vi /etc/httpd/conf/httpd.conf
552 Alias /icons/ "/var/www/icons/"
553 Alias /0g "/gongG/"
# /etc/rc.d/init.d/httd restart
# mkdir /gongG/
# cat > /gongG/index.html
<cetner><H1> gong~~~ gong~~~ </H1></center>
아래 페이지들 접속하여 확인해보기.
www.hatms.com/0g
www.hatms.com/icons
=> Alias 뒤 디렉터리에 / 붙이면 꼭 / 까지 붙여야 접속이 되고 / 안붙이면 /를 안붙여도 접속이 된다.
'Study > CentOS' 카테고리의 다른 글
[37] mysql(2), mysql password 분실 시 대처 방법, myphpadmin(1) (0) | 2015.04.06 |
---|---|
[36] Apache_VirtualHosts, user directory, mysql(1) (0) | 2015.04.06 |
[34] Apache (0) | 2015.04.06 |
[33] DNS 실습, static ip 설정, interface 이름 변경 (0) | 2015.04.06 |
[32] DNS 실습 with VNC (0) | 2015.04.06 |
참고 : http://www.server-world.info/en/note?os=CentOS_6&p=dns&f=6
+ @
주 DNS 서버 및 보조 DNS 서버를 만들어봤다.
추가 및 변동된 부분만 추려 기재한다.
1. 주 DNS 서버 및 보조 DNS 서버에 관련 PKG 설치
# yum install bind*
2. 주 DNS 서버 측 설정
# vi /etc/named.conf
11 listen-on port 53 { any; };
12 listen-on-v6 port 53 { any; };
17 allow-query { any; };
18 allow-transfer { 보조DNS서버ip; };
19 recursion no;
# vi /etc/named.rfc1912.zones
주 DNS 서버 도메인
44 zone "dns.com" IN {
45 type master;
파일 이름 변경 가능
46 file "dns.z";
47 allow-update { none; };
48 };
49
주 DNS 서버 ip의 네트워크 부분 ip
50 zone "1.168.192.in-addr.arpa" IN {
51 type master;
52 file "dns.r";
53 allow-update { none; };
54 };
55
보조 DNS 서버 도메인
56 zone "sedns.com" IN {
57 type master;
58 file "sedns.z";
59 allow-update { none; };
60 };
# vi /var/named/dns.z
1 $TTL 1D
2 @ IN SOA ns.dns.com. root.dns.com.(
3 2014122301
4 3H
5 15M
6 1W
7 1D)
8 IN NS ns.dns.com.
9 IN NS ns.sedns.com.
10
11 IN A 192.168.1.224
도메인의 host 부분
12 ns IN A 192.168.1.224
13 www IN A 192.168.1.224
14 ftp IN CNAME dns.com.
# vi /var/named/dns.r
1 $TTL 1D
2 @ IN SOA ns.dns.com. root.dns.com.(
3 2014122301
4 3H
5 15M
6 1W
7 1D)
8 IN NS ns.dns.com.
9 IN NS ns.sedns.com.
10 IN A 192.168.1.224
11
주 DNS 서버 도메인
12 224 IN PTR dns.com.
13 224 IN PTR ns.dns.com.
14 224 IN PTR www.dns.com.
보조 DNS 서버 도메인. 주 DNS 서버 도메인과 같은 네트워크 대역대라 파일 1개에 묶었음
15 222 IN PTR sedns.com.
16 222 IN PTR ns.sedns.com.
17 222 IN PTR www.sedns.com.
# vi /var/named/sedns.z
1 $TTL 1D
2 @ IN SOA ns.dns.com. root.dns.com.(
3 2014122301
4 3H
5 15M
6 1W
7 1D)
8 IN NS ns.dns.com.
9 IN NS ns.sedns.com.
10
11 IN A 192.168.1.222
12 ns IN A 192.168.1.222
13 www IN A 192.168.1.222
원할한 운영을 위한 권한 및 소유권 설정
# chmod 660 /var/named/dns* /var/named/min*
# chown .named /var/named/dns* /var/named/min*
데몬 재시작 및 시작프로그램에 등록
# /etc/rc.d/init.d/named restart
# chkconfig named on
3. 보조 DNS 서버 설정
# vi /etc/named.conf
11 listen-on port 53 { any; };
12 listen-on-v6 port 53 { any; };
17 allow-query { any; };
18 recursion no;
# vi /etc/named.rfc1912.zones
43 zone "dns.com" IN {
보조 DNS 서버의 성격 기술
44 type slave;
45 masters { 주DNS서버ip; };
46 file "slaves/dns.z";
47 notify no;
48 };
49
50 zone "1.168.192.in-addr.arpa" IN {
51 type slave;
52 masters { 주DNS서버ip; };
53 file "slaves/dns.r";
54 notify no;
55 };
56
57 zone "minimal.com" IN {
58 type slave;
59 masters { 주DNS서버ip; };
60 file "slaves/sedns.z";
61 notify no;
62 };
데몬 재시작 및 시작프로그램에 등록
# /etc/rc.d/init.d/named restart
# chkconfig named on
4. 확인
각 서버에서 nslookup 을 통해 본인이 지정한 도메인 및 ip를 넣어서 정상 작동하는지 확인.
특히 보조 DNS 서버에서는 /var/named/slaves/ 에 제대로 파일들이 들어왔는지 확인
만약 잘 안되었다면 각 서버에서 아래의 명령어를 통해 서버 셋팅 적용해보길.
# rndc reload
# /etc/rc.d/init.d/named restart
'Linux > CentOS' 카테고리의 다른 글
CentOS 6.6 minimal 로 DHCP server 구축 (0) | 2015.04.09 |
---|---|
Cent OS 6.6 에서 nmail 로 메일서버 구축하기 (0) | 2015.04.07 |
서버 시간 동기화(ntpd) (0) | 2015.04.06 |
CentOS 6.6 single mode(싱글모드) 진입방법 - root의 password(비밀번호) 분실 시 (0) | 2015.03.28 |
CentOS 6.6 minimal에 Wordpress 설치하기! (0) | 2015.03.28 |