22/01/26
- 이번 실습에서 알게 된 것!
Apache
Virtual Host : 하나의 컴퓨터(서버)나 IP러 여러 이름의 도메인을 응용 하게 해주는 것이다. httpd.conf 설정 파일을 열어서 설정을 추가해준다.
NameVirtualHost *:80
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for requests without a known
# server name.
#
<VirtualHost _default_:80>
ServerAdmin foo@example.com
DocumentRoot /usr/local/victolee/apache2.0.64/htdocs
ServerName localhost
ErrorLog logs/localhost-error_log
CustomLog logs/localhost-access_log common
<Directory "/usr/local/victolee/apache2.0.64/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Allow from all
</Directory>
</VirtualHost>
ServerName 사용할 도메인명
ServerAdmin 에러 전송될 이메일
DocumentRoot 도메인 접속시 처음 접속 되는 디렉터리 경로
ErrorLog 로그 경로 및 파일 이름
CustomLog 커스텀 로그 경로
Mod_jk는 AJP 사용 전에 웹서버에서 tomcat으로 보내기 위해 사용하는 모듈이다. URL과 Port를 점검한뒤 WAS로 보낸다.
AJP는 웹서버의 요청을 WAS로 위임하는 프로토콜이다. 8009번으로 들어온 port를 sever.xxml로 설정된 Tomcat에서 받는다.
netstat, ps -ef 명령어를 통한 포트와 tomcat의 동작 확인
설정에 따라서 설정을 0.0.0.0으로 변경하면 0.0.0.0으로 나오고 변경하지 않으면 127.0.0.1로 나온다. 즉 설정 파일에 따라서 다르게 나온다.
+ Ghostcat 취약점
AJP프로토콜을 /wevapps/ROOT 디렉터리 하위 파일을 읽을 수 있는 원격 해킹 취약점이 발견 되었다. 이에 secret key를 활성화 해놓았다. 이것이 secretkey를 false로 해 놓는 이유이다.
KISA나 wins등과 같은 보안 모니터링 업체에서 보내주는 뉴스레터를 확인 하는 것이 중요하다!
Tomcat + MySQL
web : 사진, 동영상, html과 같이 동작시 변화 요서가 없는 정적 컨텐츠를 처리한다.
was(web application service) : login 창과 같이 처리 과정이 필요한 동적 컨텐츠를 처리한다. (Tomcat, JBoss, JEUS, Django)
PHP는 apache의 경울 PHP-mysql 모듈을 통해 쿼리를 넣으면 mysql과 연동이 끝난다.
Tomcat은 jsbc를 설치한뒤 프로그램을 사용해서 연동을 한다. -> 한번 해보기!
-리눅스 명령어!
netstat 는 네트워크 접속, 라우팅 테이블, 네트워크 인터페이스의 통계 정보를 보여주는 도구이다.
-l (listen) : 연결 가능한 상태
-n (number port) : 포트 넘버
-t (tcp) : tcp
-u (udp) : udp
-p : 프로그램 이름 / PID
-a : 모두
-i : 이더넷 카드별 정상/에러/드랍 송수신 패킷 수 확인
-r : 라우팅 테이블
-s : 네트워크 통계
-nlpt : TCP listening 상태의 포트와 프로그램을 보여준다 (netstat -nlpt)
lsof 는 열려있는 파일을 나열 하는 것으로, 모든 파일과 파일을 열고 있는 프로세스들의 목록을 출력한다.
-u 는 사용자가 오픈한 파일 출력
-u^은 그 사용자를 제외한 것이다.
파일 경로를 주면 해당 파일을 오픈하고 있는 프로세스 리스트를 볼 수 있다.
-i 는 모든 네트워크 포트 정보를 확인 하는 것이다.
lsof -i TCP:22
로 열려있는 특정 포트의 정보를 볼 수 있다.
- 원하는 패키지 버전 설치
wget (링크 주소)
tar (다운받은 압축 파일) 압축 풀기
yum localhost (~~) 으로 압축 푼 패키지 설치 가능하다. 이때 패키지 명과 *를 조합해서 쉽게 설치 가능하다.
- php 설치 오류
yum -y install epel-release하면
이렇게 다운이 안되는 오류가 생기는 경우가 있다.
cd /etc/yum.repos.d/
vim epel.repo에서 다음과 같이 미러리스트를 주석 처리한뒤
yum clean all
yum repolist
하고 다시 설치하면 된다.
-php 모듈 관리
/etc/php.ini에 있는 모듈에 대한 주석을 풀어서 관리해주면 사용하게 설정 할 수 있다.
모듈을 설치, 파일 주석 관리를 통해서 php 모듈을 관리 할 수 있다.
- apache + tomcat 연동
apache + tomcat 은 기존 https://nnany.tistory.com/31 의 [(2)-2. mod_jk로 연동하기] 을 통해서 연동 하였다.
이 실습은 정적 페이지는 appache가 처리하고, 동적 페이지는 tomcat이 처리하게 한다. 둘다 tomcat이 처리하게 하길 원한다면
vi /etc/httpd/conf/httpd.conf 의 파일을 수정 (위의 블로그에선 vi /etc/httpd/conf.d/mod_jk.conf로 파일을 나눴다.)하면 된다. (태희매니저 블로그 참고 하였다. https://hee611.tistory.com/34)
<정적 동적 모두 tomcat이 처리하게 하는 구문>
LoadModule jk_module modules/mod_jk.so
<VirtualHost *:80>
ServerName localhost
JkMount /*.jsp tomcat
JkMount /*.json tomcat
JkMount /*.xml tomcat
JkMount /*.do tomcat
</VirtualHost>
vi /etc/httpd/conf.modules.d/mod_jk.conf를 만들어 설정 파일 나눴다.
<IfModule mod_jk.c>
JkWorkersFile conf/workers.properties
JkShmFile run/mod_jk.shm
JkLogFile logs/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%y %m 5d %H:%M:%S] "
</IfModule>
<동적만 tomcat이 처리하게 하는 구문>
LoadModule jk_module "/etc/httpd/modules/mod_jk.so"
JkWorkersFile /etc/httpd/conf/workers.properties
JkShmFile /var/run/mod_jk.shm
JkLogFile /var/log/httpd/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%y %m %d %H:%M:%S] "
<IfModule mod_jk.c>
JkMount /*.jsp app1Worker
</Ifmodule>
따로 처리하게 하는, 기존 구문인데 비교 해보자.
- php + DB 연동
https://nnany.tistory.com/35 참고한다.
http, php, db 를 yum으로 설치 해준다.
yum install -y httpd
yum install -y mariadb mariadb-server
yum install -y php php-mysql php-mbstring php-pdo php-gd
- DB 설정
mysql -u root -p 을 사용해서 mysql로 접속한다.
CREATE USER 'testuser'@localhost IDENTIFIED BY '1234'; 로 유저를 생하고
GRANT ALL PRIVILEGES ON *.* TO 'testuser'@'localhost'; 접속할 수있는 권한 준뒤에
FLUSH PRIVILEGES; 설정을 적용한다.
CREATE DATABASE sqlDB ; 로 DB 만들어 준다.
systemctl restart mariadb
- DB PHP 연결 php 설정
vim /var/www/html/info.php
<?php
phpinfo();
?>
를 통해 이 웹페이지에 들어가면 어떤 php 모듈이 들어가 있는지 확인 할 수 있다.
vim /var/www/html/test.php
<?php
$con=mysqli_connect("localhost", "testuser", "1234", "sqlDB");
if ( mysqli_connect_error($con) ) {
echo "MySQL 접속 실패 !!", "<br>";
echo "오류 원인 : ", mysqli_connect_error();
exit();
}
echo "MySQL 접속 완전히 성공!!";
mysqli_close($con);
?>
를 사용해 해당 페이지로 들어가면 DB 연동 여부를 확인 할 수 있다.
'Server 운영 > server' 카테고리의 다른 글
[Linux] 일반 사용자로 httpd 80 port 사용하기 (0) | 2024.07.17 |
---|---|
[Linux] rsync로 암호 입력 없이 파일 동기화 하기 (0) | 2024.06.11 |
[Linux] LVM 구성 (0) | 2024.03.13 |
[Zabbix] Zabbix 구조 이해하기 (0) | 2024.03.08 |
DB replication (0) | 2022.01.27 |