리눅스

 

Centos6.7  다운로드

 

http://mirror.nsc.liu.se/centos-store/6.7/isos/x86_64/

 

Index of /centos-store/6.7/isos/x86_64/

Name↓Last Modified:Size:Type:

../ -  Directory

0_README.txt2015-Aug-04 23:25:062.1Ktext/plain

CentOS-6.7-x86_64-bin-DVD1.iso2015-Aug-04 23:51:443.6Gapplication/octet-stream

CentOS-6.7-x86_64-bin-DVD1to2.torrent2015-Aug-05 17:57:02226.0Kapplication/x-bittorrent

CentOS-6.7-x86_64-bin-DVD2.iso2015-Aug-04 23:51:522.0Gapplication/octet-stream

CentOS-6.7-x86_64-LiveCD.iso2015-Aug-07 20:22:33697.0Mapplication/octet-stream

CentOS-6.7-x86_64-LiveCD.torrent2015-Aug-11 13:40:3427.9Kapplication/x-bittorrent

CentOS-6.7-x86_64-LiveDVD.iso2015-Aug-07 20:23:241.8Gapplication/octet-stream

CentOS-6.7-x86_64-LiveDVD.torrent2015-Aug-11 13:40:3474.8Kapplication/x-bittorrent

CentOS-6.7-x86_64-minimal.iso2015-Aug-04 23:59:27395.0Mapplication/octet-stream

CentOS-6.7-x86_64-minimal.torrent2015-Aug-05 17:57:0216.0Kapplication/x-bittorrent

CentOS-6.7-x86_64-netinstall.iso2015-Aug-04 23:41:08230.0Mapplication/octet-stream

CentOS-6.7-x86_64-netinstall.torrent2015-Aug-05 17:57:029.6Kapplication/x-bittorrent

md5sum.txt2015-Aug-10 18:31:080.3Ktext/plain

md5sum.txt.asc2015-Aug-10 18:58:371.2Ktext/plain

README.txt2015-Aug-04 23:25:062.1Ktext/plain

sha1sum.txt2015-Aug-10 18:31:080.4Ktext/plain

sha1sum.txt.asc2015-Aug-10 18:58:391.2Ktext/plain

sha256sum.txt2015-Aug-10 18:31:080.5Ktext/plain

sha256sum.txt.asc2015-Aug-10 18:58:411.4Ktext/plain

 

 

 

1. 아파치 설치 

CentOS를 기본 설치했다면 httpd이 설치되어 있다.

CentOS를 최소 설치(minimal installation)했다면 httpd이 설치되어 있지 않다.

 

1.1 예시 (설치안됨)[편집]

[root@localhost ~]# rpm -qa httpd

[root@localhost ~]# yum list httpd

... (생략)

Available Packages

httpd.x86_64 2.2.3-83.el5.centos updates

 

 

1.2 예시 (설치됨)[편집]

리눅스 설치시 옵션에 따라 아파치가 함께 설치된 경우도 있다.

 

[root@localhost ~]# rpm -qa httpd

httpd-2.2.15-60.el6.centos.6.x86_64

 

[root@localhost ~]# yum list httpd

Loaded plugins: fastestmirror, refresh-packagekit, security

Loading mirror speeds from cached hostfile

* base: ftp.neowiz.com

* extras: ftp.neowiz.com

* updates: centos.mirror.cdnetworks.com

Installed Packages

httpd.x86_64 2.2.15-60.el6.centos.6

 

 

2. yum으로 설치[편집]

[root@localhost ~]# yum install httpd

Loaded plugins: fastestmirror, refresh-packagekit, security

Setting up Install Process

Loading mirror speeds from cached hostfile

* base: ftp.neowiz.com

* extras: ftp.neowiz.com

* updates: centos.mirror.cdnetworks.com

Resolving Dependencies

--> Running transaction check

---> Package httpd.x86_64 0:2.2.15-45.el6.centos will be updated

 

3.  확인 2

[root@localhost ~]# rpm -qa httpd

httpd-2.2.15-60.el6.centos.6.x86_64

 

 

