CentOS 7 Web 서버 구축

CentOS 7 Web Server 구축




Apache VS Nginx
그동안 웹 개발을 하면서 Apache만 사용했었는데 Nginx 가 대세라는 말에 공부를 했다.
영국 NetCraft에서 약 10억4백여개 사이트를 대상으로 2016년 3월 조사된 최근 웹 서버의 회사별 점유율 현황이다.






Apache 는 하락세ㅠㅠ
Nginx 는 상승세!!


Why?
Nginx 의 특징을 보면 이해할 수 있다.
image


아키텍쳐는 참고하세용~


주요 특징
Event-Driven
Asynchronous
Non-Blocking




Apache와 Nginx 차이

1. Request 처리 방식

image
Memory 측면에서 NginX가 Resource를 적게 사용한다.
Thread 수가 적기 때문에 Context Switcing도 적다!!
따라서 부하가 증가해도 CPU/메모리 사용량은 크게 증가하지 않는다!!


Apache는 서버의 프로세스가 Blocking(DB, File Read, Write)되면 요청을 계속 처리 못하고 Delay가 발생한다.
반면 Nginx는 쓰레드에서 발생한 Event를 Non-Blocking, Asynshronous로 처리하기 때문에 Delay가 적다!



CentOS 7에 다음과 같은 환경으로 서버를 구축한다.

JAVA 1.8.0_141
Nginx 1.12.1
Tomcat 8.x












1. JAVA 설치

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#Directory move
cd /opt/
#Download
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz"
#Decompress
tar xzf jdk-8u141-linux-x64.tar.gz
#Directory move
cd /opt/jdk1.8.0_141/
#alternative can choose java version if there are several java version
alternatives --install /usr/bin/java java /opt/jdk1.8.0_141/bin/java 2
alternatives --config java
# Selection    Command
#-----------------------------------------------
#  1           /opt/jdk1.7.0_71/bin/java
#  2           /opt/jdk1.8.0_45/bin/java
#  3           /opt/jdk1.8.0_91/bin/java
#  4           /opt/jdk1.8.0_141/bin/java
# Enter to keep the current selection[+], or type selection number: 4
# select /opt/jdk~~_141/java
#alternative can choose java version if there are several java version
alternatives --install /usr/bin/jar jar /opt/jdk1.8.0_141/bin/jar 2
alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_141/bin/javac 2
alternatives --set jar /opt/jdk1.8.0_141/bin/jar
alternatives --set javac /opt/jdk1.8.0_141/bin/javac
cs


JAVA PATH 설정


1
2
3
4
5
6
7
8
9
10
11
12
#open /etc/profile
vi /etc/profile
#insert below script in the /etc/profile
export JAVA_HOME=/opt/jdk1.8.0_141
export JRE_HOME=/opt/jdk1.8.0_141/jre
export PATH=$PATH:/opt/jdk1.8.0_141/bin:/opt/jdk1.8.0_141/jre/bin
#exit
source /etc/profile
cs




2. NginX 설치



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#package configuration
sudo vi /etc/yum.repos.d/nginx.repo
#insert in the /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
#exit
sudo yum install -y nginx
#open firewall for web server
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
#configure auto start when the system boot
systemctl start nginx
systemctl enable nginx
#check the version
nginx -v
#root directory is /etc/nginx
cs



browser에 localhost 입력하여 정상적으로 동작하는지 확인
출처 : http://nginx.org/en/linux_packages.html#stable


3. Apache Tomcat 설치

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#Download
wget http://mirror.navercorp.com/apache/tomcat/tomcat-8/v8.5.16/bin/apache-tomcat-8.5.16.tar.gz
#Move Directory
mv apache-tomcat-8.5.16.tar.gz /usr/share
cd /usr/share
tar -xzf apache-tomcat-8.5.16.tar.gz
#Check apache
ls | grep apache
#Open Firewall
firewall-cmd --permanent --zone=public --add-port=8080/tcp
firewall-cmd --reload
#Start Tomcat for test
cd /usr/share/apache-tomcat-8.0.18/bin
./startup.sh
#Make Soft Link
sudo ln -/usr/share/apache-tomcat-8.0.17 /tomcat
#Change Own
sudo chown -hR aiden: /tomcat
cd /usr/share
sudo chown -hR aiden: apache-tomcat-8.0.18
#Set Configure
sudo vi /usr/lib/systemd/system/tomcat.service
#Insert below script into /usr/lib/systemd/system/tomcat.service
[Unit]
Description=tomcat 8
After=network.target syslog.target
[Service]
Type=forking
User=Ted
Group=Ted
ExecStart=/tomcat/bin/startup.sh start
ExecStop=/tomcat/bin/shutdown.sh stop
[Install]
WantedBy=multi-user.target
#exit
#Auto start when the system boot
sudo systemctl enable /usr/lib/systemd/system/tomcat.service
reboot
#Check tomcat
systemctl status tomcat.service
cs
Browser에 localhost:8080 정상적으로 동작하는지 확인

