LINUX 노트 첫 주 4.13 - 4.19

12029 단어 linuxopensslnginxfpm
기초
1. 리 눅 스 의 발행 판 을 시리즈 별로 나열 하고 발행 판 간 의 관계 와 차 이 를 설명 한다.
2. Centos 7.6 운영 체 제 를 설치 하여 자신의 이름 을 가 진 사용자 이름 을 만 들 고 정상적으로 로그 인하 여 주요 절 차 를 캡 처 할 수 있 습 니 다.
3. 환경 변 수 를 설정 하고 history 를 실행 할 때 명령 을 실행 하 는 시간 을 볼 수 있 습 니 다.
4. 리 눅 스 철학 사상 을 정리한다.
5. Linux 상용 명령 사용 형식 을 정리 하고 인 스 턴 스 로 설명 합 니 다.예 를 들 어 echo, screen, date, ifconfig, export 등 명령
1 리 눅 스 의 발행 판 을 시리즈 별로 나열 하고 발행 판 간 의 관계 와 차 이 를 묘사한다.
1) Linux 배포 판 (distribution)
Debian、RedHat、SUSE
2) 연락
LINUX 의 발전 을 바탕 으로 공 개 된 표준 POSIX 표준 을 바탕 으로 재 작성 되 었 습 니 다. LINUXJ 는 자유 소프트웨어 로 소스 코드 를 무료 로 공개 합 니 다.
LINUX 의 사상 은 UNIX 에서 기원 되 었 다.
GPL 프로 토 콜 기반
LINUX 는 커 널 일 뿐 발행 버 전 은 모두 여기에서 이 루어 진다.
3) 구별
발행 버 전에 따라 하 나 는 상업 회사, 예 를 들 어 RedHat 이 고 하 나 는 debian 을 대표 로 하 며 지역사회 조직 유지 이다.
Debian 은 Ubuntu 를 포함 하고 GNU 규범 에 따라 패키지 관리 도구 apt - get / dpkg
RedHat 은 Fedora, Rhel, Centos 를 포함 한 빨 간 모자 회사 의 연구 개발 이다.
2. Centos 7.6 운영 체 제 를 설치 하여 자신의 이름 을 가 진 사용자 이름 을 만 들 고 정상적으로 로그 인하 여 주요 절 차 를 캡 처 할 수 있 습 니 다.
설치 무시
ubuntu 

groupadd -g 1002 developer
useradd -u 1002 -g 1002 -d /home/zzw1 -s /bin/bash -m zzw1
passwd zzw1
id zzw1
uid=1002(zzw1) gid=1002(developer) groups=1002(developer)

3. 환경 변 수 를 설정 합 니 다. history 를 실행 할 때 명령 을 실행 하 는 시간 을 볼 수 있 습 니 다.
vim ~/.bashrc
HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "
. ~/.bashrc

4 리 눅 스 철학 사상 총화
1) 모든 파일
2) 매우 작은 단일 용도 의 프로그램 을 제공한다
3) 연결 프로그램, 복잡 한 기능 수행
4) 설정 데 이 터 를 텍스트 에 저장
5. Linux 상용 명령 사용 형식 을 정리 하고 인 스 턴 스 로 설명 합 니 다.예 를 들 어 echo, screen, date, ifconfig, export 등 명령
내부 명령 과 외부 명령 으로 나 뉘 어 type 으로 보기
내 장 된 명령 xxx 는 echo, export 와 같은 셸 빌 트 인 입 니 다.
화면, 날짜, ifconfig 와 같은 외부 명령 xxx 는 $PATH / xxx 입 니 다.
내 장 된 명령 보기
help echo 
echo: echo [-neE] [arg ...]
    Write arguments to the standard output.

    Display the ARGs, separated by a single space character and followed by a
    newline, on the standard output.

    Options:
      -n    do not append a newline
      -e    enable interpretation of the following backslash escapes
      -E    explicitly suppress interpretation of backslash escapes

외부 명령 xxx -- help
screen --help
Use: screen [-opts] [cmd [args]]
 or: screen -r [host.tty]

Options:
-4            Resolve hostnames only to IPv4 addresses.
-6            Resolve hostnames only to IPv6 addresses.
-a            Force all capabilities into each window's termcap.
-A -[r|R]     Adapt all windows to the new display width & height.
-c file       Read configuration file instead of '.screenrc'.
-d (-r)       Detach the elsewhere running screen (and reattach here).
-dmS name     Start as daemon: Screen session in detached mode.
-D (-r)       Detach and logout remote (and reattach here).
-D -RR        Do whatever is needed to get a screen session.
-e xy         Change command characters.
-f            Flow control on, -fn = off, -fa = auto.
-h lines      Set the size of the scrollback history buffer.
-i            Interrupt output sooner when flow control is on.

외부 명령 과 man 도움말 매 뉴 얼 을 볼 수 있 습 니 다.
man 수첩 의 분류 (일반적으로 9 가지 로 나 뉘 지만 앞의 8 가지 만 자주 사용 합 니 다)
1 일반적인 명령 (외부 프로그램 이나 셸 명령)
2 시스템 호출 (커 널 에서 제공 하 는 함수)
3 라 이브 러 리 호출 (라 이브 러 리 에서 제공 하 는 함수)
4. 특수 파일 (항상 / dev 에서 장치 파일)
5 파일 형식, 설정 파일 의 형식 을 설명 합 니 다.
6 게임 관련
잡다 한 항목
8 관리자 명령
9. 커 널 프로그램 (비 표준)
man - f man 을 통 해 어떤 종 류 를 볼 수도 있 고 whatis 를 통 해 볼 수도 있 습 니 다.
일반 형식
command [options] [arguments]
- command:  
- options:--     -  
- arguments:  ,         。

