Centos7을 설치하고 PHP 설치 및 적용하기! 

 

Centos7을 설치하고보니 기본 적인 것들도 설치가 안되어있었다.. 

하나씩 설치해보자 ~~~~! 

우선 필요한 기본 기능 설치! 

yum install net-tools -y
yum install epel-release -y
yum install wget -y
yum install openssh-server open-clients openssh-askpass -y

 

yum install openssh-server open-clients openssh-askpass 는 SSH 접속을 위해 설치했다. 

아래 명령어를 실행하고 빨간상자 부분 주석처리된걸 풀어준다. 

vi /etc/ssh/sshd_config

* q! : 저장안하고 닫기 wq! : 저장하고 닫기 

이제 방화벽 오픈~~!! 

 firewall-cmd --permanent --zone=public --add-port=22/tcp

여기까지 하면 putty로 접속가능하게 된다! ㅎㅎ 

 

이제 PHP 설치를 위한 작업 실행!! 

순서대로 하나씩 설치해준다~~~ 

wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7.rpm epel-release-latest-7.noarch.rpm
yum install yum-utils
yum-config-manager --enable remi-php72

 다 끝났으면 php 설치! 

yum install -y php php-common php-opcache php-mcrypt php-cli php-gd php-curl php-mysql -y

 

마지막으로 설치 확인! 

php -v

 

 

이제 아파치 연동으로 가보쟈!! 

따로 설정한게 없다면 아래 경로에 아파치가 설치되었을것이다 httpd.conf 파일 수정해주기! 

 vi /etc/httpd/conf/httpd.conf

 

아래 부분을 찾아서 index.php 추가! 

<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

 

아래 부분을 찾은 다음 

AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

바로 밑에 두줄 추가! 

AddType application/x-httpd-php .html .htm .php .inc
AddType application/x-httpd-php-source .phps

 

이제 php 파일을 만들러 가본다. 

1. 디렉토리 이동 

cd /var/www/html

 

2. 파일 생성 및 내용 작성 

vi phpinfo.php
<?php
    phpinfo();
?>

 

이제 httpd 가 떠있는지 확인한번 해주고~!! 

netstat -ntlp

 

curl localhost  -- 아파치홈이 출력되고 

curl localhost/phpinfo.php -- phpinfo 화면이 나온다. 

 

외부에서 접속하려면 

 

Vm 설정 여기까지 해주고 ~~ 

 

방화벽 오픈!! 

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

 

브라우저로 접속하니 잘 나온다 ! ㅎㅎ 

 

 

여기까지 centos7 셋팅에서 php 설정까지 한번에 보았다~ 끝!

 

 

mod_jk 설정을 마치고 연결을 하려고 보니 

 

브라우저에서는 

503 Service Unavailable 에러가 발생했고 

 

apache/logs/mod_jk.log 파일을 열어보니 아래와 같은 에러가 계속해서발생했다. 

 

ajp_send_request::jk_ajp_common.c (1724): (user) connecting to backend failed. Tomcat is probably not started or is listening on the wrong port (errno=111) 
ajp_send_request::jk_ajp_common.c (1724): (user) connecting to backend failed. Tomcat is probably not started or is listening on the wrong port (errno=111) 
ajp_service::jk_ajp_common.c (2795): (user) connecting to tomcat failed (rc=-3, errors=1, client_errors=0). 
ajp_send_request::jk_ajp_common.c (1724): (user) connecting to backend failed. Tomcat is probably not started or is listening on the wrong port (errno=111) 
ajp_send_request::jk_ajp_common.c (1724): (user) connecting to backend failed. Tomcat is probably not started or is listening on the wrong port (errno=111) 
ajp_service::jk_ajp_common.c (2795): (user) connecting to tomcat failed (rc=-3, errors=2, client_errors=0). 
service::jk_lb_worker.c (1685): All tomcat instances failed, no more workers left 

 

 

 

