CentOS 8 에 Apache / httpd 서 비 스 를 설치 하고 Nginx 역방향 에이 전 트 를 사용 합 니 다.

19331 단어 System
Apache HTTP 서버 는 세계 에서 가장 광범 위 하 게 사용 되 는 웹 서버 다.CentOS 8 에 Apache / Httpd 서버 를 설치 하고 설정 하 는 방법 을 기록 합 니 다.
주요 환경
  CentOS Linux release 8.1.1911 (x64)   nginx/1.14.1
필요조건
1. 방화벽 의 정상 적 인 운행 확보
    루트 또는 sudo 특권 을 가 진 사용자 로 다음 명령 을 실행 합 니 다: sudo systemctl status firewalld
[dotnba@CentOS8 ~]$  sudo systemctl status firewalld
[sudo] dotnba    :
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2020-02-04 07:55:05 CST; 1min 52s ago
     Docs: man:firewalld(1)
 Main PID: 1113 (firewalld)
    Tasks: 2 (limit: 23820)
   Memory: 31.6M
   CGroup: /system.slice/firewalld.service
           └─1113 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid

2  04 07:55:04 CentOS8 systemd[1]: Starting firewalld - dynamic firewall daemon...
2  04 07:55:05 CentOS8 systemd[1]: Started firewalld - dynamic firewall daemon.


2. 시스템 이 최신 을 유지 하도록 확보 합 니 다. 루트 또는 sudo 특권 을 가 진 사용자 로 다음 명령 을 실행 합 니 다: sudo yum update
[dotnba@CentOS8 ~]$ sudo yum update

설치 절차
1. httpd 설치
yum install httpd

2. httpd 서비스 시작
[dotnba@CentOS8 ~]$ systemctl start httpd

3. 시스템 이 시 작 될 때 httpd 서 비 스 를 사용 합 니 다.
[dotnba@CentOS8 ~]$ systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.

4. httpd 실행 상 태 를 검사 합 니 다.
[dotnba@CentOS8 ~]$ service  httpd status
Redirecting to /bin/systemctl status httpd.service
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2020-02-04 08:33:29 CST; 18min ago
     Docs: man:httpd.service(8)
 Main PID: 60936 (httpd)
   Status: "Running, listening on: port 443, port 80"
    Tasks: 214 (limit: 23820)
   Memory: 25.8M
   CGroup: /system.slice/httpd.service
           ├─60936 /usr/sbin/httpd -DFOREGROUND
           ├─60946 /usr/sbin/httpd -DFOREGROUND
           ├─60947 /usr/sbin/httpd -DFOREGROUND
           ├─60948 /usr/sbin/httpd -DFOREGROUND
           ├─60949 /usr/sbin/httpd -DFOREGROUND
           └─60950 /usr/sbin/httpd -DFOREGROUND

2  04 08:33:29 CentOS8 systemd[1]: Starting The Apache HTTP Server...
2  04 08:33:29 CentOS8 httpd[60936]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::df54:246d:1b8e:20e2. Set the 'ServerName' directive>
2  04 08:33:29 CentOS8 systemd[1]: Started The Apache HTTP Server.
2  04 08:33:29 CentOS8 httpd[60936]: Server configured, listening on: port 443, port 80

5. 테스트 검증 서비스 * 81955: Apache 가 제대로 작 동 하 는 지 확인 하기 위해 간단 한 curl 명령 (curl: 80) 을 실행 할 수도 있 고 웹 브 라 우 저 를 사용 하여 검사 할 수도 있 습 니 다.
[dotnba@CentOS8 ~]$ curl localhost:80

Apache 에 방화벽 설정
    외부 호스트 가 아파 치 서버 를 사용 할 수 있 도록 방화벽 에 특정 포트 를 열 어야 한다.1. 80 포트 와 443 포트 권한 부여
#  80  
[dotnba@CentOS8 ~]$ sudo firewall-cmd --permanent --zone=public --add-service=http
success
#  443  
[dotnba@CentOS8 ~]$ sudo firewall-cmd --permanent --zone=public --add-service=https
success
#      
[dotnba@CentOS8 ~]$ sudo firewall-cmd --reload
success