진급 하 다
1. LNMP 를 컴 파일 하고 사용자 정의 404 페이지 를 설정 하 며 접근 로 그 를 json 형식 으로 설정 합 니 다.
컴 파일 php
     

 ./configure --prefix=/opt/php74 --enable-fpm  --with-libzip --with-openssl  --with-freetype --with-jpeg --enable-bcmath   --enable-pcntl
make 
make install

  
vim /lib/systemd/system/php74-fpm.service

[Unit]
Description=The PHP 7.4 FastCGI Process Manager
After=network.target

[Service]
Type=simple
PIDFile=/opt/php74/var/run/php-fpm.pid
ExecStart=/opt/php74/sbin/php-fpm --nodaemonize --fpm-config /opt/php74/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target


systemctl start php74-fpm

openresty 컴 파일
./configure --prefix=/opt/openresty             --with-luajit             --with-http_iconv_module

gmake
gmake install

nginx 프로필
json 형식 으로 404 와 질문 로 그 를 사용자 정의 합 니 다.
#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    log_format log_json '{ "@timestamp": "$time_local", '
'"remote_addr": "$remote_addr", '
'"referer": "$http_referer", '
'"request": "$request", '
'"status": $status, '
'"bytes": $body_bytes_sent, '
'"agent": "$http_user_agent", '
'"x_forwarded": "$http_x_forwarded_for", '
'"up_addr": "$upstream_addr",'
'"up_host": "$upstream_http_host",'
'"up_resp_time": "$upstream_response_time",'
'"request_time": "$request_time"'
' }';

    access_log  /var/run/access.log  log_json;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  blog.chromev.com localhost;
    root /var/www/php;
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            index  index.html index.htm index.php;
        }

        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;
        }
    location = /404.html {
            root   /var/www/html2;
        }

        # 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$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$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;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

json 형식
 tail -f /var/run/access.log
 { "@timestamp": "19/Apr/2020:21:48:52 +0800", "remote_addr": "108.162.215.50", "referer": "http://blog.chromev.com/asd", "request": "GET /404.html HTTP/1.1", "status": 304, "bytes": 0, "agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36", "x_forwarded": "36.57.145.226", "up_addr": "-","up_host": "-","up_resp_time": "-","request_time": "0.000" }

2. 가상 호스트 를 설정 하여 https 가 www. x. com (x. com 이 정의 한 도 메 인 이름) 에 접근 하도록 합 니 다.
OpenSSL 기반 자체 CA 및 SSL 인증서 발급
CA 서버 에서 작 동
1 루트 인증서 생 성
1) 프로필
 /etc/pki/tls/openssl.cnf 

2) CA 디 렉 터 리 에 두 개의 초기 파일 만 들 기
 cd  /etc/pki/CA 
 touch index.txt serial
 echo 01 > serial

3) 루트 키 생 성
 cd /etc/pki/CA/
 openssl genrsa -out private/cakey.pem 2048

안전 을 위해 cake. pem 비밀 키 파일 권한 을 600 또는 400 으로 수정 하거나 하위 셸 생 성 ( umask 077; openssl genrsa -out private/cakey.pem 2048 ) 을 사용 할 수 있 습 니 다. 다음은 중복 되 지 않 습 니 다.
4) 루트 인증서 생 성 (이 컴퓨터 에 가입 해 야 함)
req 명령 을 사용 하여 자체 서명 인증 서 를 생 성 합 니 다.
cd /etc/pki/CA/
openssl req -new -x509 -key private/cakey.pem -out cacert.pem

WEB 서버 에서
2 nginx 웹 서버 생 성 ssl 키
1) 비밀 키 생 성
cd /opt/openresty/nginx/ssl/
openssl genrsa -out nginx.key 2048

2) nginx 인증서 생 성 요청
cd /opt/openresty/nginx/ssl/
openssl req -new -key nginx.key -out nginx.csr
...
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:GD
Locality Name (eg, city) []:SZ
Organization Name (eg, company) [Internet Widgits Pty Ltd]:COMPANY
Organizational Unit Name (eg, section) []:IT_SECTION
Common Name (e.g. server FQDN or YOUR name) []: blog.chroemv.com 
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
...

또한 일부 내용 을 입력 하 는 것 을 알려 줍 니 다. 다른 것 은 마음대로 Commone Name 를 제외 하고 인증서 의 서버 도 메 인 이나 호스트 이름 을 부여 하려 면 challenge password 를 입력 하지 않 습 니 다.
3) CA 공개 키 로 서명
openssl ca -in nginx.csr -out nginx.crt

3 인증서 사용
1) Nginx ssl 인증서 사용
# HTTPS server
    #
    server {
        listen       443 ssl;
        server_name  blog.chromev.com;
    root /var/www/php/;
        #ssl_certificate      cert.pem;
        #ssl_certificate_key  cert.key;
        ssl_certificate      /opt/openresty/nginx/ssl/nginx.crt;
        ssl_certificate_key  /opt/openresty/nginx/ssl/nginx.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
            index  index.html index.htm;
        }
        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    }

2 운영 체제 에 CA 루트 인증 서 를 추가 하여 신뢰 받 기
mac 추가
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain /cacert.pem

명령 행 으로 인증 서 를 관리 하 는 것 외 에 에서 도 관리 할 수 있다.
Linux (CentOs 6)
#   ca-certificates package:

yum install ca-certificates

#  dynamic CA configuration feature:

update-ca-trust force-enable

#        /etc/pki/ca-trust/source/anchors/    

mv /cacert.pem /etc/pki/ca-trust/source/anchors/

#  :

update-ca-trust extract

3 성공 여부 검증
curl -k  https://blog.chromev.com

Hello World

좋은 웹페이지 즐겨찾기