4.서비스 시작

[root@localhost ~]# service httpd start

Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName

[ OK ]

 

 

5. 재부팅시 자동 시작

[root@localhost ~]# chkconfig --list httpd

httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off

[root@localhost ~]# chkconfig httpd on

[root@localhost ~]# chkconfig --list httpd

httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

[root@localhost ~]# chkconfig --list httpd

httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

 

 

*  iptables 사용방법

 

CentOS 7 firewall 사용하지만 CentOS6 인경우

기본적으로 설치된 iptables를 사용하여 설정을 합니다.

 

– 기본 SSH 인 22번 포트만 허용된 상태입니다.

– 웹서비스(www)를 위해 22 설정 아래에 TCP 80 을 추가합니다.

– 웹서버에 SSL 인증서가 설치되어 https 주소로 서비스하는 경우 TCP 443 추가합니다.

 

# vi /etc/sysconfig/iptables

# Firewall configuration written by system-config-securitylevel# Manual customization of this file is not recommended.…

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT

COMMIT

 

방화벽을 사용하여 특정 IP 허용

-A INPUT -s ip 주소 -j ACCEPT

 

방화벽을 사용하여 특정 IP 차단

-A INPUT -s ip 주소 -j DROP

 

 

방화벽을 사용하여 특정 Port 허용

-A INPUT -p tcp –dport 443 -j ACCEPT

 

방화벽을 사용하여 특정 Port 차단

-A INPUT -p tcp –dport 443 -j DROP

 

방화벽을 사용하여 특정 IP와 Port 차단

-A INPUT -s 172.20.3.**-p tcp –dport 22 -j DROP

 

 

방화벽을 사용하여 특정 IP와 Port를 차단한 후 방어된 로그 설정

-I INPUT -s 172.20.3.** -p tcp –dport 22 -j LOG –log-prefix “[PLURA SSH Defend]”

 

 

 

방화벽 설정이 완료되면, 방화벽을 재시작해줍니다.

# /etc/init.d/iptables restart 또는 service iptables restart

 

 

< 참조 - apache httpd 2.4 설치>

CentOS 6 에 apache httpd 2.4 설치

설치

epel httpd 24 repository 설치

curl -L -s http://repos.fedorapeople.org/repos/jkaluza/httpd24/epel-httpd24.repo > /etc/yum.repos.d/epel-httpd24.repo

 

httpd 2.4 설치

yum install httpd24-httpd httpd24-mod_ssl

부팅시 자동 시작 설정

 

chkconfig httpd24-httpd on

설정 파일 수정(/opt/rh/httpd24/root/etc/httpd 에 위치)

 

vim /opt/rh/httpd24/root/etc/httpd/conf/httpd.conf

 

서비스 구동

service httpd24-httpd restart

 

 

 

 2. JDK 8 설치하기

 

#cd /opt/

#wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz"#tar xzf jdk-8u131-linux-x64.tar.gz

 

#cd /opt/jdk1.8.0_131

 

#alternatives --install /usr/bin/java java /opt/jdk1.8.0_131/bin/java 2# alternatives --config java

 

 

[root@localhost jdk1.8.0_131]# alternatives --config java

There is 1 program that provides 'java'.

Selection Command

-----------------------------------------------

*+ 1 /opt/jdk1.8.0_131/bin/java

Enter to keep the current selection[+], or type selection number: 1

 

 

# java -version

java version "1.8.0_131"

Java(TM) SE Runtime Environment (build 1.8.0_131-b11)

Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

 

 

alternative 명령어로 default java 버전 변경

 

대부분의 리눅스 배포본에는 Java JDK 가 버전별로 여러개를 설치할 수 있도록 패키지가 구성되어있습니다.

여러버전의 JDK를 설치하였을때 기본으로 실행되는 Java 버전을 변경하는 방법은 alternative 명령어를 이용하는것입니다.

alternatives 라는 명령어를 그냥 실행해 보면 아래와 같이 Help를 확인할 수 있다.

 

 

# alternatives --config java

 

 

vi /etc/profile

 