2. 포트 개방 상태 확인
[dotnba@CentOS8 ~]$ sudo firewall-cmd --list-all | grep services
  services: cockpit dhcpv6-client http https ssh

    또는:
[dotnba@CentOS8 ~]$ sudo firewall-cmd   --service=http --get-ports --permanent
80/tcp
[dotnba@CentOS8 ~]$ sudo firewall-cmd   --service=https --get-ports --permanent
443/tcp

    물론 가장 직관 적 인 것 은 외부 호스트 에서 브 라 우 저 방문 을 통 해 정상 여 부 를 검증 하 는 것 이다.3. 다른 포트 를 추가 합 니 다. 물론 80 포트 를 제외 하고 다른 포트 를 열 어야 할 수도 있 습 니 다.
[dotnba@CentOS8 ~]$ sudo firewall-cmd    --service=http --add-port=8080/tcp --permanent
success

    검사 포트 추가 상황:
[dotnba@CentOS8 ~]$ sudo firewall-cmd   --service=http --get-ports --permanent
80/tcp 8080/tcp

아파 치 수정 포트
1. / etc / httpd / conf / httpd. conf 파일 수정
    #   80        ,      8080
    Listen 8080

2. 프로필 다시 불 러 오기
[dotnba@CentOS8 ~]$ service httpd reload
Redirecting to /bin/systemctl reload httpd.service
[dotnba@CentOS8 ~]$ service httpd status
Redirecting to /bin/systemctl status httpd.service
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: reloading (reload) (Result: exit-code) since Tue 2020-02-04 08:33:29 CST; 1h 2min ago
     Docs: man:httpd.service(8)
  Process: 63472 ExecReload=/usr/sbin/httpd $OPTIONS -k graceful (code=exited, status=0/SUCCESS)
  Process: 60936 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
 Main PID: 60936 (code=exited, status=1/FAILURE)
   Status: "Reading configuration..."
    Tasks: 0 (limit: 23820)
   Memory: 8.4M
   CGroup: /system.slice/httpd.service

2  04 08:33:29 CentOS8 systemd[1]: Started The Apache HTTP Server.
2  04 08:33:29 CentOS8 httpd[60936]: Server configured, listening on: port 443, port 80
2  04 09:34:58 CentOS8 systemd[1]: Reloading The Apache HTTP Server.
2  04 09:34:58 CentOS8 httpd[63140]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::df54:246d:1b8e:20e2. Set the 'ServerName' directive>
2  04 09:34:58 CentOS8 systemd[1]: Reloaded The Apache HTTP Server.
2  04 09:34:58 CentOS8 httpd[60936]: Server configured, listening on: port 443, port 8080
2  04 09:35:35 CentOS8 systemd[1]: Reloading The Apache HTTP Server.
2  04 09:35:35 CentOS8 httpd[63472]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::df54:246d:1b8e:20e2. Set the 'ServerName' directive>
2  04 09:35:35 CentOS8 systemd[1]: Reloaded The Apache HTTP Server.
2  04 09:35:35 CentOS8 systemd[1]: httpd.service: Main process exited, code=exited, status=1/FAILURE

    이때 'Main process exited, code = exited, status = 1 / FAILURE' 를 발 견 했 습 니 다. 이 유 는 SELinux 보안 체제 가 비 표준 포트 에 제한 이 있 기 때 문 입 니 다.3. 허용 포트 조회
[dotnba@CentOS8 ~]$ sudo semanage port -l | grep http
http_cache_port_t              tcp      8080, 8118, 8123, 10001-10010
http_cache_port_t              udp      3130
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t            tcp      5988
pegasus_https_port_t           tcp      5989

    이때 포트 를 http 로 수정 할 수 있 습 니 다.port_t/http_cache_port_t 허용 포트.예 를 들 어 8118 또는 81.
#   80        ,      81
Listen 81

프로필 다시 불 러 오기:
[dotnba@CentOS8 ~]$ service httpd reload
Redirecting to /bin/systemctl reload httpd.service

