nginx 설치

yum 으로 nginx 설치

[root@localhost web]# yum install nginx

 

부팅 시 자동으로 시작하도록 설정 & 서비스 기동

[root@localhost web]# systemctl enable nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
[root@localhost web]# systemctl restart nginx

 

방화벽 열기

[root@localhost nginx]# firewall-cmd --zone=public --add-port=80/tcp --permanent
success
[root@localhost nginx]# firewall-cmd --reload
success

 

기타 설정

나에게 필요했던 설정 포인트 : root 변경 / 포트 변경(7000) / charset 설정 / try_files 설정

[root@localhost nginx]# vi /etc/nginx/nginx.conf
    server {
        listen       7000 default_server;
        listen       [::]:7000 default_server;
        charset      utf-8;

        server_name  _;
        root         /opt/web/client;
        ...
        location / {
            root /opt/web/client;
            index index.html;
            try_files $uri /index.html;
        }
* try_files $uri /index.html;
요청한 주소의 uri를 무시하고 index.html 파일을 제공
ex) http://localhost/hello => uri : /hello, /opt/web/index.html,  
SPA(Single Page Application)의 경우 hello는 index.html을 기반으로 내부 모듈에 의해 결정됨
nginx의 경로에는 hello 없음
참고사이트) https://docs.nginx.com/nginx/admin-guide/web-server/serving-static-content/

selinux 설정

참고사이트) https://www.lesstif.com/pages/viewpage.action?pageId=48988516

https://www.lesstif.com/pages/viewpage.action?pageId=22053128

nginx 기동 시 아래와 같은 에러가 발생하는 경우 selinux 확인

Nov 05 16:34:24 localhost.localdomain nginx[35684]: nginx: [emerg] bind() to 0.0.0.0:7000 failed (13: Permission denied)

 

selinux 확인

[root@localhost nginx]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      31

=> 현재 enforcing모드로 사용 중임을 확인

 

semanage를 이용해서 설정하기 위해 policycoreutils-python 설치

[root@localhost nginx]# yum install policycoreutils-python
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror
...
Complete!

 

오픈되어 있는 http port 확인

[root@localhost nginx]# semanage port -l | grep http_port_t
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t            tcp      5988

 

7000번 포트 추가

[root@localhost nginx]# semanage port -m -t http_port_t -p tcp 7000
* 아래와 같은 에러가 발생하는 경우 LANG을 C로 변경한 뒤에 추가
[root@localhost nginx]# semanage port -a -t http_port_t -p tcp 7000
Traceback (most recent call last):
  File "/usr/sbin/semanage", line 1074, in 
    do_parser()
  File "/usr/sbin/semanage", line 1061, in do_parser
sys.stderr.write(
"%s: %s\n" % (e.__class__.__name__, e.args[0]))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 12-13: ordinal not in range(128)
[root@localhost nginx]# echo $LANG
ko_KR.UTF-8
[root@localhost nginx]# LANG=C
[root@localhost nginx]# semanage port -a -t http_port_t -p tcp 7000

해당포트가 다른 유형에 이미 추가되어 있어서 실패나는 경우 변경 옵션 사용 (-m)

[root@localhost nginx]# semanage port -a -t http_port_t -p tcp 7000
ValueError: Port tcp/7000 already defined
[root@localhost nginx]# semanage port -l | grep 7000
afs_fs_port_t udp 7000, 7005
gatekeeper_port_t tcp 1721, 7000

 

dd (Data Description) 명령어

블록 단위로 파일을 복사하거나 변환


용도

  • 데이터 전송
  • 마스터 부트 레코드 백업 및 복원
  • 데이터 수정
  • 디스크 완전 소거
  • 데이터 복구
  • 드라이브 성능 벤치마크
  • 랜덤 데이터로 파일 생성
  • 파일을 대문자로 변환 등

 

dd 명령어 옵션

1. dd 명령어 주요 옵션

  • bs=BYTES : 한 번에 BYTES씩 읽어 들이고 출력. ibs와 obs를 한 번에 지정한 것과 같다.
  • cbs=BYTES : 한 번에 BYTES씩 변환 작업을 한다.
  • conv=CONVS : ,로 분리된 단어들을 파일로 변환한다.
    • ascii : EBCDIC 코드를 ASCII 코드로 변환한다.
    • ebcdic : ASCII 코드를 EBCDIC 코드로 변환한다.
    • ibm : ASCII 코드를 EBCDIC 코드로, EBCDIC 코드를 ASCII 코드로 변환한다.
    • block : cbs로 변환 작업과정에서 입력문자내에 있는 개행 문자들을 공백문자로 변환한다.
    • unblock : block와는 반대로 cbs로 변환 작업과정에서 입력 문자내에 있는 공백 문자들을 개행 문자로 변환한다.
    • lcase : 영문 대문자를 영문 소문자로 변환한다.
    • ucase : 영문 소문자를 영문 대문자로 변환한다.
    • swap : 입력된 두 바이트를 바꾼다.
    • nocreate : 출력 파일이 존재해야 수행합니다.
    • excl : 출력 파일이 이미 존재 하면 수행하지 않습니다.
    • notrunc : 출력 파일을 자르지 않고 출력한다.
    • noerror : 입력 데이터를 읽을 때에 에러가 발생하더라도 계속 진행한다.
    • sync : 입력된 ibs와 출력하는 obs 사이에 차이가 있을 경우 그 여백공간을 NULL 문자로 채운다.
  • count=BLOCKS : 입력 블록의 ibs 크기만큼만 복사한다.
  • ibs=BYTES : 입력 단위로 한 번에 BYTES 단위로 읽어 들인다.
  • if=FILE : 표준입력대신 지정한 파일을 입력으로 받는다.
  • obs=BYTES : 출력 단위로 한번에 BYTES 단위로 출력한다.
  • of=FILE : 표준 출력대신 지정된 파일에 출력한다.
  • seek=BLOCKS : 출력 시작시 지정된 BLOCKS의 단위만큼 obs 크기를 건너뛰고 출력을 시작한다.
  • skip=BLOCKS : 입력 시작시 지정된 BLOCKS의 단위만큼 ibs 크기를 건너뛰고 입력을 시작한다.

 

2. BYTES 단위

  • c : Character, 1byte
  • w : Word, 2byte
  • b : Block, 512byte
  • kB : 1000byte
  • k : Kilo Bytes, 1024byte
  • MB : 1000*1000
  • M : 1024*1024
  • GB : 100010001000
  • G : 102410241024
  • 기타 : T, P, E, Z, Y

 

3. 사용 예

  •  부팅 디스크 제작
# fdformat /dev/<포맷할장치> //포맷
# dd if=/boot/vmlinuz of=/dev/장치 //부팅디스크 제작
  • 원본파일에서 1024바이트를 제외하고 복사
# dd if=real.eml of=real2 bs=1024 skip=1
  • /var/log/dmesg파일에서 1024바이트로 10번 읽어서 대문자로 변환한 후 test파일에 쓰기
# dd if=/var/log/dmesg of=./test bs=1024 count=10 conv=ucase
10+0 records in
10+0 records out
10240 bytes (10 kB) copied, 0.000163 seconds, 62.8 MB/s

# head -3 test
LINUX VERSION 2.6.18-274.EL5 (MOCKBUILD@BUILDER10.CENTOS.ORG) (GCC VERSION 4.1.2 20080704 (RED HAT 4.1.2-50)) #1 SMP FRI JUL 22 04:43:29 EDT 2011
COMMAND LINE: RO ROOT=LABEL=/ RHG

 

출처

+ Recent posts