1. 준비
먼저 재생할 수 있는 Linux 서버가 있어야 하며 사용자 이름과 비밀번호를 알아야 합니다. 그런 다음 Linux 서버에 연결할 수 있는 두 가지 도구인 xshell 5 및 xftp 5를 설치해야 합니다. 설치 튜토리얼에 대해서는 별로 설명할 것이 없지만, 보충 그림은 서버에 연결하는 방법을 보여줍니다:
xshell 연결 인터페이스는 다음과 같습니다. 호스트 IP를 입력하고 확인을 클릭하면 xshell이 사용자를 입력하는 창을 띄웁니다. 이름과 비밀번호를 입력하면 성공적으로 연결됩니다!
xftp 연결 인터페이스는 다음과 같습니다. 빈칸만 채우면 됩니다. 여기서는 ftp 대신 sftp를 선택했는지 설명하지 않겠습니다. 그리고 sftp를 충분히 알면 이해할 수 있습니다!
2. 설치 및 배포 작업
Linux 서버에 프로젝트를 배포하려면 jdk 및 tomcat을 설치하는 것이 필수적입니다. 하나의 서버 애플리케이션을 사용하는 경우 각 애플리케이션에 대해 자체 Tomcat이 있어야 합니다. 왜냐하면 Tomcat의 구성은 애플리케이션마다 확실히 다르기 때문입니다. 이 경우 동일한 애플리케이션에 대해 Tomcat 설치 디렉터리와 Tomcat을 설치할 수 있습니다. 작업 디렉토리의 일부에서는 tomcat의 설치 디렉토리를 공유할 수 있습니다. 다음은 서버에 tomcat 및 jdk를 설치하는 방법을 자세히 소개합니다.
1. 디렉토리 구분
이것은 매우 중요합니다. 단계에서 아래 그림과 같이 새 디렉터리를 만들 수 있습니다. 프로젝트 시작 및 배포 액세스와 관련된 일부 파일은 이 디렉터리 아래에 여러 버전의 jdk와 여러 버전의 tomcat을 배치했습니다. 프로젝트 배포 프로세스 중에 어떤 Tomcat과 jdk를 사용할지는 구성을 통해 실현할 수 있습니다.
실제 애플리케이션의 경우 인스턴스 디렉터리에 넣고 각 애플리케이션의 이름을 설정한 후 해당 디렉터리 아래에 해당 war 패키지와 압축해제된 파일을 배치하고 tomcat이 디렉터리를 읽을 때까지 기다립니다. 다음과 같이 애플리케이션을 배포합니다. :
2. 구성 수정
또한 관리하기 쉽도록 각 애플리케이션 아래에 Tomcat을 아래와 같이 디렉토리에 배치하지만 각 Tomcat의 구성에 주의해야 합니다
/bin 디렉터리 아래에 start.sh 파일과 stop.sh 파일을 모두 수정해야 합니다. 먼저 환경 변수 구성과 유사한 jdk 경로를 지정해야 합니다. 두 번째 단계는 tomcat 경로를 지정하는 것입니다. tomcat 작업 디렉터리의 catalina_home과 catalina_base는 각각 tomcat의 설치 디렉터리와 작업 디렉터리에 해당합니다. 그런 다음 마지막 줄에서 프로젝트 시작이 설치 디렉터리 아래의 start.sh를 사용하는 것을 볼 수 있습니다. 프로젝트 시작에 사용되는 구성 파일은 각 애플리케이션의 Tomcat입니다. stop.sh도 마찬가지입니다.
xshell을 사용하여 ./start.sh 및 ./stop.sh를 실행하려면 권한이 필요합니다. 권한이 없는 경우 그림과 같이 xftp를 사용하여 start.sh 이메일에 대한 권한을 수정할 수 있습니다. , 입력하고 체크하세요.
/conf 디렉토리에서 구성 수정에 주의해야 합니다. 첫 번째는 server.xml 파일입니다. 각 Tomcat 애플리케이션은 서로 다른 포트 번호를 수정해야 합니다. 그렇지 않으면 여러 Tomcat이 필요합니다. 포트가 사용 중이고 시작할 수 없으면 나중에 포트 매핑을 위해 nginx를 사용할 때 사용되는 이 애플리케이션에 대해 구성된 tomcat의 포트 번호를 기억하는 것이 가장 좋습니다. 는 catalina 디렉터리에 있습니다. localhost 디렉터리에 있는 root.xml 파일은 tomcat이 시작될 때 프로젝트 인스턴스를 로드할 디렉터리를 지정하는 데 사용됩니다.
다른 /logs 디렉터리, /temp 디렉터리, /webapps 디렉터리, /work 디렉터리는 위에서 볼 수 있듯이 수정할 필요가 없으며 디렉터리 구분이 매우 명확하며 서비스 설치 디렉터리( jdk, tomcat, nginx 등), Linux 서버를 사용하여 여러 프로젝트를 배포하는 경우 애플리케이션 인스턴스 디렉터리와 애플리케이션 배포 디렉터리도 이런 방식으로 나눌 수 있습니다.
3.nginx는 포트 80 역방향 프록시를 구현합니다
논리적으로 말하면, 이때 우리는 자체 애플리케이션의 war 패키지를 해당 디렉터리로 전송하여 압축을 푼 다음 해당 애플리케이션 tomcat 작업 디렉터리에서 실행할 수 있습니다. /start.sh 프로젝트를 시작합니다! 먼저 시도해 볼 수도 있습니다.
프로젝트가 배포된 후 호스트를 구성하고 액세스를 시작합니다. 이때 위에서 구성한 tomcat 포트 번호를 추가해야 액세스할 수 있다는 것을 알 수 있습니다. (기본값을 사용하십시오.) 포트 80) 방문하시겠습니까? 위에서 언급한 대로 Tomcat마다 다른 포트 번호를 구성했습니다. 그 이유는 하나의 포트 번호는 하나의 Tomcat에서만 사용할 수 있기 때문입니다. 이는 프로젝트 액세스에 대해 포트 번호를 추가해야 함을 의미합니다. 애플리케이션이 액세스를 위해 포트 80을 사용하는 것도 가능합니다. 이는 nginx를 설치한 후 일부 구성을 추가하여 역방향 프록시를 구현하고 다른 애플리케이션에서 사용하는 포트 80에 대한 액세스를 해당 포트 번호로 전달할 수 있습니다. Tomcat의 관점에서 보면 외부 요청은 여전히 Tomcat에서 구성한 포트 번호를 사용하므로 원하는 효과를 얻을 수 있습니다. 구체적인 구성은 다음과 같습니다(물론 해당 디렉터리 분할 작업도 수행해야 합니다).
nginx 디렉터리
/conf 디렉토리 아래의 nginx.conf 구성 파일만 신경 쓰면 됩니다. 또한 모든 사람이 볼 수 있도록 특정 구성 정보를 열었습니다. "include domains/" *"?는 구성이 아직 완료되지 않았음을 나타내며 /domains 디렉터리의 모든 구성 파일을 포함합니다.
이때 각 애플리케이션의 해당 nginx 구성을 다른 이름의 파일로 구성할 수 있습니다
그러면 어떻게 구성하는지 살펴보겠습니다. 또한 http_500 http_502 http_504 등과 같은 일부 비정상적인 상태의 경우 다르게 기록되고 처리되는 것을 볼 수 있습니다. 일반적으로 웹사이트 등의 홈페이지로 이동한 다음 이 구성 파일을 구성한 후 로그를 기록할 수 있습니다. , 새 로그 디렉토리를 생성하는 것을 잊지 마세요. 그렇지 않으면 nginx가 해당 디렉토리를 찾을 수 없으며 시작할 때 오류가 보고됩니다.
이 작업을 완료한 후에는 nginx를 다시 시작해야 합니다. 다시 시작하는 방법에 대해서는 자세히 설명하지 않겠습니다. 다시 시작하지 못하면 그냥 넘어가겠습니다. 어려운 단계를 거쳐 nginx 프로세스를 종료한 다음 nginx 서비스 시작 명령을 사용하여 nginx 서비스를 시작합니다.
이 작업을 완료한 후 익숙한 방법(포트 번호 추가 없이)을 사용하여 액세스할 수 있습니까? 예, 그렇습니다. 많은 사람들이 애플리케이션을 배포하려면 다시 시작해야 하는지 걱정합니다. 단지 네트워크 계층의 nginx 라우팅 변환 계층을 이해하지 못한다는 뜻일 뿐입니다. 처음 방문하는 도메인 이름은 우리가 구성한 호스트를 통해 DNS 확인을 수행하고 해당 IP로 변환한 후 해당 IP에 해당하는 서버를 찾아 전달합니다. 서버의 방화벽, 그리고 서버에서 nginx를 구성할 때 nginx는 먼저 요청을 가로채고 요청을 처리 및 배포한 다음 마지막으로 해당 tomcat에 도달합니다(개인적인 이해, 잘 이해하지 못할 수도 있으니 불평하지 마세요). 이제 우리는 도메인 이름에 접근하여 자신있게 요청을 보낼 수 있습니다! !
4. 구덩이를 밟아
어. . 안좋다! ! 기뻐서 홈페이지에 접속했지만, 여전히 지정된 애플리케이션에 액세스할 수 없습니다. 포트 번호를 추가하려고 했더니 "기적적으로" 액세스할 수 있었습니다. 이는 우리가 구성한 nginx가 적용되지 않았다는 의미입니다. 문제인가요?
아래에서 내 문제 해결 아이디어에 대해 이야기하겠습니다. 이때 모든 요청이 nginx로 이동하는지 확인해야 합니다. 포트 80을 사용하여 애플리케이션에 액세스할 때 로그를 살펴보세요. .한 번, 두 번, 세 번. . 로그가 없습니다. 현재로서는 nginx 서비스가 전혀 사용되지 않았다고 대략적으로 결론을 내릴 수 있습니다. nginx 서비스가 서버에 적용되지 않았는지 확인할 수 없습니다. 로그 구성에 문제가 있는 것 같습니다. 이때 nginx 서비스 접속을 끄거나, 해당 웹사이트의 홈페이지로 점프하는 과감한 조작을 했습니다. nginx를 통해 구성된 홈페이지로 점프하지 않나요? 사실 회사에서는 이미 네트워크 계층에서 처리해 놓았는데, 이때는 매우 혼란스러웠습니다. 단지 Tomcat 구성을 수정하고 애플리케이션 중 하나를 포트 80으로 구성하는 것이 나을 수도 있었습니다. 이제 곧 수정이 완료되고, nginx 서비스가 종료되었기 때문에 주소창에 도메인 이름이 입력될 때까지 기다리시면 됩니다. Tomcat에 직접 전송됩니다. 한 번, 두 번, 세 번 액세스한 후 Ni?에 액세스할 수 없다는 것은 "기적"입니다. ? ? 이때 순간적으로 영감이 떠올랐습니다. 서버 방화벽이 포트 80을 비활성화한 것 같습니다. 로컬에서 192.168.108.37 80을 재빨리 시도했지만 액세스할 수 없다는 사실이 밝혀졌습니다. 이것은 내 추측이 맞았다는 것을 증명했습니다. 이제는 처리하기 쉬웠습니다. 방화벽에서 활성화하면 됩니다. 포트 80에 대한 액세스로 충분합니다. 아래는 centos에서 포트 80을 열도록 구성하는 방법에 대한 보충 내용입니다.
1. iptables 구성 파일을 엽니다. 코드는 다음과 같습니다: vi /etc/sysconfig/iptables
2. /etc/init.d/iptables status 명령을 사용하여 포트 80이 열려 있는지 확인합니다. , 처리 방법에는 두 가지가 있습니다
3. 첫 번째 방법: vi /etc/sysconfig/iptables 명령을 수정하여 방화벽을 추가하여 포트 80을 엽니다. 코드는 다음과 같습니다.
코드 복사 코드는 다음과 같습니다.
-a rh-firewall-1-input -m state --state new -m tcp -p tcp --dport 80 -j accept
4. 방화벽을 닫거나 활성화하고 다시 시작하는 코드는 다음과 같습니다. / etc/init.d/iptables stop (#start to open, #restart to restart)
5. 두 번째 방법: 명령을 통해 포트를 추가합니다. 코드는 다음과 같습니다:
[root@centos httpd]# /sbin/iptables -i input -p tcp --dport 80 -j accept [root@centos httpd]# /etc/rc.d/init.d/iptables save [root@centos httpd]# /etc/init.d/iptables restart
6. 효과 보기: [ root@centos httpd]# /etc/init.d/iptables status
7. 또한 첫 번째 방법을 사용하는 것이 좋습니다. 두 가지 방법은 작동하기 쉽고 성공률이 높습니다. 방화벽 구성을 수정하기 위해 첫 번째 방법을 사용했는데, 두 번째 방법을 사용하면 완벽하게 성공합니다
위 내용은 Linux 서버에 Tomcat과 Nginx를 배포하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!