『 8195 』 검사 상태:
[dotnba@CentOS8 ~]$ service httpd status
Redirecting to /bin/systemctl status httpd.service
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2020-02-04 09:48:33 CST; 1min 23s ago
     Docs: man:httpd.service(8)
  Process: 64233 ExecReload=/usr/sbin/httpd $OPTIONS -k graceful (code=exited, status=0/SUCCESS)
 Main PID: 63903 (httpd)
   Status: "Configuration loaded."
    Tasks: 214 (limit: 23820)
   Memory: 27.0M
   CGroup: /system.slice/httpd.service
           ├─63903 /usr/sbin/httpd -DFOREGROUND
           ├─64252 /usr/sbin/httpd -DFOREGROUND
           ├─64253 /usr/sbin/httpd -DFOREGROUND
           ├─64254 /usr/sbin/httpd -DFOREGROUND
           ├─64255 /usr/sbin/httpd -DFOREGROUND
           └─64256 /usr/sbin/httpd -DFOREGROUND

2  04 09:48:33 CentOS8 systemd[1]: Starting The Apache HTTP Server...
2  04 09:48:33 CentOS8 httpd[63903]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::df54:246d:1b8e:20e2. Set the 'ServerName' directive>
2  04 09:48:33 CentOS8 systemd[1]: Started The Apache HTTP Server.
2  04 09:48:33 CentOS8 httpd[63903]: Server configured, listening on: port 443, port 81
2  04 09:49:53 CentOS8 systemd[1]: Reloading The Apache HTTP Server.
2  04 09:49:53 CentOS8 httpd[64233]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::df54:246d:1b8e:20e2. Set the 'ServerName' directive>
2  04 09:49:53 CentOS8 systemd[1]: Reloaded The Apache HTTP Server.
2  04 09:49:53 CentOS8 httpd[63903]: Server configured, listening on: port 443, port 81

4. 다른 포트 를 추가 합 니 다.
[dotnba@CentOS8 ~]$  sudo semanage port -a -t http_port_t -p  tcp 82

    추 가 된 상황 보기:
[dotnba@CentOS8 ~]$ sudo semanage port -l | grep http
http_cache_port_t              tcp      8080, 8118, 8123, 10001-10010
http_cache_port_t              udp      3130
http_port_t                    tcp      82, 80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t            tcp      5988
pegasus_https_port_t           tcp      5989

Apache 에 Nginx 역방향 프 록 시 설정
1. Nginx 설치
sudo yum install nginx

2. Nginx 서비스 시작
[dotnba@CentOS8 ~]$ systemctl start nginx

3. Nginx 를 시스템 서비스 에 추가
[dotnba@CentOS8 ~]$ systemctl enable nginx
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.

4. Nginx 프로필 수정
[dotnba@CentOS8 ~]$ sudo vim /etc/nginx/nginx.conf
location / {
    #         
	proxy_pass http://localhost:81;
}

5. Nginx 프로필 다시 불 러 오기
[dotnba@CentOS8 ~]$ service nginx reload
Redirecting to /bin/systemctl reload nginx.service

    이때 방문 한 결과 오류 페이지 가 발생 했 습 니 다.설정 오류 가 아 닌 SELinux 보안 요인 때 문 입 니 다.6. 역방향 에이전트 허용
[dotnba@CentOS8 ~]$ sudo setsebool -P httpd_can_network_connect 1

재 방문 정상.
참고 글: 1. CentOS 8 에서 아파 치 포트 를 수정 하고 SeLinux 와 Nginx 역방향 에이전트 에 관 한 문 제 를 해결 합 니 다.https://blog.csdn.net/ldy/article/details/104148656 2.5 분 동안 CentOS 8 에 Apache 설치 하기:https://www.linuxidc.com/Linux/2019-11/161439.htm 3. httpd 역방향 에이전트 오류:https://www.cnblogs.com/GYbin/p/9572356.html 4. CentOS 7 방화벽 빠 름포트 설정 방법 열기:https://www.linuxidc.com/Linux/2019-06/159104.htm

좋은 웹페이지 즐겨찾기