내가 구성하는 서버는 현재 아래와 같은 구조로

was에 서비스를 띄우고 web에서 mod_jk를 이용해서 연결하려고 했었다. 

 

 

수 차례 구글링을 해보고 여러가지 방법을 찾아보았지만 해법을 못찾았다 ㅠㅠ 

 

결국 mod_jk에서 제공하는 다른 기능인 mod_proxy를 사용해보기로 했다. 

 

 

우선 apache 설정하기. 

vi httpd.conf 

mod_jk가 정상적으로 설치되었다면 아래 내용이 주석처리되어있을거다. 

아래 세가지 주석 풀어주자~~

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so

 

 

vi apache/conf/extra/httpd-vhost.conf 파일 수정 

<VirtualHost *:80>

 ServerName servername

 ServerAlias serveralias

ProxyRequests Off

 ProxyPreserveHost On

 <Proxy *>

    Order deny,allow

    Allow from all

</Proxy>

 ProxyPass / http://WASIP:8009/

 ProxyPassReverse / http:// WASIP:8009

 ProxyVia On

</VirtualHost>

 

톰캣을 사용한다면 Server.xml 설정 


<Connector executor="tomcatThreadPool" port="8009" protocol="HTTP/1.1" connectionTimeout="20000" />

 

SpringBoot 를 사용한다면 application.properties 설정 

server.port=9010

 

* 연결되어야할 ajp 포트번호를 server.port에 적어줘야한다. 

(이렇게 연결하면 따로 ajp 설정 작업을 안해줘서 편하긴한것같다.. ) 

 

 

아파치를 재실행하려거나 Stop하려는 경우

꺼지지도 않고 아래에러가 출력되는 경우가 있다.

 

