POOPOO: 배변 일기 앱
이 포스팅은 CentOS 7 버전에서 진행되었습니다.
목차
- Apache 가이드 - 설치부터 HTTPS 적용까지
- Apache 가이드 - Apache Tomcat과 연동하기
- Apache 가이드 - 설정파일 분석하기
- Apache 가이드 - 로드밸런싱 설정하기
설치하기
Apache 설치하기
Apache와 Apache Tomcat을 연동하는 방법은 총 세가지가 있습니다. 그 중 한가지인 mod_jk를 사용하는 방법은, httpd-devel을 사용해야 에러가 나지 않기 때문에, httpd-devel 을 설치합니다.
# yum install -y httpd-devel
방화벽 설정하기
외부에서 접근을 허용하기 위해서는 방화벽에 해당하는 포트를 허용할 수 있도록 등록해야 합니다.
Apahe는 80번 포트를 사용하고 있기 때문에, 아래와 같이 방화벽에 80번 포트를 허용합니다.
이후에 SSL 인증서를 적용하여 HTTPS를 사용하기 위해서는 443 포트를 사용하기 때문에 443 포트를 허용합니다.
--reload 명령어를 통해서 방화벽에 적용을 해줍니다.
# firewall-cmd --permanent --zone=public --add-port=80/tcp
# firewall-cmd --permanent --zone=public --add-port=443/tcp
# firewall-cmd --reload
실행하기
설치된 Apache 웹서버를 실행합니다.
시작 - start / 중지 - stop / 재시작 - restart
# service httpd start
접속하기
시작한 다음, 웹서버로 접속을 시도해봅니다.
웹 브라우저를 켜신 후, "http://아이피:80/" 을 입력하시면 아래와 같은 페이지가 뜨는 것을 보실 수 있습니다.
Apache 웹 서버의 초기 화면
HTTPS 인증서 적용하기
필요한 패키지 설치하기
정상적인 방법으로 HTTPS 인증서를 적용하기 위해서는, 인증서를 발급하는 업체에 일정 금액을 지급한 후, 인증서 파일을 넘겨받습니다.
하지만, 그러기 위해서는 도메인(https://naver.com과 같은 사이트 주소)을 구매해야하기 때문에 개발단계에서는 부담이 될 수 있습니다.그렇기 때문에 초기에는 사설 인증서 파일을 만들어서 Apache 서버에 적용합니다.
그래서 이번 포스팅에서는 사설 인증서를 만들기 위한 패키지를 설치하는 방법에 대해서 정리해보겠습니다.
# yum install -y mod_ssl openssl
인증서 생성하기
개인키 생성하기
# openssl genrsa -out ssl.key 2048
인증서 발급을 위해 필요한 정보를 담고있는 CSR 파일 생성하기
# openssl req -new -key ssl.key -out ssl.csr
개인키와 CSR 파일을 이용하여, SSL 인증서 파일(*.crt)을 생성하기
# openssl x509 -req -days 365 -in ssl.csr -signkey ssl.key -out ssl.crt
파일을 지정된 경로에 복사하기
# cp ssl.crt /etc/pki/tls/certs
# cp ssl.key /etc/pki/tls/private/ssl.key
# cp ssl.csr /etc/pki/tls/private/ssl.csr
환경설정 파일 수정하기
Apache의 환경설정 파일은 httpd.conf 라는 이름을 가집니다. 이 파일을 찾아서 상단에 아래와 같은 내용을 추가합니다.
# vi /etc/httpd/conf/httpd.conf
<< 추가할 내용 >>
NameVirtualHost *:443
<VirtualHost *:443>
ServerName localhost
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/ssl.crt
SSLCertificateKeyFile /etc/pki/tls/private/ssl.key
</VirtualHost>
Apache 재시작
설정파일 변경 후, 변경한 내용을 반영하기 위해서 Apache 서버를 재시작합니다.
# service httpd restart
Tip :: 스크립트 작성하기
작업 순서 정리하기
1. Apache 설치
2. 방화벽 설정
3. HTTPS 인증서에 필요한 패키지 설치
4. 인증서 생성 후 지정된 위치에 복사
5. httpd.conf 상단에 HTTPS 관련 설정 추가
6. 기존 httpd.conf 파일 백업 후 새로 만든 httpd.conf 파일로 덮어쓰기
7. Apache 재시작
스크립트 작성하기
위에서 작성한 작업 순서에 맞게 쉘 스크립트를 작성해줍니다.
이와같이, 직접 개발환경을 구성하는 작업을 한 후, 팀원들에게 개발환경을 공유하는 방법에 있어서는 쉘 스크립트가 매우 유용합니다.
단! 쉘 스크립트는 운영체제와 패키지의 버전에 매우 민감하기 때문에, 장기간 사용할 수는 없고, 주기적으로 잘 작동되는지 테스트를 해야합니다.
이 점만 유의해주시면 팀원들에게 좀 더 빠르게 개발환경을 구성해 주실 수 있을 것 같습니다.
스크립트 파일 만들고 실행권한을 부여하기
# touch installAndSSL
# chmod 755 installAndSSL
생성된 스크립트 파일에 아래의 내용을 입력하기
# vi installAndSSL
# ---------------- installAndSSL 파일내용 ----------------
# 1. 아파치 설치
yum install -y httpd-devel
# 2. 방화벽 설정
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --reload
# 3. HTTPS 인증서에 필요한 패키지 설치
yum install -y mod_ssl openssl
# 4. 인증서 생성 후 지정된 위치에 복사
openssl genrsa -out ssl.key 2048
openssl req -new -key ssl.key -out ssl.csr
openssl x509 -req -days 365 -in ssl.csr -signkey ssl.key -out ssl.crt
cp ssl.crt /etc/pki/tls/certs
cp ssl.key /etc/pki/tls/private/ssl.key
cp ssl.csr /etc/pki/tls/private/ssl.csr
# 5. httpd.conf 파일만들기
touch httpd.conf
echo 'NameVirtualHost *:443' >> httpd.conf
echo '<VirtualHost *:443>' >> httpd.conf
echo ' ServerName localhost' >> httpd.conf
echo ' SSLEngine on' >> httpd.conf
echo ' SSLCertificateFile /etc/pki/tls/certs/ssl.crt' >> httpd.conf
echo ' SSLCertificateKeyFile /etc/pki/tls/private/ssl.key' >> httpd.conf
echo '</VirtualHost>' >> httpd.conf
echo 'ServerRoot "/etc/httpd"' >> httpd.conf
echo 'Listen 80' >> httpd.conf
echo 'Include conf.modules.d/*.conf' >> httpd.conf
echo 'User apache' >> httpd.conf
echo 'Group apache' >> httpd.conf
echo 'ServerAdmin root@localhost' >> httpd.conf
echo '<Directory />' >> httpd.conf
echo ' AllowOverride none' >> httpd.conf
echo ' Require all granted' >> httpd.conf
echo '</Directory>' >> httpd.conf
echo 'DocumentRoot "/var/www/html"' >> httpd.conf
echo '<Directory "/var/www">' >> httpd.conf
echo ' AllowOverride None' >> httpd.conf
echo ' Require all granted' >> httpd.conf
echo '</Directory>' >> httpd.conf
echo '<Directory "/var/www/html">' >> httpd.conf
echo ' Options Indexes FollowSymLinks' >> httpd.conf
echo ' AllowOverride None' >> httpd.conf
echo ' Require all granted' >> httpd.conf
echo '</Directory>' >> httpd.conf
echo '<IfModule dir_module>' >> httpd.conf
echo ' DirectoryIndex index.html' >> httpd.conf
echo '</IfModule>' >> httpd.conf
echo '<Files ".ht*">' >> httpd.conf
echo ' Require all denied' >> httpd.conf
echo '</Files>' >> httpd.conf
echo 'ErrorLog "logs/error_log"' >> httpd.conf
echo 'LogLevel warn' >> httpd.conf
echo '<IfModule log_config_module>' >> httpd.conf
echo ' LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined' >> httpd.conf
echo ' LogFormat "%h %l %u %t \"%r\" %>s %b" common' >> httpd.conf
echo ' <IfModule logio_module>' >> httpd.conf
echo ' LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio' >> httpd.conf
echo ' </IfModule>' >> httpd.conf
echo ' CustomLog "logs/access_log" combined' >> httpd.conf
echo '</IfModule>' >> httpd.conf
echo '<IfModule alias_module>' >> httpd.conf
echo ' ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"' >> httpd.conf
echo '</IfModule>' >> httpd.conf
echo '<Directory "/var/www/cgi-bin">' >> httpd.conf
echo ' AllowOverride None' >> httpd.conf
echo ' Options None' >> httpd.conf
echo ' Require all granted' >> httpd.conf
echo '</Directory>' >> httpd.conf
echo '<IfModule mime_module>' >> httpd.conf
echo ' TypesConfig /etc/mime.types' >> httpd.conf
echo ' AddType application/x-compress .Z' >> httpd.conf
echo ' AddType application/x-gzip .gz .tgz' >> httpd.conf
echo ' AddType text/html .shtml' >> httpd.conf
echo ' AddOutputFilter INCLUDES .shtml' >> httpd.conf
echo '</IfModule>' >> httpd.conf
echo 'AddDefaultCharset UTF-8' >> httpd.conf
echo '<IfModule mime_magic_module>' >> httpd.conf
echo ' MIMEMagicFile conf/magic' >> httpd.conf
echo '</IfModule>' >> httpd.conf
echo 'EnableSendfile on' >> httpd.conf
echo 'IncludeOptional conf.d/*.conf' >> httpd.conf
# 6. 기존의 httpd.conf 파일을 백업후 위에서 만든 파일 붙여넣기
cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.backup
rm -f /etc/httpd/conf/httpd.conf
cp ./httpd.conf /etc/httpd/conf/
# 7. Apache 재시작
service httpd restart
스크립트 실행하기
# ./installAndSSL
'Web Server > Apache' 카테고리의 다른 글
○ Apache 가이드 - 로드밸런싱 설정하기 (0) | 2020.07.06 |
---|---|
○ Apache 가이드 - 설정파일 분석하기 (0) | 2020.07.05 |
○ Apache 가이드 - Apache Tomcat과 연동하기 (1) | 2020.07.05 |