연재 강좌

CentOS 7 APM 설치하기

2014.09.28 21:49

gooddew 조회:8463

APM 설치하는것을 배워 보겠습니다.


APM 이란 Apache, PHP, MYSQL 의 3개의 단어의 앞 글자 모아서 조합된 단어라 보시면 됩니다.


웹서버를 가동하기 위한 기본적인 프로그램들이라고 보시면 됩니다. 



☞ 웹서버를 설치하기 전에 원활한 패키지 설치를 위해서 레드햇 패키지 저장소를 추가 설치 합니다.


# yum -y install epel-release


70.png




(1) 웹서버를 그릅 인스톨


웹서버인 httpsd 와 관련 의존성 파일을 각각 설치해도 되지만 초보분들은 별도로 설치하면 간혹 의존성 파일로 오류가 발생할수 있기 때문에


그릅 인스톨을 이용해서 웹서버와 의존성 파일을 한꺼번에 설치 하겠습니다.  


# yum -y groupinstall "Web Server" 


69.png


설치가 완료 됬습니다.


아피치 웹 서버가 설치됬는지 확인해볼께요


# rpm -qa httpsd


33.png


https-2.4.6-4~~ 이렇게 나오는군요. 설치가 잘됬네요


만약 설치가 안됬다면 아무 메세지도 안나옵니다.





(2) 아파치 웹서버 설정 파일 수정


아바치 웹서버를 설치를 했으면 설정파일을 수정 해야 됩니다.


아파치 설정파일의 경로는 /etc/httpsd/conf/httpsd.conf 입니다.


편집툴로 열어 보겠습니다.


# nano -c /etc/httpsd/conf/httpsd.conf


① 포트 수정


34.png


편집창 제일 하단에 보시면 라인줄번로가 나옵니다 여기서 보면 354 줄에서 42번째 줄을 가르키고 있네요


줄번호가 안나온다면 없다면 # nano 실행할때 -c 옵션을 빼고 실행해서 그렇습니다. -c 옵션을 넣고 설정 파일을 불러오세요 


42줄로 이동합니다.


Listen 80 이란는 부분이 있습니다. 이 80 숫자가 웹서버 디폴트 포트 번호인데, 변경해야 된다면 이 항목은 수정하면 됩니다.



② 접속 계정 설정


35.png


66 줄로 이동하면


웹서버에 접속하는 계정을 설정하게되는데요. 둘다 nobody 로 설정 하세요.


nobody 를 설정하면 웹서버에 누구나 접근이 가능하게 합니다.



③ 도메인 설정


36.png


95 줄로 이동합니다.


처음에 #ServerName www.example.com:80 되어 있습니다.


제일 앞에 # 을 삭제하고 www.example.com 이 부분을 자신이 소유한 도메인이 있다면 도메인을 입력하고 없다면


서버의 IP입력 하시면 됩니다.


예) ServerName [ www.test.com:80 or 192.168.119.132:80 or 192.168.10.100:8080 ]


지금은 도메인을 소유하고 있더라도 dns 서버와 연동해서 도메인으로 웹서버를 접속하면 좋겠지만 


그렇게 하려면 웹서버와 dns 서버를 같이 구동해야 되고 우리는 아직 dns 서버를 배우지 않았기 때문에


여기 강좌에서는 이 항목에 랜카드의 IP 를 넣으시고 Web Server 작동되는것 까지 배우겠습니다.


도메인 연동해서 사용하는 방법은 나중에 제가 DNS 강좌 부분에서 다시 자세히 설명 드리겠습니다.


dns 서버 성정방법을 배우고 나서 이 항목을 도메인으로 변경하세요.


그리고 하나의 서버에서 여러개의 도메인을 가지고 여러개의 웹싸이트를 운영한다면 virhost.conf 설정을 해야 합니다.


virhost.conf 를 편집하기전에 아파치 설정 파일( /etc/httpsd/conf/httpsd.conf ) 항목 중에서 ServerName 앞에 # 을 붙여서 주석 처리 하세요 


virhost.conf 파일 설정하는 방법은


# nano /etc/httpsd/conf.d/virhost.conf  편집합니다.


48.png


저장합니다.