export JAVA_HOME=/opt/jdk1.8.0_131

export JRE_HOME=/opt/jdk1.8.0_131/jre

 

 

source /etc/profile 

 

 

 

3. Tomcat 설치 및 구동

 

톰캣의 설치절차로는 다운로드, 압축풀기, 위치지정, 심볼릭링크, 환경변수 설정, 구동 순입니다.

DK 설치시와 마찬가지로 wget을 이용하여 파일을 다운로드 합니다.

tar.gz 이라는 확장자가 생소 하실 텐데, 리눅스에서 사용하는 압축 파일 입니다.

 

# cd /opt

# wget http://apache.tt.co.kr/tomcat/tomcat-8/v8.5.29/bin/apache-tomcat-8.5.29.tar.gz

 

 

압축 해제 및 설치 

tar.gz 압축파일 해제

tar 명령어의 주요 -옵션입니다.

 

 -z  압축 / 압축 해제

 -x  tar파일의 묶음 해제 

 -v  진행상황 화면 출력 

 -f   tar 파일의 이름지정 

 

# tar -zxvf apache-tomcat-8.5.29.tar.gz

 

- Tomcat 디렉토리 위치 변경 및 심볼릭 링크 

 

이제 tomcat이 위치할 디렉토리를 생성후 압축이 풀린 apache-tomcat 디렉토리 이동 및 이동한 디렉토리의 위치로 옮겨 가겠습니다.

이제 tomcat이 위치할 디렉토리를 생성후 압축이 풀린 apache-tomcat 디렉토리 이동 및 이동한 디렉토리의 위치로 옮겨 가겠습니다.

 

- 톰캣이 위치할 server 디렉토리 생성

[root@localhost local]# mkdir /usr/local/server

 

 

- 톰캣 tar 파일 삭제

[root@localhost opt]# rm -rf apache-tomcat-8.5.29.tar.gz

 

- 톰캣 디렉토리 이동

[root@localhost local]# cd /usr/local/server/

 

 

- 자신의 위치를 톰캣 디렉토리가 있는 곳으로 이동

[root@localhost opt]# mv apache-tomcat-8.5.29 /usr/local/server/

 

pwd 현재 위치 확인

 

[root@localhost server]# pwd

/usr/local/server

 

 

볼릭링크를 걸어 tomcat의 관리

 

[root@localhost server]# ln -s apache-tomcat-8.5.29 tomcat

[root@localhost server] # pwd

 

[root@localhost server]# ll

total 4

drwxr-xr-x. 9 root root 4096 Mar 16 21:58 apache-tomcat-8.5.29

lrwxrwxrwx. 1 root root 20 Mar 16 22:15 tomcat -> apache-tomcat-8.5.29

 

환경변수 설정

 

CATALINA_HOME=/usr/local/server/tomcat

CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/lib-jsp-api.jar:$CATALINA_HOME/lib/servlet-api.jar

PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin

export JAVA_HOME CLASSPATH PATH CATALINA_HOME

 

* 환경변수 수정사항 적용을 합니다.

[root@localhost lib]# source /etc/profile

 

 

# vi /etc/sysconfig/iptables

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

#service iptables restart

 

 

톰캣 서버 기동 / 중지

[root@localhost lib]# /usr/local/server/tomcat/bin/startup.sh

[root@localhost lib]# /usr/local/server/tomcat/bin/shutdown.sh

[root@localhost lib]# /usr/local/server/tomcat/bin/startup.sh

 

 

- 여기까지 진행 되었다면 80 포트 시 아파치 화면이 보여야 되고

http://192.168.40.128:80/

- 8080 포트 화면에서는 톰켓 화면이 보여야 한다.

http://192.168.40.128:8080/

 

 

 

4. apache+tomcat mod_jk를 이용한 연동

 

