본문 바로가기
리눅스

리눅스 수업 2 2차시

by IT매니절 2024. 4. 7.

복습 요약
1. root 접속 금지 : /etc/ssh/sshd_config 파일의 PermitRootLogin No
2. 관리자 사용자 생성 useradd -g whell liunuxadmin
3. PAM 모듈 권한제한 : /etc/pam.d/su 파일에 pam_wheel.so 모듈 사용
4. 방화벽 설정 : firewall-cmd --permanent --add-service={http,https}
firewall-cmd --reload
firewall-cmd --list-services

(alias fl='firewall-cmd --list-services' 로 간략화 할 수 있지만, 초반에는 추천하지 않음)

yum -y install bash-completion

=> centos7에서 rockey8처럼 firewall-cmd --<tab><tab>으로 리스트를 볼 수 있게 해주는 패키지

5. 웹서버 설정파일 수정 (html의 php 인식)
vi /etc/httpd/conf.d/php.conf
<FilesMatch \.(php|html)$>

6. /etc/my.cnf: MariaDB의 설정파일
편의성을 위한 설정 추가.
ss -nltp로 서비스 확인
(n 숫자표기, l 리스닝포트, t tcp포트, p 프로그램)

7. mysql(mariadb) 설정 /etc/my.cnf

$HOME/.my.cnf 파일로 자동접속을 할 수 있다. mysql 사용 중 비밀번호를 변경하면 .my.cnf 파일도 변경해주어야 한다

(* 최신 버전에서는 .my.cnf 파일이 필요없게 되었다)

 

 

(ubuntu OS에서 ip 고정을 하려는데 vi도 ifconfig도 없어서 죄다 설치함

우분투는 vi /etc/netplan/00-installer-config.yaml를 수정한뒤에 reboot 해주었다.)

 

cat /etc/redhat-release

=> OS 버전 확인하기

 

불필요한 사용자 / db 삭제
- 비밀번호가 없는 사용자, test 샘플 db

ex delete from user where password = ''; 또는 delete from user where user!='localhost';

flush privileges;

 

mariadb 위치 : /var/lib/mysql

mariadb - DB 디렉터리 : /var/lib/mysql/DB이름

mariadb - Table 디렉터리 : /var/lib/mysql/DB이름/Table이름

 

mysql mysql

    |          └ DB

   └DBMS 안으로 접속하는 클라이언트 명령어

 

gnuboard그누보드 설치

yum -y install php-gd gd gd-devel libjpeg libjpeg-devel giflib giflib-devel libpng libpng-devel freetype freetype-devel
=> GD 라이브러리(PHP 그래픽 생성/조절) 설치
yum -y install php php-common php-mysql
=> php 관련 패키지 설치

 

모듈설명

php-gd
=> 확장 모듈. php에서 이미지를 생성하고 편집하는 기능 사용
gd
=> 이미지 생성, 편집과 그리기를 위한 그래픽 라이브러리
gd-devel
=> gd 라이브러리의 개발 파일 포함. gd 라이브러리를 사용해 프로그램 개발시 사용
libjpeg, libjpeg-devel
=> jpeg 이미지 형식의 지원을 위한 라이브러리. jpeg 파일을 생성하고 읽는 기능

giflib, giflib-devel

=> gif 이미지 형식의 지원을 위한 라이브러리. gif 파일을 생성하고 읽는 기능

pnglib, pnglib-devel

=> png 이미지 형식 지원, 생성, 읽는 기능

freetype, freetype-devel

=> Truetype 및 postscript 형식 글꼴 렌더링 지원. freetype 글꼴렌더링. freetype-devel은 freetype 라이브러리를 사용해 개발할 때 필요한 개발파일 포함

( -devel = 개발 라이브러리를 의미함 )

 

gnuboard 관리자 dbms 생성

# mysql

# create gnuboard;

# grant all privileges on gnuboard.* to gnuboard@localhost;

# exit 

# show databases;

# show grants all gnuboard@localhost;

 

yum -y install git
git을 이용하기 위해 설치

 

git clone https://github.com/gnuboard/gnuboard5.git
mkdir -m 777 gnuboard5/data

chcon -t httpd_sys_rw_content_t gnuboard5/data

=> 웹에서 data 디렉터리에 파일을 생성해야 하기 때문에, 777로 권한 변경하고 chcon 명령어로 보안 context 변경 (SELinux 컨텍스트)

ls -dZ 명령어로 context 상태 확인 가능

httpd_sys_rw_content_t

=> 설정된 컨텐츠에 대해 read 와 write 권한을 갖게 해줌

 

(centos7부터, 보안강화를 위해 httpd_unified boolean의 설정이 off로 변경되었다.
httpd_unified boolean은 웹서버와 웹서버의 콘텐츠를 동일한 룰로 처리하는데,
7부터는 off가 되어 콘텐츠에는 읽기 전용 권한만 있다
때문에 SELinux context를 재지정해준 것)

 