아파치 서버 가동전에 virhost.conf 설정파일을 제대로 됬는지 테스트를 해봅니다


# httpsd -t 

Syntax OK  정이면 아파치 서버를 재 가동하면 됩니다.


아파치 서버를 재 가동합니다.


# systemctl  restart  httpsd


- virhost.conf 예제파일 ----------------------


<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName 210.100.100.23
</VirtualHost>


<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName server.com
</VirtualHost>



<VirtualHost *:80>
DocumentRoot /var/www/html2
ServerName test.com
</VirtualHost>


<VirtualHost *:80>
DocumentRoot /var/www/html3
ServerName abc.com
</VirtualHost>


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



④ 웹서버 기본 경로 설정


37.png


경로를 변경 할수 있는데 변경 하려면 DocumentRoot 와 Directory 라는 두 부분을 수정 하면 됩니다. 


119 줄로 이동


DocumentRoot "/var/www/html"  항목이 있습니다. 쌍 따움표 안에 /var/www/html 이 경로를 수정 합니다.


131 줄로 이동


< Directory "/var/www/html" > 이곳도 를 쌍 따움표 안에 /var/www/html 이 경로를 수정 합니다.


만약 기본 경로를 변경한다면 변경하는 경로의 퍼미션은 755로 변경하고 아파치 서버를 재 가동하세요.




⑤ 외부 접속 권한 설정 및 보안 설정


외부 접속 장애가 있을 경우가 있는데요 


72.png


AllowOverride 를 All 로 변경하여 모든 접근을 하용한후에,


# Options Indexes FollowSymLinks 이줄 앞에 #을 추가해서 보안을 위해서 디렉토리 리스트를 볼수 없게 설정을 합니다.





152 줄로 이동합니다.


AllowOverride none  → AllowOverride All 변경 하세요


<Directory "/var/www/html"> 와 </Directory> 사이에 있습니다.




⑥ 웹서버의 인덱스 파일( 최초 접속 페이지 ) 설정


38.png


165 줄로 이동하면


DirectoryIndex index.html 이 항목이 있습니다.


이것은 외부에서 접속이 이루어지면 인덱스 파일을 열게 되는데 인덱스 파일 중에서 우선순위 파일을 지정하는 부분이에요


index.html 하나가 있는데


만약에 index.php index.htm index.html 이렇게 설정하면


서버가 index.php  이 파일이 있나 보고 없으면 index.html 있나 보고 없으면  index.htm 파일 있나 보고 열게 됩니다.





⑦ 웹 페이지 확장자 추가


다양한 웹페이지 포맷을 지원하기 위해서 추가합니다.


51.png


286 줄로 이동


Addtype application/x-httpsd-php .php .php3 .php4 .php5 .htm .html .inc


위에 한줄을 추가합니다.




⑧ 인코딩 설정


웹서버로 접속하면 한글이 깨지는 경우가 있는데요.


이런 뮨제를 해결하고 호환성 좋게 하기 위해서 서버의 인코딩을 utf-8 로 하는것을 권장 드립니다.


39.png



316 줄로 이동하고


AddDefaultCharset UTF-8 을 추가하면 호환성에 좋습니다.


여기 까지 해서 아피치 설정 작업은 끝났고 저장을 해야 되는데


Ctrl + x 눌르면 하단에 저정할것인지 물어봅니다. 여기서 y 키 누르면 저장이 됩니다.


변경된 설정값을 웹서버에 다시 적용하기 위해서 서버를 재 가동 해야 되는데


설정값에 문법에 오류가 있으면 서버가 정상 가동이 안되기 때문에


아파치 서버를 재실행 하기전에 먼저 설정 파일 오류 여부에 대한 테스트를 하겠습니다.


이 테스트는 설정파일이 아파치에 정상 적용 가능 여부만 테스트하며, 만약 운영중인 웹서버가 있어도


설저 파일이 문제가 있다 하더라도 이 테스트를 했을때 서버에 전혀 영향을 미치치 않습니다.


즉, httpsd.conf 파일이 오류가 있는지 여부만 판단합니다.


40.png


웹서버 설정 파일 테스트 명령


# httpsd -t

Syntax OK