▶ 아파치와 톰캣을 연동하는 이유

 - Tomcat 서버는 본연의 임무인 서블릿 컨테이너의 역할만 하고, Apache HTTP Server는 웹서버의 역할을 하도록 각각의 기능을 분리하기 위해 연동을 할 수 있다.

 - Apache HTTP Server에서 제공하는 편리한 기능을 사용하기 위해서 연동을 할수 있다.

 - 대규모 사용자가 사용하는 시스템을 구축할 때 웹 서버인 아파치와 연동을 하면 부하 분산의 효과를 가질 수 있다. mod_jk의 Load Balancing과 FailOver 기능을 사용하여 안정적으로 운영 할 수 있다.

 - 아파치 내에서만 설정할 수 있는 부분이 있고, 아파치에서 제공하는 유용한 모듈들을 톰캣에서 사용할 수 없기 때문이다.

 

▶ 아파치 톰캣 연동하는 방법들 (참고)

Apache httpd web server 와 tomcat 을 연계하는 방법은 세 가지가 있다. 

예전부터 많이 쓰던 방법은 tomcat connector(mod_jk)를 사용하는 방법이고 다른 하나는 mod_proxy를 사용하여 reverse proxy 기능을 사용하는 방법, 마지막은 mod_proxy_ajp 를 사용하여 AJP Protocol을 reverse proxy 로 사용하는 방법이다. 

 

mod_proxy 가 mod_jk 에 비해 설정이 간편하고 AJP 같은 특정 WAS 의존적인 프로토콜을 사용하지 않으므로  성능이 더 좋다고 하지만 mod_jk 가 오랫동안 써왔고 친숙해서 mod_jk 를 많이 사용하는 편

 

▶ 연동원리

아파치와 톰캣이 연동하기 위해선 AJP를 통해 서로 통신을 하여야 한다.

AJP란 아파치가 웹서버와 외부 서비스(톰캣 등)과 연동하기 위해 정한 규약(프로토콜) 이다. 

 

아파치는 이를 사용하여 80포트로 들어오는 요청은 자신이 받고, 이 요청중 서블릿을 필요로 하는 요청은 톰캣에 접속하여 처리한다.

1) 아파치 웹서버의 httpd.conf 에 톰캣 연동을 위한 설정을 추가하고 톰캣에서 처리할 요청을 지정

2) 사용자의 브라우저는 아파치 웹서버(보통 80포트)에 접속해 요청

3) 아파치 웹서버는 사용자의 요청이 톰캣에서 처리하도록 지정된 요청인지 확인. 요청을 톰캣에서 처리해야 하는 경우

   아파치 웹서버는 톰캣의 AJP포트(보통 8009포트)에 접속해 요청을 전달

4) 톰캣은 아파치 웹서버로부터 요청을 받아 처리한 후, 처리 결과를 아파치 웹서버에 되돌려줌

 

5) 아파치 웹서버는 톰캣으로부터 받은 처리 결과를 사용자에게 전송

 

설치환경 : 

설치버전 : 

 

[root@localhost src]# cat /etc/redhat-release

CentOS release 6.7 (Final)

 

설치사항

 

1. 경로선택및 파일 소스 다운로드

 

#cd /usr/local/src

#wget  http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.37-src.tar.gz

 

2.압축해제

# tar zxvf tomcat-connectors-1.2.37-src.tar.gz

 

 

3.빌드 검사 및 의존패키지 설치

# cd /usr/local/src/tomcat-connectors-1.2.37-src/native

 

# ./buildconf.sh

buildconf: checking installation...

buildconf: autoconf not found.

You need autoconf version 2.59 or newer installed

to build mod_jk from SVN.

 

# yum install autoconf

# yum install libtool

 

※ buildconf 로 의존패키지를 반드시 확인한후 설치하고 빌드해야 한다.

 

* 아파치 설치 위치 확인

#httpd -V | egrep "(HTTPD\_ROOT|SERVER\_CONFIG\_FILE)"

# ll /etc/httpd/conf/httpd.conf

 

 

4.빌드 및 인스톨

빌드를 위한 환경 설정이 필요한 시기인데 아래 명령어의 apxs 위치를 알아야 합니다.

# ./configure --with-apxs=/usr/sbin/apxs

/usr/sbin/apxs 이 경로가 없다면 찾아야 합니다.

 

# which apxs