(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80


 

원인은 모르겠지만

내가 한 설정이 잘못된건 아니고 Apache가 잠시 맛이간?거라고 생각하면된다. 

 

당황하지말고 아래 명령어를 실행해서 apache 실행을 확인해본다. 

netstat -ntlp 

apache가 실행중이라면 아래 이미지처럼  확인할 수 있다.

 

이제 해당 프로세스를 강제로 종료시킬건데 빨간 상자에 있는게 pid 이다. 

kill 명령어를 사용해서 강제 종료시킨다. 

kill -9 188513

 

종료하고 다시 조회를 해보자. 

netstat -ntlp 

 

바로 다시 다른 pid를 가지고 살아나는 경우가 있따.. 

그럴땐 나가서 커피한잔 마시고 돌아와서 다시 프로세스 죽이고 실행하면 잘된다.. 

 

가끔 발생하는 상황인데.. 시간이 난다면 원인을 찾아봐야겠다. 

 

(혹시 아시는 분은 댓글로 알려주시면 너무 감사하겠습니다.^-^)

 

끝! 

 

 

 

나의 작업환경 

Apache/2.4.46 (Unix) 
CentOS Linux release 7.4.1708 (Core) 

 

 

1. ssl key ftp를 통해서 서버에 저장한다.

디렉토리 생성 명령 : mkdir 디렉토리명
나의 경로 : /usr/local/ssl_key/

 

2. httpd.conf 파일의 주석 해제 

LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
Include conf/extra/httpd-ssl.conf

 

3. httpd-ssl.conf 수정

# 주석해제 ( 이건 안해도 된다.)
SSLRandomSeed startup file:/dev/urandom 256
SSLRandomSeed connect builtin


# 포트설정 
# 기본 Listen 443
Listen 9443 --나는 9443으로 받을 예정 

# virtualHost 설정 

<VirtualHost *:9443>
  ServerName www.myservice.com
  ServerAlias myservice.com
  SSLEngine on
  SSLCertificateFile /usr/local/ssl_key/myservice.com.crt
  SSLCertificateKeyFile /usr/local/ssl_key/myservice.com.key
  SSLCACertificateFile /usr/local/ssl_key/chainca.crt
  DocumentRoot /home/mytest/test
 #   <Directory /home/mytest/test>
 #              Order allow,deny
 #               Allow from all
 #              Options FollowSymLinks
 #               #Options Indexes
 #               AllowOverride All
 #               Require all granted
 #  </Directory>
</VirtualHost>

 

 

4. Apache 환경 설정 테스트

apachectl configtest 

 

"Syntax OK" 가 나오면 아파치를 실행 해준다. 

 

5. Apache 실행 

apachectl start

 

 

브라우저를 열고 접속해보기

https://192.168.11.22:9443  -- 192.168.11.22는 본인 아이피 넣으면 된다. 

 

안된다면?

1. httpd 가 실행 되고있는지 확인 netstat -ntlp

2. 방화벽 확인하기

참고 : genie-dev.tistory.com/60

 

방화벽은 열렸는데 Apache Connection 안되는 경우

* 리눅스 상단에 별도의 방화벽이 있다면 리눅스 자체의 방화벽 기능을 꼭 사용하지 않아도 된다. 나는 상단에 별도의 방화벽이 설정되어 있고 해당 방화벽은 오픈되어 있는 상태이다. 웹서버를

genie-dev.tistory.com

 

 

Apache 설치했다면 설정을 시작해보자.

 

 

설정파일 편집기 실행 후 

vi httpd.conf 

아래와 같이 내용 수정 

Listen 80 -- 사용할 포트 

ServerName localhost 

// vhost를 사용할 경우 주석 해제  
Include conf/extra/httpd-vhosts.conf

// ssl을 사용할 경우 주석 해제
Include conf/extra/httpd-ssl.conf

 

설정에 문제 없는지 확인해보기 

apachectl configtest

 

vhost를 사용하는 경우 이렇게 나올거다. 

// AH00112: Warning: DocumentRoot [/usr/local/apache/docs/dummy-host.example.com] does not exist

 

그럼 httpd-vhost.conf 파일을 열어서  DocumentRoot를 내게 맞게 설정한다. (html 파일이 있는곳으로 설정)

 

ssl을 사용하는 경우는 이렇게 나올거다. 

AH00526: Syntax error on line 144 of /usr/local/apache/conf/extra/httpd-ssl.conf:
SSLCertificateFile: file '/usr/local/apache/conf/server.crt' does not exist or is empty

-- 이건 SSL설정 포스팅을 참고하기!  (genie-dev.tistory.com/47

 

Apache) SSL 설정 샘플 + redircet

Centos7 Springboot 프로젝트를 띄우는 기준으로 설명합니다. 참고하세요~! apache 위치로 이동한 후 httpd.conf 파일을 열어 아래 모듈의 주석을 풀어준다. vi httpd.conf LoadModule alias_module modules/mod_a..

genie-dev.tistory.com

 

오류 사항을 수정 했다면 다시 설정 검사를 해본다. 

apachectl configtest 

 

"Syntax OK" 가 나온다면 성공! 

 

아파치를 실행해준다. 

apachectl start 

 

80 포트가 정상적으로 Listen 하고 있는지 확인한다.

netstat -ntlp 

 

정상적으로 Listen 되고 있다면 브라우저 실행 후 나의 아이피로 접속해본다. 


이게 안된다면 방화벽을 확인해야하는데 

리눅스 상단에 방화벽이 있다면 해당 방화벽을 확인하고 

없다면 iptables 를 확인해준다 .

 

참고 genie-dev.tistory.com/60

 

방화벽은 열렸는데 Apache Connection 안되는 경우

* 리눅스 상단에 별도의 방화벽이 있다면 리눅스 자체의 방화벽 기능을 꼭 사용하지 않아도 된다. 나는 상단에 별도의 방화벽이 설정되어 있고 해당 방화벽은 오픈되어 있는 상태이다. 웹서버를

genie-dev.tistory.com

 

+ Recent posts