결과가 Syntax OK 라고 나오면 설정파일은 정상 사용 가능한 것이기 때문에


진짜 아파치를 재 실행해도 잘 정상 작동된다는 의미입니다.


# systemctl  start  httpsd    →  웹서버 시작


# systemctl  enable  httpsd    →  서버가 부팅 후에도 웹서버 자동 시작


# systemctl  status  httpsd    → 웹서버 가동 상태 확인

 

Actuve : Active(r unning ) 나오면 정상 가동중입니다.


이렇게 하면 웹서버가 설정은 끝난것인데요


하지만 바로 접속은 안됩니다. 왜냐면 보안 설정을 바꾸줘야 합니다.


몇가지 추가 작업이 필요합니다.



⑨ selinux 보안 해제


selinux 보안은 리눅스 보안을 관련 기능인데, 리눅스 클라인언트에서는 보안상으로 좋은 역확을 하지만 서버에서는 충돌이 방생합니다.


서버로 운영한다면 selinux 기능을 해제하는것이 좋습니다.


selinux 설정 상태를 확인합니다.


45.png


selinux 설정 상태 확인


# sestatus 


SELinux status : enabled 로 되어 있으면 보안 기능이 활성이 되었다는 의미입니다. 보안기능을 설정 해제 해보겠습니다.


# nano /etc/sysconfig/selinux  설정 파일을 오픈합니다.


46.png



SELINUX=enforcing 을 SELINUX=disabled 로 변경 합니다.


저장후 재부팅을 해야 적용이 됩니다.


재부팅 안하고 selinux 기능을 사용안하는 명령이 있습니다.


# setenforce 0

또는

# echo 0 > /sys/fs/selinux/enforce


이것은 위에서 변경한 설정값을 적용하는것이 아니라 selinux 에서 enforce 사용하지 않는다는 의미입니다.


명령어로 하게되면 부팅후 다시 차단이 되게 때문에 위에서 설명한 설정파일( /etc/sysconfig/selinux) 을 수정후 부팅하는것을 권장합니다.




⑩ 방화벽 설정


서버에서 selinux 보안 기능이 중지했기 때문에 보안 기능의 대안으로 서버에서 사용하는 포트(22, 80) 제외하고 차단해야 됩니다. 


웹서버의 보안을 위해서 방화벽 서비스를 가동하고 특정 포트(22, 80)만 오픈합니다.


41.png


방화벽 서비스를 설치합니다.


# yum -y install firewalld


방화벽을 가동합니다.


# systemctl  start  firewalld


부팅후에도 방화벽 자동 가동하기 


# systemctl  status  firewalld



오픈된 포트 확인해 보겠습니다.


42.png


# iptables -nL     ( 열린 포트 확인 하기 )


기본적으로 포트는 22 번만 열려 있습니다.


현재 방화벽으로 웹서버 포트 80 번을 오픈해 보겠습니다.


43.png


# firewall-cmd --permanent --zone=public --add-port=80/tcp


방화벽 재시작

# systemctl restart firewalld



다시 포트상태 확인


44.png


# iptables -nL


22 번과 80번이 열렸네요


방화벽 설정 파일은 /etc/firewalld/zones/public.xml 설정 파일을 직접 파일 안에서 수정하고 방화벽 서비스를 재 시작해도 됨


public.xml 파일을 수정한다면


#nano /etc/firewalld/zones/public.xml


49.png


직접 수정해도 되는데 </zone> 위로 작성해야 됩니다.


<port protocol="tcp" port="80"/> 이 부분을 복사해서 protocol 과 port 만 새로 수정해서 사용하면 됩니다.


만약 21번 포트를 추가한다면 아래처럼 하면 되겠네요

.

.

<port protocol="tcp" port="80"/>

<port protocol="tcp" port="21"/>

</zone>


설정이 완료 됬으면 아파치를 재시작합니다.


# systemctl   restart   httpsd


기본적인 웹서버 설정이 끝났습니다.





(2) PHP 설치 및 설정


PHP를 설치하겠습니다.


52.png


# yum -y install php php-mysql php-pdo php-gd php-mbstring



php 테스트용 파일을 생성하겠습니다.


53.png