Default Directory /usr/share/apache-tomcat-8.0.18/webapps/Root
디렉토리 퍼미션이 aiden 으로 전부 안되어 있으면

systemctl service 정상적으로 시작 안함
스크린샷, 2017-08-04 17-19-13.png

출처 : 
http://gnujava.com/board/article_view.jsp?article_no=1813&menu_cd=25&board_no=12&table_cd=EPAR05&table_no=05

4. Nginx + Tomcat 연동
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#Set Congifure for connecting Nginx with Tomcat
sudo vi /etc/nginx/conf.d/default.conf
#파일안에 server부분에 아래 내용을 추가
#[,,,] 안에 내용은 각 환경에 맞추어 추가
server {
     location / { //수정
             root [Tomcat 웹 서비스 디렉토리] //ex) [Tomcat 설치된 디렉토리]/webapps/ROOT
             index index.html index.htm index.jsp
             #반드시 윗줄에 index.jsp 추가해줘야함
     }
     location ~\.jsp$ { //추가
             proxy_pass http://localhost:8080;
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             proxy_set_header Host $http_host;
     }
}
cs

Permission Denied Error(403 Forbidden)


chmod 755 -R /home
SELinux : 리눅스의 보안 담당 프로그램













Share:

댓글 3개:

  1. 안녕하세요.
    포스팅 잘 보았습니다.

    chmod 755 -R /home

    이 부분은 무엇을 의미 하는지 검색을 해도 명확이 제시하지 않아 댓글 남깁니다.
    감사합니다. 수고하세요.

    답글삭제
    답글
    1. 아래 내용으로 이해 하면 되는 건가요?

      파일이 생성될때 기본적인 퍼미션이 부여됩니다.
      하지만, 퍼미션을 변경하고 싶을 때가 있습니다. (가령 이 파일을 모두에게 공개한다거나 하는...)

      퍼미션 변경에는 여러가지 방법이 있지만, 여기서는 가장 쉬운방법으로 배워보도록 합시다.
      바로 "chmod" 명령을 사용하면 아주 손쉽게 퍼미션을 변경할 수 있습니다.

      chmod [변경될 퍼미션값] [변경할 파일]

      여기서 [퍼미션값]을 지정해 줘야하는 데요..
      퍼미션값을 구하는 방법은 다음과 같습니다.

      각 퍼미션 기호를 숫자로 변환 합니다. ( r = 4 , w = 2 , x = 1 )
      예) r - x 인 경우 4 0 1

      변환한 숫자를 합산합니다.
      예) 4 0 1 인 경우 4+0+1 = 5

      이런식으로 하나의 퍼미션을 숫자값으로 변환하면 됩니다..
      예) rwxr-xr-x 이면 rwx r-x r-x 세자리씩 끊고, 4+2+1 | 4+0+1 | 4+0+1 숫자변환 뒤 합산하면 "755" 라는 퍼미션값이 나옵니다.

      그래서 " chmod 755 conory.text " 명령을 실행하면 conory.text 파일이 755에 해당되는 퍼미션으로 변경됩니다.
      그리고 디렉토리도 이 방법으로 퍼미션을 변경할 수 있습니다.

      디렉토리의 경우 "-R" 옵션을 사용하면 하위 디렉토리의 모든 디렉토리및 파일의 퍼미션이 변경됩니다.
      예) " chmod -R 777 conory " conory 디렉토리의 하위에 위치한 모든 파일및 디렉토리 퍼미션이 777로 변경됩니다.

      삭제
  2. SELINUX=disabled 설정을 하니 css 반영 이 안됩니다...

    답글삭제