위 명령어를 치면 어디에 있는지 알려줍니다.

 

하지만 apxs 가 아예 없는 경우도 있는데 이 경우는 apache가 devel 패키지가 아닌 경우라고 합니다.

아래의 명령어를 통해 devel 버전으로 업데이트를 합니다.

# yum install httpd-devel

 

설치가 끝났으면 which apxs 명령어로 위치 확인 후 ./configure 다시 시도해주세요~

 

[root@localhost native]# which apxs

/usr/sbin/apxs

 

# ./configure --with-apxs=/usr/sbin/apxs

 

 

configure: error: C++ preprocessor "/lib/cpp" fails sanity check

에러시

#yum -y install gcc-c++ 

 

# ./configure --with-apxs=/usr/sbin/apxs

# make && make install

 

mod_jk.so 제대로 있는지 확인해야합니다.

 

[root@localhost native]# find / -name "mod_jk.so"

/usr/local/src/tomcat-connectors-1.2.37-src/native/apache-2.0/mod_jk.so

/usr/local/src/tomcat-connectors-1.2.37-src/native/apache-2.0/.libs/mod_jk.so

/usr/lib64/httpd/modules/mod_jk.so

 

 

 

etc/httpd/conf/httpd.conf 

하단에 다음 내용 추가

ServerName localhost



DocumentRoot "/usr/local/server/tomcat/webapps/ROOT"

<Directory "/usr/local/server/tomcat/webapps/ROOT">     
  AllowOverride none     
  Require all granted 
</Directory>

 

etc/httpd/conf/workers.properties  추가

#workers.tomcat_home=$CATALINA_HOME 
#workers.java_home=$JAVA_HOME
#worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13

 

 