php 정보 출력 파일 생성


# echo "<?php phpinfo(); ?>" > /var/www/html/info.php 



아파치를 재 시작하세요


# systemctl restart httpsd


이렇게 해서 php 설정이 끝났습니다.




☞ 웹서버 접속 테스트를 해보겠습니다.


* 웹브라우져에서 https://서버ip 로 접속하면 아파치 기본 웹 서버 페이지가 나오면 정상적으로 아파치가 설치가 된것입니다.


47.png


이번에는 php 테스트를 해보겠습니다.


인터넷 웹 브라우져에서 https://서버ip/info.php 하면 아래와 같이 서버에 설치된 php 정보가 나옵니다.


54.png


세션 사용을 오픈 해야 됩니다. 셔션은 로그인 할때에 많이 사용하게 됩니다.


# chmod 777 /var/lib/php/session/



웹서버에서 첨부파일을 용량을 2Mbyte 이상으로 사용한다면 php.ini 설정 파일을 수정 해야 합니다.


첨부파일을 사용 안하거나 또는 2Mbyte 이하로 사용한다면 이 작업은 생략하시면 됩니다.



php 설정 파일을 편집합니다.


# nano  /etc/php.ini


* 업로드 제한 시간 설정


65.png


368 line 정도에


max_execution_time = 시간(초) 


이 항목은 업로드 시간(초) 제한입니다. 업로드 할때 알수 없는 원인에 의해서 오류기면서 무한 루푸에 빠질수가 있는데


업로드 제한시간을 설정해서 업로드가 일정 시간 이상이 지나면  강제 적으로 중단시키는 기능입니다. 


근데 이 항목이 너무 작은 경우 인터넷이 느거나 업로드 용량이 클경우 정상적으로 업로드 되는 상황에서도


설정한 제한 시간 되면 강제 중단 시키게 되어서 정상 업로드가 안될수 있습니다.


너무 크게 수정한는것은 문제가 있지만 첨부파일을 다루는 싸이트에서는 기본 설정보다는 높여 주는것이 좋습니다.




* 업로드 첨부파일 전체 제한 용량 설정


66.png

 
656 line


Post_Max_Size = 용량M 


이 항목은 게시물 작성할때 모든 첨부파일의 총 용량을 제한합니다. 용량은 Mbyte 단위로 작성하면 됩니다.




* 업로드 한개당 첨부파일 제한 용량 설정


67.png


799 line


upload_max_filesize = 용량M


이 항목은 첨부파일 하나당 제한 용량 입니다. Mbye 단위로 사용하면 됩니다.



* 위에서 php.ini 설정을 바꾸었다면 아파치를 재실행 해야 합니다.


# systemctl restart httpsd





※ php7 설치방법


# cd

# yum -y install epel-release

# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

# yum -y remove php-cli mod_php php-common

# yum -y install php70w

# php -v

# yum -y install php70w-xml php70w-xmlrpc php70w-soap php70w-mbstring php70w-json php70w-gd php70w-mcrypt php70w-mysql

# chmod 777 /var/lib/php/session/

# systemctl restart httpsd




(3) MariaDB


DB 의 종류는 여러가지 있으나 많이 사용하는 MariaDB 설치 하겠습니다.


MariaDB 라는 데이타베이스는 MYSQL 데이타베이스 가 개선되서 버전업되서 나온 데이타베이스입니다.


두 DB는 명령어도 동일합니다.



① MariaDB 설치를 합니다.


55.png


# yum -y install mariadb-server mariadb



② MariaDB 서비스 시작


56.png

MariaDB 데몬을 가동 합니다

# systemctl start mariadb


부팅후 자동 실행 설정

# systemctl enable mariadb


서비스 상태 확인

# systemctl status mariadb



③ MariaDB 설정



- MariaDB 접속 설정


# mysql_secure_installation


59.png


항목을 하나하나 알아볼께요


Enter current password for root (enter for none) : 이 부분은 현재 루트 비번이 없기 때문에 엔터치시면 됩니다.


Set root password ? [Y/n]  : y를 누르고 root 패스워드를 설정합니다. 두번 비번을 입력하게 됩니다.