그누보드 주소 : http://<웹서버IP주소>/gnuboard5/

 

 

Apache + Tomcat + MariaDB 환경

: WEB Server와 Tomcat이 연동하지 않은 경우

 

DNS

Server

    ↕        ┌ firewall
WEB      │Tomcat       DBMS
Client ↔│  WAS   ↔ MariaDB 

               (Apache     (3306/tcp)

                Tomcat)

 

yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel \
tomcat tomcat-webapps tomcat-admin-webapps
=> jsp 환경은 java기반이어서 java를 먼저 설치

 

vi /etc/tomcat/tomcat-users.xml
=> admin-gui를 수정해 admin user password와 roles 설정

 

systemctl enable --now tomcat

=> 톰캣 서비스 활성화

 

centos7 기준 톰캣은 8005 8009 8080 포트 세 개가 열린다

8080 : 기본 포트

8005 : HTTP 프로토콜 처리용 내부 접속 포트

8009 : mod_jk.so를 이용해 아파치 웹서버와 통신하기 위한 포트

(ss 또는 netstat를 이용. ex ss -ntl | grep java )

 

firewall-cmd --permanent --add-port=8080/tcp

firewall-cmd --reload

=> 방화벽에 8080 포트 활성화

 

http://<웹서버IP주소>:8080 으로 접속하면 톰캣 페이지가 나타난다

 

cd /usr/share/tomcat/webapps/ROOT                     <= 톰캣의 웹 기본경로

vi hello.jsp

=> 기본경로에 jsp 파일 만들어보기.

 

jsp : 자바 서블릿 페이지. java 기술을 사용해 동적 웹페이지를 생성하는 서버 측 웹 기술.

과정: 클라이언트에서 jsp 페이지를 요청하면, 톰캣서버에서 jsp 파일을 처리해서 html로 변환한 후 브라우저에 반환

 

아파치 웹서버 : 정적인 페이지 담당 (http 80번 혹은 https 443번 포트)톰캣 : 동적인 페이지 담당 (8080, 8009, 8005)(웹서버와 연동하면 일반적으로 8080 포트는 닫아준다. 톰캣은 동적인 페이지만 담당하고, 웹서버가 앞단에서 접속을 받아주는 것으로 분할함)

 

 

: WEB Server와 Tomcat이 연동한 경우

DNS

Server

    ↕        ┌ firewall
WEB      │ WEB      Tomcat       DBMS
Client ↔│ Server ↔ WAS   ↔ MariaDB 

                               (Apache     (3306/tcp)

                                Tomcat)

 

 

웹서버와 연동하기 위해 커넥터 모듈인 tomcat-connectors를 설치한다.

 

yum -y install gcc wget httpd httpd-devel
wget https://mirror.navercorp.com/apache/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.49-src.tar.gz
tar xzf tomcat-connectors-1.2.49-src.tar.gz
cd tomcat-connectors-1.2.49-src/native
./configure --with-apxs=/usr/bin/apxs
make

make install

=> wget으로 아파치 미러 사이트에서 다운로드를 받는다. tar xzf로 압축을 푼다.

압축을 푼 파일 안으로 들어가서 파일을 실행, make로 컴파일하고 make install로 설치.

 

ll /usr/lib64/httpd/modules/mod_jk*
=> 설치가 완료되면 모듈디렉터리에 mod_jk.so가 생겨나있다

 

mod_jk.so

=> 클라이언트가 서버로 접속하면 url과 port를 확인해 WAS(Tomcat)로 보낸다

 

모듈은 .so 확장자를 가진다.

(ex libphp5.so 는 php5의 모듈임)

 

vi /etc/httpd/conf/httpd.conf
vi /etc/httpd/conf/workers.properties
=> 추가된 설정들은 다음시간에 설명해주기로 하심

 

톰캣 포트 8080 비활성화하기

vi +71 /etc/tomcat/server.xml

=> vi를 열면서 특정 라인을 열겠다는 뜻. systemctl restart tomcat.service 로 재시작하면 적용.

주석처리

 

 

AJP란?

아파치 웹서버와 톰캣(자바 웹 애플리케이션 서버)이 서로 통신하는 프로토콜

( vi +95 /etc/tomcat/server.xml 에서 주석처리되어있지 않은지 확인. 기본값은 열려있다 )

 

 

'리눅스' 카테고리의 다른 글

rocky 리눅스로 싱글모드 패스워드 재설정하기  (0) 2024.04.07
소스 복사 붙여넣기  (0) 2024.04.07
리눅스 수업 2 1차시  (0) 2024.04.06
리눅스 수업 8차시  (0) 2024.03.17
리눅스 수업 7차시  (0) 2024.03.16