nginx 설치
- 참고 url : https://www.nginx.com/resources/admin-guide/installing-nginx-open-source/
repository설정
$ vi /etc/yum.repos.d/nginx.repo ------------------------------------------- [nginx] name=nginx repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=0 enabled=1
repository적용
$ yum update
설치
$ yum install nginx
- nginx설정
자동실행
$ systemctl start nginx $ systemctl enable nginx
start/stop/reload
tomcat 계정에서는 sudo systemctl start nginx sudo systemctl stop nginx sudo systemctl restart nginx sudo systemctl reload nginx sudo service tomcat10 start sudo service tomcat10 stop
tomcat연동
- 단독서비스인 경우 (현재 가상화 대부분은 단독서비스로 쓰여져 템플릿은 이를 기반으로 생성함)
default.conf백업
$ cp default.conf default.conf.ori
default.conf 변경 (모든 url에 대해 설정)
server { listen 80; server_name localhost; client_max_body_size 500M; charset UTF-8; #charset koi8-r; #access_log /var/log/nginx/log/host.access.log main; # location / { # root /usr/share/nginx/html; # index index.html index.htm; # } location /www_contents/ { alias /u00/www_contents/; #autoindex on; } location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} }
서비스가 많은 경우
$ vi /etc/nginx/conf.d/tomcat.conf ----------------------------------------------------------------- server { listen 80; server_name 도메인; client_max_body_size 500M; charset UTF-8; #access_log logs/host.access.log main; location /www_contents/ { alias /u00/www_contents/; autoindex on; } location / { #index index.html index.htm; proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
- 단독서비스인 경우 (현재 가상화 대부분은 단독서비스로 쓰여져 템플릿은 이를 기반으로 생성함)
nginx user를 tomcat group에 추가
$ gpasswd -a nginx tomcat
추가하는 이유는 nginx에서 tomcat에 접근하기 위함( 파일시스템)
우분투의 경우 nginx를 구동하는 계정이 다를 수 있음nginx구동 중인 계정 확인
$ ps -ef|grep nginx
결과 예시
- 위 경우 www-data이므로 gpasswd -a www-data tomcat 수행
명령어는 아래 참고
출처 : https://www.lesstif.com/pages/viewpage.action?pageId=43844026
|
| 설정 재구동 |
|
| 서비스가 구동중이었을 경우에만 재시작 |
|
| 서비스 중지 |
|
| 서비스 재시작 |
|
| 서비스 시작 |
|
| 서비스 구동 여부 확인 |
|
| 모든 서비스의 상태 표시 |
|
| 서비스 활성화(부팅시 자동 구동) |
|
| 서비스 비활성화 |
|
| 서비스의 활성화 여부 표시 |
|
| 모든 서비스의 현재 활성화 여부 표시 |
|
| 현재 target 이후에 시작하는 서비스의 목록 |
|
| 현재 target 이전에 시작하는 서비스 |
서비스 구동
서비스를 구동하려면 start 명령어 뒤에 서비스명을 주면 되며 아래 예제는 mariadb 서비스를 시작합니다.
서비스 중지
서비스 중지는 stop 옵션과 중지할 서비스 이름을 주면 되며 아래는 mariadb 서비스를 중지합니다.
서비스 자동 시작
웹 서버, DBMS 서버등 서비스에 필요한 데몬들은 부팅과 동시에 자동으로 구동되어야 합니다.
CentOS 6 까지는 chkconfig 명령으로 자동 부팅 여부를 설정할 수 있었지만 Ubuntu 16, CentOS 7 부터는 systemctl enable명령을 사용하면 됩니다.
서비스 자동 시작 중지
자동 시작을 취소하고 싶은 경우 systemctl disable 명령을 사용하면 됩니다.
동작중인 모든 서비스 목록
systemctl 에 등록된 유닛은 부팅시 자동 구동되는 모든 명령어도 포함되므로 만약 서비스만 보려면 필터 명령어인 --type=service 구문을 주면 됩니다.
또 이중에서 실행중인 서비스 목록만 뽑아 볼 경우 --state=running 옵션을 주면 되며 아래는 서비스중에 현재 동작중인 목록을 표시하는 명령입니다.
자동 시작 서비스 목록
부팅시 자동 시작되는 서비스중 필요없는 서비스가 있을 수 있습니다. 이를 확인하려면 먼저 전체 등록된 서비스중에 부팅시 자동으로 시작되는 서비스의 목록을 확인해야 하며 --state=enable 옵션으로 목록을 확인할 수 있습니다.
journalctl 로 로그 보기
systemd 로 데몬 프로세스 구동시 데몬 프로세스가 제대로 구동되지 않을 경우 systemd 가 발행하는 로그 파일에 해당 이력을 남기게 됩니다. 그러므로 무엇때문에 구동에 실패했는지를 확인하려면 이 로그를 보아야 하며 이를 위해 journalctl 이라는 별도의 명령어를 사용하면 됩니다.
예로 아파치 웹 서버 구동에 실패하면 systemctl 은 아래와 같이 로그를 통해 원인을 파악하라는 메시지를 표시해 줍니다.
TODO systemctl status apache2.service, "journalctl -xe" 진하게 표시
안내 메시지처럼 systemctl status 명령어로 아파치 웹 서버의 상태를 확인할 수 있고 더 자세한 로그를 보려면 journalctl -xe 명령어를 사용하면 됩니다.
TODO 139925195380608] Apache is running 진하게 표시
가끔 터미널 컬럼 길이보다 메시지가 길 경우 개행을 하지 않아서 에러 메시지를 보기가 어려운 경우가 있습니다. 위의 예제에서도 "Apache is running" 뒤에 에러 메시지가 있지만 개행하지 않아서 정확한 메시지를 읽을수가 없어서 원인 파악이 힘들어 집니다.
이런 경우 journalctl 에 pager 를 사용하지 않도록 설정하면 터미널 길이보다 긴 메시지는 자동 개행이 되므로 전체 에러 로그를 확인할 수 있습니다.
'운영체제 이야기 > Linux(CentOS)' 카테고리의 다른 글
[CentOS7] 설치 및 설정 (0) | 2019.05.06 |
---|---|
[CentOS7] MySql 5.6 설치 및 설정 (0) | 2019.05.06 |
[CentOS7] CentOS 7 초기설정 (0) | 2019.04.29 |
[CentOS7] Nginx SSL 인증서 적용 (0) | 2018.11.02 |
[CentOS7] 리눅스 환경변수 설정하기 (0) | 2018.05.10 |
댓글