Remove anonymous users? [Y/n] ; 익명 접근을 막을것이냐? 라고 묻습니다. 보안상 y 누르고 엔터치세요.


Disallow root login remotely? [Y/n] ; root 계정으로 원격 접속을 막을 것인가? 보안상 y 누르고 엔터 치세요


Remove test database and access to it? [Y/n] ; test 용으로 사용된 데이타 베이스를 삭제할것이냐? y 엔터 치시면 됩니다.


Reload privilege tables now? [Y/n] ; 지금까지 설정한 값을 적용할것이냐? y 엔터 치시면 됩니다.



이제 데이타 베이스가 사용할수 있도록 설정을 완료됬습니다.




이번에는 우리가 데이타 베이스 안으로 들어가서 우리가 홈페이지에서 사용할 DB를 생성해야 됩니다.


# mysql -uroot -p 접속 합니다.


60.png


MariaDB > CREATE DATABASE home;  홈페이지에서 사용할 home 라는 새로운 데이타베이스 생성


MariaDB > CREATE USER test@localhost IDENTIFIED BY "1234"; 

               /* test 라는 사용자와 1234라는 비번으로 새로운 사용자 생성 */


MariaDB > GRANT ALL ON home.* TO test@localhost; 필요한 권한 설정

 
MariaDB > FLUSH PRIVILEGES; 설정 적용


MariaDB > show databases; 위에서 만든 데이타 베이스가 출력 됩니다


MariaDB > \q;  종료


이렇게 해서 MariaDB 데이타베이스 설치 및 설정이 완료 됬습니다





(4) phpmyadmin 설치를 해보겠습니다.


61.png


# yum -y install phpmyadmin


설치가 끝나고, 초기 설정 값이 외부 원격 접속이 차단 되어 있기 때문에 원격 접속을 허용 한다면 설정을 변경 해야 됩니다.


# nano /etc/httpsd/conf.d/phpMyAdmin.conf


62.png


17줄로 이동해서


"<RequireAny>" 과 "Require ip 127.0.0.1" 사이에 " Require all granted " 를 추가합니다.


만약 특정 ip 또는 특정 네트워크(c 클래스)만 허용한다면


64.png


설정이 끝났으면 저장후 아파치를 재실행 합니다.


# systemctl  restart  httpsd



외부 웹에서 접속이 가능합니다.


https://서버ip/phpmyadmin


63.png













61.png
















번호 제목 글쓴이 조회
[공지] 연재 강좌를 진행합니다. gooddew -
105 CentOS 7| SSH 서버 구축 gooddew 1351
104 CentOS 7| telnet 서버 구축 gooddew 1032
103 CentOS 7| Let's Encrypt SSL 설치 [1] gooddew 1349
102 CentOS 7| SAMBA 서버 구축 및 윈도우 네트워크 설치 [1] gooddew 4910
101 CentOS 7| proftpd 서버 구축 gooddew 725
100 CentOS 7| VSFTPD 서버 구축 gooddew 3821
99 CentOS 7| Apache 최신버전 설치하기 gooddew 3426
98 CentOS 7| Nginx, MySQL, PHP 웹서버 구축 gooddew 5173
97 CentOS 7| DNS 서버 설치 [1] gooddew 8146
» CentOS 7| APM 설치하기 [1] gooddew 8463
95 CentOS 7| 리눅스 설치후 초기 설정해야 할 것들 gooddew 5676
94 CentOS 7| CentOS 기본 강좌 gooddew 7064
93 CentOS 7| CentOS-7.0 Minimal 설치 [2] gooddew 5107
92 네트웍 활용| 케이블 모뎀 설치 gooddew 3239
91 네트웍 활용| Netstat 명령어를 이용한 라우팅 테이블 확인 gooddew 4429
90 네트웍 활용| Tracert 명령어를 이용한 장애확인 gooddew 3295
89 네트웍 활용| Ping 명령어를 이용한 장애확인 gooddew 5655
88 네트웍 활용| Lanbird Router 설정 gooddew 1351
87 네트웍 활용| Teltrend Router 설정 gooddew 1197
86 네트웍 활용| 3COM Router 설정 gooddew 2030
XE1.11.6 Layout1.4.8