httpd.conf 에 보면 Include conf.d/*.conf    가 존재한다.

etc/httpd/conf.d/mod_jk.conf    추가

LoadModule jk_module "/etc/httpd/modules/mod_jk.so"
JkWorkersFile /etc/httpd/conf/workers.properties
JkLogFile /var/log/httpd/mod_jk.log
JkMount /* ajp13
JkMount /*.jsp ajp13
JkMount /*.do ajp13
JkMount /servlets/* ajp13
JkMount /url ajp13
JkMount /sitesys ajp13
 

 

 

체크 

[root@localhost ~]# apachectl configtest

 

80 포트 로 접속시 아파치 화면이 아닌 톰캣 화면이 나오면 연동 성공

http://192.168.40.132

http://192.168.40.132/index.jsp

 

 

** 여러 대의 가상 호스트 설정

 

etc/httpd/conf/httpd.conf  

하단을

변경한다.  주석 처리 한다.

ServerName localhost

#DocumentRoot "/usr/local/server/tomcat/webapps/ROOT"

#<Directory "/usr/local/server/tomcat/webapps/ROOT">     
#  AllowOverride none     
 # Require all granted 
#</Directory>

 

 

 

etc/httpd/conf/workers.properties

를 다음과 같이 변경한다. 여러 개의 포트 번호가 추가 된것을 알 수 있다.

#workers.tomcat_home=$CATALINA_HOME 
#workers.java_home=$JAVA_HOME
#worker.list=ajp13

#worker.ajp13.port=8009
#worker.ajp13.host=localhost
#worker.ajp13.type=ajp13


worker.list=web1,web2,web3,web4,web5
worker.web1.port=8009
#worker.web1.host=아이피
worker.web1.host=192.168.40.132
worker.web1.type=ajp13
worker.web1.method=Session
worker.web1.sticky_session=True
 

worker.web2.port=8109
worker.web1.host=192.168.40.132
worker.web2.type=ajp13
worker.web2.method=Session
worker.web2.sticky_session=True

 

worker.web3.port=8209
worker.web1.host=192.168.40.132
worker.web3.type=ajp13
worker.web3.method=Session
worker.web3.sticky_session=True

 

worker.web4.port=8309
worker.web1.host=192.168.40.132
worker.web4.type=ajp13
worker.web4.method=Session
worker.web4.sticky_session=True

 

worker.web5.port=8409
worker.web1.host=192.168.40.132
worker.web5.type=ajp13
worker.web5.method=Session
worker.web5.sticky_session=True



 

 

 

conf.d 폴더에 httpd-vhosts.conf  를 추가 한다.

NameVirtualHost *:80
NameVirtualHost *:7001
NameVirtualHost *:7002
NameVirtualHost *:7003
NameVirtualHost *:7004
NameVirtualHost *:7020

 

<VirtualHost *:80>
    DocumentRoot "/usr/local/server/tomcat/webapps/ROOT"
    ServerName www.suitmytaste.com
    ServerAlias suitmytaste.com *.suitmytaste.com
   # ErrorLog "/apache/webdev.war/logs/error_log"
    #CustomLog "/apache/webdev.war/logs/access_log" common
    JkLogFile /var/log/httpd/mod_jk.log
	JkMount /* web1
	JkMount /*.jsp web1
	JkMount /*.do web1
	JkMount /servlets/* web1
	JkMount /url web1
	JkMount /sitesys web1
  <Directory "/usr/local/server/tomcat/webapps/ROOT">     
     AllowOverride none     
     Require all granted 
   </Directory>
</VirtualHost>

 

<VirtualHost *:7001>
    ServerAdmin webmaster@aa.com
	DocumentRoot "/usr/local/server/tomcat/webapps2/ROOT"
    ServerName www.suitmytaste.com2
    ServerAlias suitmytaste.com *.suitmytaste.com2
   # ErrorLog "/apache/webdev.war/logs/error_log"
    #CustomLog "/apache/webdev.war/logs/access_log" common
    JkLogFile /var/log/httpd/mod_jk.log
	JkMount /* web2
	JkMount /*.jsp web2
	JkMount /*.do web2
	JkMount /servlets/* web2
	JkMount /url web2
	JkMount /sitesys web2
  <Directory "/usr/local/server/tomcat/webapps2/ROOT">     
     AllowOverride none     
     Require all granted 
   </Directory>
</VirtualHost>



DocumentRoot "/usr/local/server/tomcat/webapps/ROOT"  와

<Directory "/usr/local/server/tomcat/webapps2/ROOT"> 는

는 home  에서 유저를 생성후 각 유저 파일 디렉토리에 맞게 변경 해 주면 된다.

 

JkMount /* web1  의 식으로 workers.properties 리스트 에 맞게 지정해 줘야 한다.

 

# service httpd restart

 

 

ServerName www.suitmytaste.com2

도메인을 지정 했기 때문에 

윈도우에서 

C:\Windows\System32\drivers\etc

hosts 에  다음과 같이 추가한다.

192.168.40.132  www.suitmytaste.com

 

 

http://www.suitmytaste.com/ 접속시 톰캣 화면이 나오면 성공

 

 

유저 생성

[root@localhost ~]# useradd test1
[root@localhost ~]# password test1

 

[root@localhost ~]# cd $CATALINA_HOME 

[root@localhost tomcat]# cp -r ./webapps/  /home/test1/www

 

 

유저별 단독톰켓(tomcat) 구성(다중 톰켓)

 

 

 

5. PHP 설치 

 

환경 체크

 

1)리눅스 버전 체크

[root@localhost /]# uname -a
Linux localhost.localdomain 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

 

 

2) CentOS 버전체크

[root@localhost /]# cat /etc/redhat-release
CentOS release 6.7 (Final)

 

 

3) 하드 용량 체크

[root@localhost /]# df -h

 

 

4) 메모리 체크

[root@localhost /]# free -m

 

패키지 목록 갱신 및 업데이트 체크.

 

#yum update

 

 

 

 

 

 

 

linux

 

about author

PHRASE

Level 60  라이트

처세하는 데 말이 많고 중심이 없는 사람은 그만큼 심신을 해치는 법이다. 그러므로 오직 심신을 잘 수양하면 반드시 그 마음을 둘 바를 알 수 있을 것이다. -율곡 이이

댓글 ( 8)

댓글 남기기

작성
  •    
  •    
  •