해당 구성 요소에 대한 램프 스택 설명입니다. LAMP 서버의 빠른 배포를 위한 특수 Cloud VDS 이미지

웹 애플리케이션 스택이란 운영 체제, 웹 서버, 데이터베이스 서버 및 실행 가능한 코드 환경 등 다양한 오픈 소스 소프트웨어 제품을 의미합니다. 가장 유명하고 일반적인 스택은 LAMP입니다. 이는 무료 오픈 소스 솔루션을 기반으로 하는 웹 애플리케이션 스택의 약어입니다.

램프- World Wide Web에서 널리 사용되는 서버 소프트웨어 세트(복합체)를 나타내는 약어입니다. LAMP는 구성 요소의 첫 글자를 따서 명명되었습니다.

· inux - 리눅스 운영체제

;

· 통증- 웹 서버;

· 아리아DB/ ySQL - DBMS;

· HP는 웹 애플리케이션을 만드는 데 사용되는 프로그래밍 언어입니다(PHP 외에도 Perl 및 Python과 같은 다른 언어가 포함될 수 있음).

약어 LAMP는 다음을 참조하는 데 사용할 수 있습니다.

1. 웹 서버 인프라

2. 프로그래밍 패러다임

3. 소프트웨어 패키지

이러한 소프트웨어 제품은 원래 서로 함께 작동하도록 특별히 설계되지 않았지만 이 조합은 유연성, 성능 및 저렴한 비용으로 인해 매우 인기를 얻었습니다(모든 구성 요소는 오픈 소스이며 인터넷에서 무료로 다운로드할 수 있음). LAMP는 대부분의 Linux 배포판에 포함되어 있으며 많은 호스팅 회사에서 사용할 수 있습니다.

Linux는 요청의 수신/전송을 보장하고(하드웨어 제어) 서버, DBMS, 언어 지원 등 상위 모든 것의 핵심입니다.

우분투에 설치

다음 패키지를 설치해야 합니다.

apt-get update를 실행하여 패키지의 로컬 목록을 업데이트한 후 단일 apt-get install 명령을 사용하여 해당 패키지를 설치할 수 있습니다.

위 명령을 실행하면 이러한 패키지와 기타 종속성을 설치하라는 메시지가 표시됩니다. "y"를 누른 다음 Enter를 눌러 계속 진행하고 나머지 지침에 따라 MySQL의 관리 비밀번호를 설정하세요.

이를 통해 MySQL에서 PHP를 사용하는 데 필요한 최소한의 PHP 확장 세트를 설치할 수 있습니다.



Linux OS의 특징 및 장점

무료.

신뢰할 수 있음. PC 하드웨어를 올바르게 작동하면 Linux를 재부팅하거나 정지하지 않고도 수년 동안 작동할 수 있습니다. 그리고 재설정 버튼은 전혀 필요하지 않습니다.

안전. Linux에는 실제로 바이러스가 없습니다. 운영 체제의 설계 자체가 악성 코드의 작동을 배제합니다.

오픈 소스. 이를 통해 원하는 대로 코드를 사용하고 수정할 수 있습니다.

Apache의 주요 장점은 안정성과 구성 유연성입니다. 외부 모듈을 연결하여 데이터를 제공하고 DBMS을 위한 입증사용자, 오류 메시지 수정 등

MySQL DBMS의 유연성은 다양한 테이블 유형을 지원하여 보장됩니다. 사용자는 테이블 유형을 선택할 수 있습니다. 마이ISAM, 전체 텍스트 검색 및 테이블 지원 InnoDB, 개별 레코드 수준에서 트랜잭션을 지원합니다. 또한 MySQL DBMS에는 새로운 테이블 유형을 생성하는 원리를 보여주는 특별한 EXAMPLE 테이블 유형이 함께 제공됩니다. 개방형 아키텍처와 GPL 라이센스 덕분에 MySQL DBMS에는 새로운 유형의 테이블이 지속적으로 등장하고 있습니다.

PHP- 스크립팅 언어 범용으로 웹 애플리케이션 개발에 집중적으로 사용됩니다. 현재 압도적인 지지를 받고 있습니다 호스팅 제공업체창조하는 데 사용되는 언어 중 선두주자 중 하나입니다. 동적 웹사이트 .

3. 웹 애플리케이션. 모델-뷰-컨트롤러 디자인 패턴입니다.

디자인 패턴은 자주 발생하는 상황 내에서 디자인 문제에 대한 해결책을 나타내는 아키텍처 구성입니다. 전통적으로 OOP는 어떤 애플리케이션의 최종 클래스나 객체가 사용될지 지정하지 않고 클래스나 객체 간의 관계와 상호 작용을 보여줍니다.

모델-뷰-컨트롤러. MVC 디자인 패턴에는 애플리케이션 데이터, 사용자 인터페이스 및 제어 논리를 모델, 뷰 및 컨트롤러의 세 가지 별도 구성 요소로 분리하여 각 구성 요소의 수정이 독립적으로 수행될 수 있습니다. 이 패턴은 1970년대 후반 Smalltalk 언어용으로 개발된 프레임워크에서 처음 사용되었습니다. 이제부터 대부분의 UI 프레임워크에서 기본적인 역할을 합니다. 이는 우리가 애플리케이션 디자인을 보는 방식을 근본적으로 바꾸었습니다.

모델은 문제를 해결하는 데 필요한 속성을 고려하여 현실을 반영합니다. 모델에는 주요 문제를 해결하기 위한 논리(비즈니스 논리)가 포함되어 있습니다.

●애플리케이션 데이터 저장, 삭제, 업데이트(CRUD 또는 외부 웹 서비스)

●모든 애플리케이션 로직의 캡슐화("두꺼운" 컨트롤러를 피하는 것이 필요합니다. 즉, 비즈니스 로직의 일부를 컨트롤러나 뷰로 이동할 수 없습니다).

CRUD - 생성, 읽기, 업데이트, 삭제.

모델 데이터와 데이터 관리를 설명하며 종종 애플리케이션 프로그램의 비즈니스 로직이라고도 합니다. 매우 핵심입니다. 프레젠테이션 사용자가 응용 프로그램에서 보고 상호 작용할 수 있는 내용을 설명합니다. 컨트롤러는 모델과 뷰 사이의 중개자 역할을 합니다.
템플릿의 보기 부분(그러나 동일하지는 않음)을 구현하는 주요 메커니즘은 템플릿 엔진입니다.

MVC 요소의 상호 작용

MVC 패턴의 각 요소는 매우 특정한 방식으로 다른 요소와 통신합니다. 통신은 일반적으로 사용자와 애플리케이션의 상호 작용에 의해 트리거되는 일련의 이벤트를 통해 구현됩니다. 이벤트 순서는 다음과 같습니다.

  1. 사용자는 UI 요소와 상호 작용합니다(예: 보기에서 버튼 클릭).
  2. 뷰는 클릭 처리 방법을 결정하기 위해 클릭 이벤트를 컨트롤러에 보냅니다.
  3. 컨트롤러는 버튼 누르기에 대해 결정한 사항에 따라 모델을 변경합니다.
  4. Model은 Model의 상태가 변경되었음을 View에 알립니다.
  5. 뷰는 모델의 상태 정보를 읽고 자신을 변경합니다.

4. 웹 애플리케이션. 템플릿 엔진.

웹의 템플릿 엔진은 HTML 템플릿을 사용하여 최종 HTML 페이지를 생성할 수 있게 해주는 소프트웨어입니다. 템플릿 엔진을 사용하는 주요 목적은 실행 가능한 코드에서 데이터 표시를 분리하는 것입니다. 이는 프로그래머와 레이아웃 디자이너의 병렬 작업을 보장하기 위해 종종 필요합니다. 템플릿 엔진을 사용하면 프로젝트 전체를 한 사람이 처리할 때 코드 가독성이 향상되고 모양 변경이 향상되는 경우가 많습니다.

템플릿 엔진의 사용은 종종 MVC 패러다임으로 식별됩니다. 이러한 개념은 서로 관련되어 있지만 동일하지는 않습니다.

템플릿 작성의 핵심은 페이지 프레임워크를 프로그램 코드에서 분리하는 것입니다. 페이지 프레임은 별도의 텍스트 파일(템플릿)에 배치되고, 데이터를 표시해야 하는 위치에는 특수 의사 변수가 배치됩니다. 스크립트는 원하는 템플릿을 로드하고 의사 변수를 적절한 데이터로 대체한 후 출력합니다.

HTML 페이지 코드를 생성할 때 템플릿을 사용하면 다음과 같은 이점이 있습니다.

· 첫째, 코드 청결성. 프로그램 코드에는 HTML 코드가 포함되어 있지 않으므로 읽기 쉽습니다. 동시에 템플릿에는 데이터가 삽입되는 위치와 내용을 보여주는 HTML 코드만 포함되어 있습니다(이를 위해서는 의사 변수에 의미 있는 이름을 지정해야 함).

· 둘째, 소프트웨어와 HTML 코드의 분리로 엔진과 디자인을 독립적으로 개발할 수 있습니다. 완성된 웹사이트의 모습을 변경하려면 해당 템플릿을 변경하기만 하면 되며 프로그래밍 기술이 필요하지 않습니다.

· 사이트에는 여러 가지 디자인이 있을 수 있습니다. 사이트의 디자인을 완전히 바꾸려면 템플릿 폴더의 경로를 변경하기만 하면 됩니다.

장점:

· 애플리케이션 로직에서 출력을 완전히 분리합니다.

· 샌드 박스 모드;

· 논리 블록 또는 출력 명령문의 깔끔한 모양;

· 플랫폼(언어) 간 이식성 - 즉 템플릿 파서는 무엇이든 작성할 수 있습니다.

· 템플릿의 언어는 "레이아웃 디자이너"가 이해할 수 있습니다.

장점에 대해

출력에서 애플리케이션 로직을 분리하는 문제를 고려하면 출력에서 ​​로직을 분리하는 것이 개발에 사용된다고 말할 수 있습니다. 편물-대부분의 응용 프로그램 MVC 패턴을 사용하는 경우에만. 직접 확인해 보세요. 템플릿 분리 및 논리를 사용하는 모든 예는 컨텍스트에 따라 표시됩니다. MVC.

플랫폼에 관계없이 템플릿의 내부 격리 논리 구성을 사용하는 것이 정말 편리하다는 점에는 동의하지 않을 수 없습니다. PHP, ROR, 자바), 이는 이러한 템플릿을 구문 분석하고 데이터로 채워 사용자에게 표시합니다. 또한 이는 개발자가 템플릿에서 애플리케이션 논리나 SQL 쿼리를 사용하지 않도록 보장합니다.

샌드박스 모드는 템플릿 편집기인 사용자에게 제한된 구문 옵션을 제공해야 할 때 매우 유용합니다. 예를 들어, 이는 사용자가 HTML 마크업과 사용된 서비스의 특정 디자인을 사용하여 독립적으로 자료를 게시하는 블로그 서비스와 관련이 있습니다.

5. 웹 애플리케이션. 관계형 데이터베이스.

관계형 데이터베이스는 상호 연결된 테이블의 모음으로, 각 테이블에는 특정 유형의 개체에 대한 정보가 포함되어 있습니다. 테이블 행에는 하나의 개체(예: 제품, 고객)에 대한 데이터가 포함되고 테이블 열에는 이러한 개체의 다양한 특성(예: 이름, 제품 코드, 고객 정보)이 설명됩니다. 레코드, 즉 테이블 행은 동일한 구조를 가지며 개체 속성을 저장하는 필드로 구성됩니다. 각 필드, 즉 열은 개체의 한 가지 특성만 설명하며 엄격하게 정의된 데이터 유형을 갖습니다. 모든 레코드에는 동일한 필드가 있으며 개체의 다른 정보 속성만 표시합니다.

관계형 데이터베이스에서 각 테이블에는 기본 키(테이블의 각 행을 고유하게 식별하는 필드 또는 필드 조합)가 있어야 합니다. 키가 여러 필드로 구성된 경우 이를 복합이라고 합니다. 키는 고유해야 하며 항목을 고유하게 식별해야 합니다. 키 값을 사용하면 단일 레코드를 찾을 수 있습니다. 키는 데이터베이스의 정보를 구성하는 역할도 합니다.

관계형 데이터베이스 테이블은 관계 정규화에 대한 요구 사항을 충족해야 합니다. 관계의 정규화는 테이블 형성에 대한 공식적인 제한 장치로, 중복을 제거하고 데이터베이스에 저장된 데이터의 일관성을 보장하며 데이터베이스 유지 관리에 드는 인건비를 줄입니다.

그룹 번호, 성명, 학생 기록 번호, 생년월일, 전공 이름, 교수 이름 등의 필드를 포함하는 학생 테이블을 생성해 보겠습니다. 이러한 정보 저장 조직에는 다음과 같은 여러 가지 단점이 있습니다.

· 정보의 중복(전공 및 교수진의 이름이 각 학생마다 반복됨)으로 인해 데이터베이스의 양이 증가합니다.

· 테이블의 정보를 업데이트하는 절차는 각 테이블 항목을 편집해야 하기 때문에 복잡합니다.

테이블 정규화는 이러한 단점을 해결하도록 설계되었습니다. 사용 가능 세 가지 일반적인 관계 형태.

첫 번째 정규형. 관계형 테이블은 해당 행 중 필드에 둘 이상의 값이 포함되어 있지 않고 키 필드가 비어 있지 않은 경우에만 제1정규형으로 축소됩니다. 따라서 학생 이름으로 학생 테이블에서 정보를 얻어야 하는 경우 전체 이름 필드를 성, 이름 및 후원자 부분으로 나누어야 합니다.

두 번째 정규형. 관계형 테이블은 첫 번째 정규형의 요구 사항을 충족하고 기본 키에 포함되지 않은 모든 필드가 기본 키에 대해 완전한 기능적 종속성을 갖는 경우 두 번째 정규형으로 정의됩니다. 테이블을 제2정규형으로 축소하려면 필드의 기능적 종속성을 결정해야 합니다. 필드의 기능적 종속성은 정보 객체의 인스턴스에서 키 속성의 특정 값이 설명 속성의 한 값에만 해당하는 종속성을 말합니다.

세 번째 정규형. 키가 아닌 필드가 다른 키가 아닌 필드에 기능적으로 종속되지 않는다는 두 번째 정규형의 요구 사항을 충족하는 경우 테이블은 세 번째 정규형입니다. 예를 들어, 학생 테이블(그룹 번호, 성명, 성적부 번호, 생년월일, 교장)에서 성적부 번호, 그룹 번호, 교장 세 필드는 전이 종속되어 있습니다. 그룹 번호는 성적부 번호에 따라 달라지며, 교장은 그룹 번호에 따라 다릅니다. 전이적 종속성을 제거하려면 Student 테이블의 일부 필드를 다른 Group 테이블로 전송해야 합니다. 테이블은 학생(그룹 번호, 성명, 성적부 번호, 생년월일), 그룹(그룹 번호, 교장) 형식을 취합니다.

관계형 테이블에서는 다음 작업이 가능합니다.

· 동일한 구조를 가진 테이블을 병합합니다. 결과는 공통 ​​테이블입니다. 먼저 첫 번째, 두 번째(연결)입니다.

· 동일한 구조를 가진 테이블의 교차. 결과 - 두 테이블 모두에 있는 레코드가 선택됩니다.

· 동일한 구조의 테이블을 뺍니다. 결과 - 감산된 레코드에 포함되지 않은 레코드가 선택됩니다.

· 샘플링(수평 하위 집합). 결과 - 특정 조건을 충족하는 레코드가 선택됩니다.

· 투영(수직 하위 집합). 결과는 소스 테이블의 일부 필드를 포함하는 관계입니다.

· 두 테이블의 데카르트 곱 결과 테이블의 레코드는 첫 번째 테이블의 각 레코드와 다른 테이블의 각 레코드를 결합하여 얻습니다.

관계형 테이블은 서로 관련될 수 있으므로 동시에 여러 테이블에서 데이터를 검색할 수 있습니다. 궁극적으로 데이터베이스 크기를 줄이기 위해 테이블이 서로 연결됩니다. 각 테이블 쌍에 동일한 열이 있으면 연결됩니다.

정보 링크에는 다음과 같은 유형이 있습니다.

· 1-1;

· 일대다;

· 다대다.

웹 애플리케이션. NoSQL.

"NoSQL"이라는 용어의 의미 중 하나는 관계형 모델에서 벗어나 보다 구체적인(또는 보다 일반적인) 데이터 모델을 선호한다는 것입니다. 예를 들어 전통적으로 성공적인 NoSQL 시스템은 Redis 또는 Memcache와 같은 키-값 스토리지 시스템입니다. 그들의 데이터 모델은 매우 간단합니다. 이는 본질적으로 키가 문자열 유형이고 값에 모든 데이터가 포함될 수 있는 연관 배열입니다. 모든 연관 배열과 마찬가지로 이러한 시스템은 데이터에 대한 제한된 작업 세트(키로 값 읽기, 키 값 설정, 키 및 관련 값 삭제)를 지원합니다. 해당 시스템에서는 "키 목록 가져오기" 작업이 지원되지 않을 수 있습니다.

성공적인 NoSQL 시스템의 또 다른 예는 문서 저장입니다. 이러한 저장소의 객체는 일반적으로 자유 구조의 연관 배열입니다. 즉, 본질적으로 다른 객체가 동일한 "테이블"에 저장될 수 있습니다. 이 클래스의 시스템 예로는 MongoDB 및 Cassandra가 있습니다. 특정 데이터베이스에 실제로 어떤 데이터가 저장되어 있는지에 따라 성능이 크게 달라질 수 있습니다. 예를 들어, 동일한 유형의 객체를 저장하여 이러한 "테이블"을 최적화하는 경우입니다.

특수 NoSQL 시스템의 세 번째 예는 그래프 데이터베이스입니다. 이는 일반적으로 대량의 데이터 작업을 위해 특정 데이터 구조를 처리하기 위해 특별히 설계되었습니다(표준 관계형 구현은 작은 볼륨을 잘 처리할 수 있기 때문입니다).

NoSQL 시스템의 매우 중요한 예는 Ext4 또는 NTFS와 같은 일반 파일 시스템입니다. 이는 자유 형식의 콘텐츠가 포함된 계층 구조로 개체를 저장하도록 설계되었습니다. 관계형 데이터베이스와 NoSQL 데이터베이스 자체는 일반적으로 파일 시스템을 사용하여 콘텐츠를 저장하며 때로는 이 두 하위 시스템 간의 상호 작용이 어떤 경우든 중요해집니다.

7. 웹 애플리케이션. 자바스크립트 기능.

JavaScript는 객체 지향 기능을 갖춘 해석된 프로그래밍 언어입니다.

가능성

이 언어의 소스 코드는 브라우저뿐만 아니라 서버 측이나 명령줄에서도 실행할 수 있지만 웹 페이지에는 JavaScript 사용을 고려할 것입니다. 최신 JavaScript는 "안전한" 범용 프로그래밍 언어입니다. 원래 메모리 및 프로세서 작업을 위한 저수준 도구를 제공하지 않습니다. 원래는 이를 필요로 하지 않는 브라우저를 대상으로 했기 때문입니다.

나머지 기능은 JavaScript가 실행되는 환경에 따라 다릅니다. 브라우저에서 JavaScript는 페이지 조작, 방문자와의 상호 작용 및 어느 정도 서버와의 상호 작용과 관련된 모든 작업을 수행할 수 있습니다.

· 다양한 애니메이션 효과 추가

· 이벤트에 반응 - 마우스 움직임, 키보드 키 입력 처리

· 서버로 전송하기 전에 양식 필드에 입력된 데이터의 유효성을 검사하여 서버에서 추가 로드를 제거합니다.

· 쿠키 생성 및 읽기, 방문자의 컴퓨터에 대한 데이터 검색

· 브라우저를 감지하고 브라우저에 따라 이 브라우저용으로 특별히 설계된 원하는 페이지를 로드합니다.

· HTML 요소의 내용 변경, 새 태그 추가, 스타일 변경

제한

· JavaScript는 이를 사용하여 열지 않은 창과 탭을 닫을 수 없습니다.

· 페이지의 소스 코드를 보호할 수 없으며 페이지의 텍스트나 이미지 복사를 방지할 수 없습니다.

· 도메인 간 요청을 하거나 다른 도메인에 있는 웹 페이지에 액세스할 수 없습니다. 다른 도메인의 페이지가 동시에 다른 브라우저 탭에 표시되는 경우에도 한 도메인에 속한 JavaScript 코드는 다른 도메인의 웹 페이지에 대한 정보에 액세스할 수 없습니다. 이는 다음 탭에 페이지가 열려 있는 도메인 소유자에게 알려질 수 있는 개인 정보의 보안을 보장합니다.

· 사용자 컴퓨터에 있는 파일에 접근할 수 없거나 웹 페이지 자체 외부에 접근할 수 없습니다. 유일한 예외는 JavaScript가 쓰고 읽을 수 있는 작은 텍스트 파일인 쿠키입니다.

전체적으로 보면 악성코드가 실행되기 어렵게 설계되었다고 할 수 있습니다.

8. 웹 애플리케이션. 런타임 환경. 웹 서버 설치 및 구성.

Apache 서버는 크로스 플랫폼 웹 서버이며 오늘날 가장 일반적입니다. 대부분의 호스팅 사이트에 설치되며 예를 들어 웹 서버보다 구성하기가 더 쉽습니다. nginx.

Apache 서버는 denwer 및 xampp와 같은 빌드로도 제공되므로 php apache가 매우 인기 있는 빌드입니다. 아파치 윈도우 설치, 리눅스아래 링크:

· 아파치 리눅스 설치

· 아파치 윈도우 설치

어떻게 작동하나요? 아파치 서버:

· 주기적으로 요청을 받습니다

· 요청 처리

· 콘텐츠를 생성합니다

· 사용자에게 콘텐츠를 제공합니다

Apache 웹에는 여러 도메인 이름을 단일 IP 주소에 배포할 수 있는 가상 호스트 메커니즘이 있습니다. 각 도메인 이름에 고유한 설정을 적용할 수 있습니다. Apache 설정은 사이트의 루트 디렉터리에 있는 .htaccess 파일에서 수행됩니다.

기본 Apache 포트는 80입니다. 일부 프로그램, 특히 Skype에서 문제가 발생할 수 있습니다. 문제를 해결하려면 Skype에서 포트 80 사용을 비활성화해야 합니다. 사용된 Apache 포트 80이 사용 중인 경우 웹 서버 설정에서 이 값을 변경할 수 있습니다.

Apache에서는 정적 콘텐츠(이미지)가 많은 사이트가 Apache의 사이트보다 느립니다. nginx. 때로는 Apache 서버 + nginx와 같은 조합이 정적 데이터를 전달하는 데 사용되는 경우가 있습니다.

PHP로 프로그래밍하려면 다음 구성 요소를 설치해야 합니다.

· 아파치또는 다른 웹 서버;

· mysql (+ 웹 인터페이스를 통해 mysql 작업을 위한 phpmyadmin).

이러한 구성 요소를 설치하는 데는 두 가지 옵션이 있습니다.

· 기성 패키지(xampp, denwer 등) 설치

· 모든 패키지를 별도로 설치

첫 번째 경우 모든 것이 매우 간단합니다. 패키지를 다운로드하고 설치합니다. 그러나 수동 설치를 사용하면 버전 업데이트에 문제가 없습니다. 왜냐하면... 당신은 이미 그것이 어떻게 작동하고 어떻게 설치하는지 알고 있을 것입니다. 패키지에 문제가 발생할 가능성도 적습니다.

수동 설치:

· 다운로드 및 설치 아파치에 의해 링크

· 다음을 통해 mysql을 다운로드하고 설치합니다. 링크

· 추가 기능으로 설치 가능 phpmyadmin, 웹 인터페이스를 통한 mysql 작업용

설치 후 및 변경한 후에는 재부팅해야 합니다. 아파치. "시작 - 제어판 - 관리 - 서비스"로 이동하여 Apache를 찾아 마우스 오른쪽 버튼을 클릭하고 상황에 맞는 메뉴에서 다시 시작을 선택하세요.

작업하려면 가상 호스트를 추가해야 합니다. 이를 수행하는 방법을 읽어보세요. 여기.

런타임 환경

eTBManager 프로그램은 MySQL 데이터베이스 서버에서 관리하는 데이터로 작동하는 JBOSS 서버 애플리케이션입니다. 사용자는 웹 브라우저(IE, FireFox, Crhome 등)에서 프로그램을 사용하여 작업합니다.

프로그램은 하나의 물리적 서버(컴퓨터)에 설치됩니다. 모든 SP가 설치된 운영 체제 Windows 2008 서버.

프로그램이 작동하려면 다음 순서에 따라 소프트웨어를 서버에 설치하고 구성해야 합니다.

1. 데이터베이스

1. MySQL 데이터베이스 관리 서버.

2. eTBManager 데이터베이스.

2. 신청

1. eTBManager 프로그램을 실행하기 위한 JBOSS Java 애플리케이션 서버.

2. eTBManager 소프트웨어.

3. 웹서버

1. 사용자로부터 웹 요청을 수신하고 처리하기 위한 Apache HTTPD.

2. Apache HTTPD와 JBOSS 간의 상호 운용성을 위한 Mod_jk 커넥터.

최신 버전의 소프트웨어 및 교육 데이터베이스를 포함하여 프로그램을 설치하는 데 필요한 모든 것은 익명 액세스가 가능한 ftp:.ua 주소에서 얻을 수 있습니다. 무료 소프트웨어를 사용하므로 제조사 홈페이지에서 최신 버전을 다운로드할 수 있습니다. 최신 버전에는 버그 수정이 포함되어 있어 더욱 안정적으로 작동할 수 있지만 호환성에 대해서는 테스트하지 않았습니다.

9. 웹 기술의 개발. 웹 1.0, 웹 2.0.

Web 1.0은 TPC/IP 인터넷 프로토콜을 사용한 World Wide Web의 1세대입니다. 인터넷 이전 시대에는 지점 간 선형적 통신만 이루어졌다면, 웹(정보 웹)의 출현과 함께 사용자가 정보 공간을 자유롭게 “서핑”할 수 있는 네트워크 형태가 형성되었으며, Web 1.0 네트워크의 자원에 축적된 모든 정보를 수신합니다.

이 웹 개발 기간은 HTML 하이퍼텍스트 링크가 포함된 정적 사이트의 생성, 서버에서 클라이언트로의 수동적 정보 전송, 정보 흐름의 단방향 특성이 특징입니다.

· 자원 생성자로부터 서버로의 수동 정보 수집 흐름;

· 서버에서 클라이언트로의 수동적 정보 배포 흐름.

이것은 전자 도서관과 인터넷 정보 카탈로그의 출현과 급속한 발전의시기입니다.

Web 2.0은 대화형 "구문적" 웹으로, 대화 시스템 리소스(사용자, 클라이언트, 서버)가 널리 보급되었습니다.

이는 사용자와 서버, 검색 엔진, 전자상거래 간의 대화형 정보 프로세스가 발전한 서비스 지향 웹입니다.

정보 흐름의 생성은 사용자 자신의 손에 맡겨졌으며 사이트 소유자는 주로 인프라를 생성하고 유지하는 데만 국한되었습니다.

정보 검색 시스템(하이퍼서버, 로봇 및 사용자 인터페이스)은 웹의 핵심이 되었습니다. 검색, 정렬, 순위 지정 및 인터페이스 알고리즘은 정보의 빈도-빈도 분석을 기반으로 했습니다. 검색 엔진 로봇은 정보의 기본 인덱싱으로 인해 네트워크의 활성 정찰자이자 수동적 중재자입니다.

10. 웹 기술의 개발. 웹 3.0, 시맨틱 웹.

웹 3.0은 시맨틱 웹(Semantic Web)입니다. “인터넷 개발을 위한 글로벌 개념의 일부이며, 그 목적은 월드 와이드 웹에서 사용 가능한 정보의 기계 처리 가능성을 실현하는 것입니다. 이 개념의 주요 강조점은 현재 사용되는 문서의 텍스트 분석이 아닌 월드 와이드 웹 리소스의 속성과 내용을 고유하게 특성화하는 메타데이터로 작업하는 것입니다. 즉, 메타데이터를 포함하는 일종의 네트워크입니다. World Wide Web 리소스와 그 리소스와 병행하여 존재하는 것에 대해 설명합니다. 서버간 자동화된 정보처리를 기반으로 합니다.

이는 리소스 텍스트의 의미론적 마크업부터 인간 문구의 의미를 이해하는 지능형 알고리즘에 이르기까지 의미론적 도구의 도입 덕분에 가능해졌습니다.

네트워크, 웹 하이퍼서버 내부의 개인정보 자원을 통제하는 '클라우드' 컴퓨팅이 등장했습니다.

웹 응용 프로그램을 만드는 기술은 너무 정교해져서 정보 기술 분야에 대한 지식이 없어도 정보 리소스 사용자와 작성자의 기준이 거의 0으로 떨어졌습니다.

네트워크 기술 자체는 리소스 생성을 위한 인터페이스, 의미 번역기, 뉴스 교환기, 검색 분석기 및 대상 정보 데이터베이스의 자동 구축기 등 자동으로 작동하는 네트워크 온라인 애플리케이션 수준으로 올라갑니다.

내부 서버 간 인터페이스 외에도 멀티미디어 정보의 자동 수집, 외부 세계 정보의 로봇 소프트웨어 분석, 웹 하이퍼서버에 의한 이 정보 흡수 등 물리적 세계와의 비인간 인터페이스가 나타납니다. 로봇은 웹 3.0에 게시할 수 있는 것과 게시할 수 없는 것을 결정하는 검열관인 활성 콘텐츠 조정 단계에 진입하고 있습니다.

11. 웹 기술의 개발. 웹 서비스.

웹 서비스, 웹 서비스(eng. 웹 서비스)는 표준화된 인터페이스를 갖춘 웹 주소로 식별되는 소프트웨어 시스템입니다. 웹 서비스는 특정 프로토콜(SOAP, XML-RPC, REST 등)을 기반으로 하는 메시지를 통해 서로 통신하거나 타사 애플리케이션과 통신할 수 있습니다. 웹 서비스는 서비스 지향 애플리케이션 아키텍처를 사용할 때 모듈화 단위입니다.

일반적으로 웹 서비스는 인터넷에서 제공되는 서비스입니다. 이 사용에서 이 용어는 검색, 웹 메일, 문서 저장, 파일, 북마크 등에 대해 이야기하고 있는지에 대한 명확한 설명이 필요합니다. 이러한 웹 서비스는 컴퓨터, 브라우저 또는 인터넷 접속 장소에 관계없이 사용할 수 있습니다.

REST(Representational State Transfer)는 일반적으로 웹 서비스를 구축하는 데 사용되는 World Wide Web과 같은 분산 시스템을 위한 소프트웨어 아키텍처 스타일입니다. REST라는 용어는 HTTP 프로토콜의 저자 중 한 명인 Roy Fielding이 2000년에 만들어냈습니다. REST를 지원하는 시스템을 RESTful 시스템이라고 합니다.

일반적으로 REST는 추가 내부 계층을 사용하지 않는 매우 간단한 정보 관리 인터페이스입니다. 각 정보는 URL과 같은 전역 식별자로 고유하게 식별됩니다. 각 URL은 엄격하게 정의된 형식을 갖습니다.

REST를 사용하여 웹 서비스 구축.

아시다시피 웹 서비스는 World Wide Web에서 실행되는 응용 프로그램이며 HTTP 프로토콜을 통해 액세스가 제공되고 정보는 XML 형식을 사용하여 교환됩니다. 따라서 요청 본문에 전송되는 데이터 형식은 항상 XML입니다.

각 정보 단위(info)에 대해 5개의 작업이 정의됩니다. 즉:

정보를 얻다/ (색인)– 모든 객체의 목록을 가져옵니다.

GET /정보/(ID) (보다)– 객체에 대한 완전한 정보를 받습니다.

넣어 /정보/또는 게시 /정보/ (만들다)– 새로운 객체를 생성합니다.

/정보/(ID) 삭제 (삭제)– 식별자(id)가 있는 데이터를 삭제합니다.
보시다시피 REST 아키텍처는 사용이 매우 간단합니다. 도착하는 요청 유형에 따라 형식을 이해하지 않고도 요청이 수행하는 작업을 즉시 확인할 수 있습니다(SOAP, XML-RPC와 달리). 추가 레이어를 사용하지 않고 데이터가 전송되므로 REST는 리소스 집약도가 낮은 것으로 간주됩니다. 요청이 수행해야 하는 작업을 이해하기 위해 요청을 구문 분석할 필요가 없고 데이터를 한 형식에서 다른 형식으로 변환할 필요가 없기 때문입니다.

12. HTTP 프로토콜. 하이퍼텍스트 문서의 구조. 기본 표준.

HTTP는 원래 하이퍼텍스트 문서(즉, 다른 문서로의 탐색을 허용하는 링크가 포함된 문서)의 전송을 위해 널리 사용되는 데이터 전송 프로토콜입니다.

HTTP 프로토콜에는 클라이언트-서버 데이터 전송 구조의 사용이 포함됩니다. 클라이언트 애플리케이션은 요청을 생성하여 서버로 보냅니다. 그 후 서버 소프트웨어는 요청을 처리하고 응답을 생성하여 클라이언트로 다시 보냅니다. 그런 다음 클라이언트 애플리케이션은 계속해서 다른 요청을 보낼 수 있으며, 이 요청도 동일한 방식으로 처리됩니다.

하이퍼텍스트 문서의 구조.

아래에 하이퍼텍스트 문서액세스 시 다른 문서로 전환되는 특수 요소가 포함된 텍스트를 이해합니다. 이러한 요소를 호출됩니다. 하이퍼링크텍스트, 버튼, 그림 등의 형태로 실행될 수 있습니다. 링크를 사용하여 동일한 문서의 다른 섹션으로 이동할 수도 있습니다(이 경우 링크를 또는 ).

HTML 문서의 구조부터 시작해 보겠습니다. 간단한 형태로 다음과 같이 작성할 수 있습니다.







문서를 index.html이라는 이름으로 저장하고 브라우저에서 엽니다. 우리는 무엇을 봅니까? 아무것도 - 빈 페이지입니다. 이 예를 보고 작성을 시작해 보겠습니다.

HTML 요소는 태그입니다. 태그는 꺾쇠괄호로 묶인 키워드입니다. 태그는 단일일 수 있습니다(예: 가로 막대).


) 또는 페어링됩니다. 두 번째 경우 요소는 여는 태그로 구성됩니다(예: ) 및 닫는 태그(). 요소의 효과는 여는 태그와 닫는 태그 사이의 영역까지 확장됩니다.

전체 하이퍼텍스트 문서는 html 요소(예: 그리고). 이 요소에는 문서에 대한 서비스 정보가 포함된 문서 헤더(head 요소)와 문서 본문(요소)이라는 두 가지 요소가 더 포함되어 있습니다. )에는 브라우저 창에 표시되는 정보가 포함되어 있습니다.

위의 구조는 개인용으로 간단한 HTML 문서를 작성하기에는 충분하지만 표준을 충족하지 않습니다. 가장 큰 실수는 문서가 어떤 표준으로 표시되는지 나타내지 않는다는 것입니다. 표준은 태그 앞의 첫 번째 줄에 작성됩니다. . 어떤 기본 표준이 존재하는지 살펴 보겠습니다.

HTML 4.01의 경우

XHTML 1.0의 경우

XHTML 1.1의 경우

Strict, Transitional, Frameset - 엄격한(레이아웃이 표준과의 편차를 포함해서는 안 됨) 사양, 과도기(인형의 경우 오류가 무시됨) 및 프레임을 사용하는 사이트(아직 그런 것이 있습니까?)를 의미합니다. 문서 유형은 대소문자를 구분하므로 오류를 방지하려면 여기에 제공된 예에서 복사하는 것이 좋습니다.

다른 표준도 있습니다. 템플릿을 생성하려면 목록의 첫 번째 표준에 중점을 두겠습니다. 문서 유형에 맞게 템플릿을 쉽게 수정할 수 있습니다.

헤더 섹션으로 넘어가겠습니다. 페이지 제목(제목 요소), META 데이터 및 기타 서비스 정보를 지정합니다. 여기서는 헤더에만 초점을 맞추고 해당 주제의 나머지 요소를 고려할 것입니다(인코딩과 CSS를 담당하는 두 가지 요소만 언급하겠습니다).

head 요소 안에 라인을 추가하세요. 문서 구조브라우저에서 페이지를 엽니다. 브라우저의 맨 윗줄에는 제목 요소 내부에 지정한 내용이 표시됩니다. 이 정보는 페이지를 북마크할 때 링크를 표시하기 위해 브라우저에서 사용되기도 합니다.

페이지를 올바르게 표시하려면 문서가 작성된 인코딩을 지정해야 합니다. 이렇게 하려면 다음 줄을 추가하세요.

여기서는 표준 Windows 인코딩 windows-1251을 나타냅니다. 물론 이를 나타내는 것만으로는 충분하지 않습니다. 문서 자체를 이 인코딩으로 입력해야 합니다. 또한 표준은 utf-8 인코딩입니다(유니코드, 확장 문자 집합 지원).

또한 다음 행을 사용하여 계단식 스타일 시트의 형식을 표시합니다.

문서의 본문(body 요소)에는 시각적 정보가 포함됩니다. 브라우저 창에 직접 표시되는 것입니다. "문서 코드에 올바른 구조가 포함되어 있습니다."라는 줄을 추가합니다.

따라서 최종 엄격한 버전(다른 문서의 템플릿으로 사용할 수 있음)은 다음과 같습니다.

문서 구조 문서 코드에 올바른 구조가 포함되어 있습니다.

그 결과, 우리가 선택한 표준에 대한 문서 템플릿을 받았습니다.

HTML5: 모든 문서에 사용됩니다.

HTML 4.01: 엄격한 HTML 구문. 전환 HTML 구문. HTML 문서는 프레임을 사용합니다.

XHTML 1.0: 엄격한 XHTML 구문. XHTML 전환 구문. 문서는 XHTML로 작성되었으며 프레임을 포함합니다. XHTML 모바일 프로필은 휴대폰에 대한 특정 요소를 추가합니다.

XHTML 1.1: 이 정의는 유형으로 구분되지 않으며 구문은 동일하며 명확한 규칙을 따릅니다.

요소 현재 문서의 유형(DTD(문서 유형 정의, 문서 유형 설명))을 나타내기 위한 것입니다. HTML은 여러 버전으로 제공되고 HTML과 유사하지만 구문이 다른 XHTML(EXtensible HyperText Markup Language)도 있으므로 브라우저가 현재 웹 페이지를 해석하는 방법을 이해하는 데 필요합니다. 브라우저가 "혼란에 빠지지 않고" 웹 페이지를 표시할 표준을 이해하려면 코드의 첫 번째 줄에 설정해야 합니다. .

웹 애플리케이션 스택이란 운영 체제, 웹 서버, 데이터베이스 서버 및 실행 가능한 코드 환경 등 다양한 오픈 소스 소프트웨어 제품을 의미합니다. 가장 유명하고 일반적인 스택은 LAMP입니다. 이는 무료 오픈 소스 솔루션을 기반으로 하는 웹 애플리케이션 스택의 약어입니다.

램프-World Wide Web에서 널리 사용되는 서버 소프트웨어 세트를 나타내는 약어입니다. LAMP는 구성 요소의 첫 글자를 따서 명명되었습니다.

    inux 운영 체제 Linux;

    통증-웹 서버;

    아리아DB/ ySQL-DBMS;

    웹 애플리케이션을 만드는 데 사용되는 HP 프로그래밍 언어입니다(PHP 외에도 Perl 및 Python과 같은 다른 언어가 포함될 수 있음).

약어 LAMP는 다음을 참조하는 데 사용할 수 있습니다.

    웹 서버 인프라

    프로그래밍 패러다임

    소프트웨어 패키지

처음에는 이러한 소프트웨어 제품이 서로 작동하도록 특별히 설계되지 않았지만 이 조합은 유연성, 성능 및 저렴한 비용으로 인해 매우 인기가 높아졌습니다(모든 구성 요소는 오픈 소스이며 인터넷에서 무료로 다운로드할 수 있음). LAMP는 대부분의 Linux 배포판에 포함되어 있으며 많은 호스팅 회사에서 사용할 수 있습니다.

Linux는 요청의 수신/전송을 보장하고(하드웨어 제어) 서버, DBMS, 언어 지원 등 상위 모든 것의 핵심입니다.

우분투에 설치

다음 패키지를 설치해야 합니다.

apt-get update를 실행하여 패키지의 로컬 목록을 업데이트한 후 단일 apt-get install 명령을 사용하여 해당 패키지를 설치할 수 있습니다.

위 명령을 실행하면 이러한 패키지와 기타 종속성을 설치하라는 메시지가 표시됩니다. "y"를 누른 다음 Enter를 눌러 계속 진행하고 나머지 지침에 따라 MySQL의 관리 비밀번호를 설정하세요.

이를 통해 MySQL에서 PHP를 사용하는 데 필요한 최소한의 PHP 확장 세트를 설치할 수 있습니다.

Linux OS의 특징 및 장점

무료.

신뢰할 수 있음. PC 하드웨어가 올바르게 작동하면 Linux가 재부팅이나 정지 없이 수년간 작동할 수 있습니다. 그리고 재설정 버튼은 전혀 필요하지 않습니다.

안전. Linux에는 실제로 바이러스가 없습니다. 운영 체제의 설계 자체가 악성 코드의 작동을 배제합니다.

오픈 소스. 이를 통해 원하는 대로 코드를 사용하고 수정할 수 있습니다.

Apache의 주요 장점은 안정성과 구성 유연성입니다. 외부 모듈을 연결하여 데이터를 제공하고 DBMS을 위한 입증사용자, 오류 메시지 수정 등

MySQL DBMS의 유연성은 다양한 테이블 유형을 지원하여 보장됩니다. 사용자는 테이블 유형을 선택할 수 있습니다. 마이ISAM, 전체 텍스트 검색 및 테이블 지원 InnoDB, 개별 레코드 수준에서 트랜잭션을 지원합니다. 또한 MySQL DBMS에는 새로운 테이블 유형을 생성하는 원리를 보여주는 특별한 EXAMPLE 테이블 유형이 함께 제공됩니다. 개방형 아키텍처와 GPL 라이센스 덕분에 MySQL DBMS에는 새로운 유형의 테이블이 지속적으로 등장하고 있습니다.

PHP - 스크립팅 언어 범용으로 웹 애플리케이션 개발에 집중적으로 사용됩니다. 현재 압도적인 지지를 받고 있습니다 호스팅 제공업체창조하는 데 사용되는 언어 중 선두주자 중 하나입니다. 동적 웹사이트 .

이 기사에서는 무료로 배포되고 실질적으로 무료인 LAMP라는 소프트웨어 세트를 살펴보겠습니다. 이 약어의 올바른 약어는 무엇입니까? 이는 다음과 같은 조합으로 결합된 4가지 인기 기술로 구성됩니다.리눅스- 운영 체제;- 웹 서버;MySQL- DBMS; - 웹 리소스를 생성하는 데 사용되는 프로그래밍 언어입니다.

이 소프트웨어 세트는 동적 웹사이트와 웹 애플리케이션을 표시하기 위해 서버에 설치됩니다. 이 플랫폼을 사용하면 대부분의 웹사이트 유형과 네트워크 소프트웨어를 서버에 설치(배포)할 수 있습니다.

램프 조합은 다음과 같습니다.

  1. 필요한 작업을 수행하기 위한 Linux 서버 OS
  2. 다양한 프로그래밍 언어로 작성된 스크립트와 웹 서버의 공동 운영 문제를 해결하기 위해 많은 추가 모듈이 생성된 Apache 웹 서버;
  3. 서버측 동적 스크립팅 언어 PHP(또는 Perl);
  4. SQL 쿼리의 뛰어난 실행 속도를 입증하며 중소 규모 프로젝트에 이상적인 MySQL DBMS입니다. MySQL은 and에서 실행되며 특히 사용하기 쉽습니다.

왜 LAMP가 필요할 수 있나요?

  • LAMP용으로 작성된 웹 개발 및 테스트 애플리케이션을 위한 환경이 필요한 경우. 이는 귀하의 응용 프로그램과 필요한 CMS 모두에 적용됩니다. Windows와 Ubuntu에서 작업할 수 있습니다.
  • 전용 서버에서 프로젝트를 호스팅하기 위해 생산적인 웹 서버를 만들어야 하는 경우;
  • 버전 관리 시스템용 서버가 필요한 경우;
  • 자율 학습 관리를 위해;
  • 경제적 목적을 위해 자신만의 서버를 만들 수 있습니다.

얼마나 무거운가 이번 집회의 장점 : 구성이 간단하기 때문에 애플리케이션을 빠르게 배포하는 데는 좋지만 확장성 및 구성 요소 격리 기능은 여전히 ​​거의 제공되지 않습니다.

중에 그러한 어셈블리의 단점 다음 사항이 강조되어야 합니다.

애플리케이션과 데이터베이스는 동일한 서버 리소스(CPU, 메모리, I/O 등)를 공유하므로 성능이 저하되고 이 문제의 원인(애플리케이션 또는 데이터베이스)을 파악하기가 어렵습니다. 수평적 확장에도 장애물이 있습니다.

LAMP 설치(Linux + Apache + MySQL + PHP/Perl/Python) Ubuntu 서버를 설정하는 데 상당히 널리 사용되는 옵션입니다. 오픈 소스이고 LAMP 애플리케이션 스택을 사용하여 작성된 애플리케이션이 많이 있습니다. 널리 사용되는 LAMP 애플리케이션에는 위키 백과사전, 콘텐츠 관리 시스템(CMS) 및 phpMyAdmin과 같은 관리 애플리케이션이 포함됩니다.

LAMP의 중요한 장점은 데이터베이스, 웹 서버 및 스크립팅 언어 선택의 유연성입니다. 현재 MySQL을 대체하는 것은 PostgreSQL과 SQLite입니다. Python, Perl, Ruby는 PHP로 대체될 수 있습니다. 그리고 Nginx, Cherokee 및 Lighttpd는 Apache의 대안입니다.

LAMP를 빠르게 설치하려면 taskel을 사용하세요. Tasksel은 단일 작업으로 시스템에 여러 종속 패키지를 설치하는 Debian/Ubuntu 도구입니다.

필요한 경우VPS 서버에 LAMP를 설정하세요 , 연중무휴 기술 지원팀에 문의하세요! 회사 하이퍼 호스트™즐거운 일을 기원합니다!

HyperHost 호스팅이 지원하는 기술에 대해 자세히 알아보세요.

9946회 오늘 조회수 2회

Apache, MySQL 및 PHP에 대해 말할 때 대부분의 관리자는 많은 Linux 배포판 중 하나에 이 소프트웨어 세트를 설치하는 것과 관련된 LAMP 스택을 의미합니다. 그러나 이 경우에는 FreeBSD를 선택하는 것이 더 적합할 수 있습니다.

이 기사에서는 베어메탈 서버에서 (L)AMP 스택과 몇 가지 관리 도구를 사용하여 FreeBSD를 시작하고 실행하고 문제 없이 함께 작동하도록 하는 데 필요한 모든 단계를 안내합니다. 예상치 못한 상황.

1단계. FreeBSD 설치

먼저 운영 체제 자체가 필요합니다. 공식페이지로 가보자 FreeBSD(www.freebsd.org), "Get FreeBSD Now" 링크를 클릭한 다음 OS 버전(작성 당시에는 8.2-RELEASE 및 7.4-RELEASE의 두 가지 버전이 사용 가능), 아키텍처(amd64 또는 i386)를 선택합니다. , 링크를 클릭하면 사용 가능한 이미지 목록을 볼 수 있습니다. 총 5가지가 있습니다. bootonly - 네트워크를 통한 설치용 부팅 이미지, disk1 - CD 굽기용 ISO 이미지, dvd1 - DVD 굽기용 이미지, livefs - 그래픽 인터페이스가 없는 LiveCD, USB 키체인 쓰기용 memstick . 우리의 경우 첫 번째와 두 번째만 적합하고 네트워크에 DHCP 서버가 없으면 두 번째만 적합합니다(CD에 필요한 모든 것이 포함되어 있으므로 DVD 이미지를 다운로드할 필요가 없습니다).

따라서 ISO 이미지를 다운로드하여 공백으로 잘라서 서버 드라이브에 삽입하고 재설정/켜십시오. OS가 부팅될 때까지 기다립니다. 다운로드가 완료되면 국가 선택 창과 12개 항목으로 구성된 sysinstall 설치 프로그램 메뉴가 화면에 나타납니다. 우리는 그중 하나인 "Express"에만 관심이 있습니다. 이를 사용하면 많은 경고 메시지, 질문 및 설정을 건너뛰고 운영 체제를 최대한 빨리 설치할 수 있습니다. 선택하고 클릭하세요. .

디스크 파티션 프로그램 창이 나타납니다. 여기에서 간단히 클릭하거나 전체 디스크를 사용하거나 여유 공간에 새 파티션을 생성합니다. 그러나 FreeBSD는 하나의 표준 DOS 파티션(FreeBSD 용어로 슬라이스라고 함)이 여러 BSD 파티션을 포함할 수 있는 2단계 디스크 파티션 구성표를 사용하므로 이 단계에서는 하나의 파티션만 생성하면 됩니다. 완료되면 클릭하세요. 프로그램을 종료합니다.

다음 창: 부트로더 설치에 관한 질문이 있으면 클릭하세요. MBR에 부트로더를 설치합니다. 그 직후에 이전에 생성된 파티션을 BSD 파티션으로 표시하는 창이 나타납니다. 여기에서 실험해 볼 수 있지만 클릭만 하는 것이 좋습니다. 프로그램 자체가 디스크를 분할하도록 합니다. 다음 클릭 변경 사항을 확인합니다.

다음 창: 설치 소스를 선택합니다. 기본적으로 CD/DVD가 소스로 사용되므로 클릭만 하면 됩니다. . 눌러 선택을 확인하세요. 다음 창에서. 이제 파일 복사 프로세스가 시작된 후 설치 프로그램의 기본 메뉴로 돌아갈지 묻는 메시지가 화면에 표시됩니다. 딸깍 하는 소리 , 더 나아가 , "예" 그리고 . 운영 체제를 재부팅해야 합니다. OS가 하드 드라이브에서 부팅될 수 있도록 드라이브에서 설치 디스크를 제거하는 것을 잊지 마십시오.

다운로드가 완료되면 사용자 이름 root를 입력하고 명령 해석기에 대한 액세스 권한을 얻으십시오.

2단계: 설정

방금 FreeBSD를 설치했지만 아직 완전한 서버로 작동할 준비가 되지 않았습니다. 네트워크가 작동하지 않고 루트에 비밀번호가 없으며 시스템에 사용자가 한 명뿐입니다. 이 문제를 해결해 보겠습니다. 먼저 루트 사용자의 비밀번호를 설정해 보겠습니다.

질문이 화면에 표시되지만 대부분 답변이 없을 수도 있습니다(클릭 ), 사용자 이름, 기본 명령 해석기(tcsh를 선택하는 것이 더 좋음) 및 비밀번호만 중요합니다. 마지막에 명령은 "yes"라는 단어를 입력해야 하는 사용자 설정 결과 목록을 표시하고 다음 질문에 대한 응답으로 "no"를 입력합니다.

사용자가 루트 권한을 얻으려면 휠 그룹에 추가하십시오.

# pw groupmod 휠 -m 사용자 이름

누구도 /tmp 및 /var 파티션에 있는 파일을 실행할 수 없도록 /etc/fstab 파일을 수정해 보겠습니다. 이렇게 하려면 각 섹션의 옵션 필드에 "noexec" 플래그를 추가하세요.

시스템 파일에 대한 액세스에 대해 보다 엄격한 제한을 설정해 보겠습니다.

# chmod 0600 /etc/syslog.conf

chmod 0600 /etc/rc.conf

chmod 0600 /etc/newsyslog.conf

chmod 0600 /etc/hosts.allow

chmod 0600 /etc/login.conf

이제 네트워크 연결을 구성해야 합니다. FreeBSD에서는 모든 전역 설정이 /etc/rc.conf 파일에 저장되므로 편집기를 사용하여 열고 다음 줄을 추가합니다.

# ee /etc/rc.conf
호스트 이름="host.com"
ifconfig_em0="inet 1.2.3.4 넷마스크 0xffffffff"
기본 라우터="5.6.7.8"

여기서 두 번째 줄의 em0은 구성 중인 네트워크 인터페이스의 이름입니다. 사용 가능한 모든 네트워크 인터페이스 목록은 ifconfig 명령을 사용하여 얻을 수 있습니다. 옵션 값으로 DHCP를 지정하면 dhclient가 인터페이스를 구성하는 데 사용됩니다. 또한 우리에게 중요한 몇 가지 옵션을 즉시 추가할 것입니다.

# ee /etc/rc.conf

패킷 전달을 비활성화하고

모든 리디렉션 시도를 등록합니다.

icmp_drop_redirect="예"
icmp_log_redirect="예"

브로드캐스트 핑 요청에 대한 응답 비활성화

icmp_bmcastecho="아니요"

부팅할 때마다 /tmp 디렉토리를 지우십시오.

clear_tmp_enable="예"

부팅할 때마다 /etc/motd 파일이 업데이트되지 않도록 방지

update_motd="아니요"

동시에 설치된 패키지는 허용되지 않습니다.

플래그 SYN 및 FIN

tcp_drop_synfin="예"

센드메일 비활성화

sendmail_enable="아니요"
sendmail_submit_enable="아니요"

SSH 활성화

sshd_enable="예"

편집기를 종료하려면 그리고 두 번 . /etc/resolv.conf에 DNS 서버 주소를 추가해 보겠습니다.

# ee /etc/resolv.conf
네임서버 8.8.8.8

네트워크 설정을 적용하려면 다음 명령을 실행하십시오.

# /etc/rc.d/netif 다시 시작

네트워크 가용성 확인:

# 핑 execbit.ru

/etc/sysctl.conf 파일에 몇 가지 유용한 줄을 추가해 보겠습니다.

# ee /etc/sysctl.conf

닫힌 포트의 연결 시도에 응답하지 않음

(일부 유형의 DoS 공격으로부터 사용자를 보호하고 공격을 어렵게 만듭니다.

포트 스캐닝)

net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1

루트만 모든 프로세스 목록을 볼 수 있도록 허용

kern.ps_showallprocs=0

무차별 대입 공격으로부터 SSH 서버를 보호해 보겠습니다.

# echo "MaxStartups 5:50:10" >> /etc/ssh/sshd_config

/etc/rc.d/sshd 다시 시작

이제 5번의 잘못된 로그인이 있는 경우 SSH 서버는 새 연결의 50%를 삭제합니다. 10개가 되면 서버가 완전히 응답을 중지합니다.

빠른 설치를 사용할 때 포트 시스템(타사 소프트웨어를 OS에 설치하기 위한 프레임워크)은 FreeBSD에 자동으로 설치되지 않으므로 수동으로 설치해야 합니다(이렇게 하면 최신 슬라이스를 얻을 수 있으므로 좋습니다. 오래되고 누출되는 소프트웨어가 포함되지 않은 포트):

# portsnap 가져오기 추출

기본 시스템을 업데이트할 수도 있지만 반드시 그럴 필요는 없습니다.

# freebsd-update 가져오기

freebsd 업데이트 설치

종료 -r 지금

포트가 업데이트된 후 시스템에 나중에 시스템에 설치될 수 있는 루트킷을 포착하는 데 필요한 rkhunter 도구를 설치합니다.

# cd /usr/ports/security/rkhunter

깨끗하게 설치하세요

MAIL-ON-WARNING 옵션에 감지된 이상 현상에 대한 메시지가 전송되어야 하는 이메일이 포함되도록 /usr/local/etc/rkhunter.conf 구성 파일을 편집해 보겠습니다.

도구가 자동으로 업데이트를 확인하도록 강제해 보겠습니다.

# rkhunter --업데이트

그런 다음 루트킷을 검색할 때 참조로 사용될 시스템 파일의 스냅샷을 생성합니다.

# echo "daily_rkhunter_update_enable="YES"" > /etc/ periodic.conf

echo "daily_rkhunter_check_enable="YES"" > /etc/ periodic.conf

이제 의심스러운 시스템 활동에 대한 모든 메시지가 /var/log/rkhunter.log 로그에 저장되고 구성 파일에 지정된 이메일로 전송됩니다.

# crontab -e 0 2 * * * 루트 /usr/local/sbin/ntpdate pool.ntp.org

마지막으로 원격 서버 관리를 위한 웹 기반 인터페이스인 Webmin을 설치해 보겠습니다(관리에 SSH를 사용하려는 경우 이 단계를 건너뛸 수 있습니다).

# cd /usr/ports/sysutils/webmin

깨끗하게 설치하세요

echo "webmin_enable="YES"" >> /etc/rc.conf

# /usr/local/lib/webmin/setup.sh

질문은 클릭하시면 답변 가능합니다 단, 비밀번호 입력 시("로그인 비밀번호:" 줄) Webmin에 액세스하려면 비밀번호를 입력해야 합니다(다른 비밀번호와 다르면 더 좋음). 다음으로 Webmin을 시작할 수 있습니다.

# /usr/local/etc/rc.d/webmin 시작

그리고 가장 가까운 브라우저의 주소 표시줄에 "https://host.com:10000/" 주소를 입력하여 작동을 테스트합니다.

앰프

이제 AMP 스택, 즉 Apache 웹 서버, MySQL 데이터베이스 및 PHP 인터프리터를 설치할 차례입니다. 먼저 Apache를 다루겠습니다. 포트로 이동하여 최신 버전을 설치하십시오.

# cd /usr/ports/www/apache22

구성 g를 깨끗하게 설치하세요

선택적 서버 구성 요소의 설치를 선택할 수 있는 구성기 창이 화면에 나타나야 합니다. 여기서는 아무것도 변경할 필요가 없으므로 안전하게 누를 수 있습니다. . 어셈블리 및 설치를 완료한 후 자동 시작에 서버를 추가하는 것을 잊지 마세요(SSL 지원이 필요하지 않은 경우 두 번째 줄을 건너뛸 수 있습니다).

# echo "apache22_enable="YES"" >> /etc/rc.conf

echo "apache22ssl_enable="YES"" >> /etc/rc.conf

또한 HTTP 연결을 버퍼링하는 accf_http 모듈을 로드하기 위한 지침을 구성 파일에 추가해야 합니다. 이는 서버를 완화하고 SYN 플러드에 맞서 싸우는 데 도움이 됩니다.

# echo "accf_http_ready="YES"" >> /etc/rc.conf

kldload accf_http

# cd /usr/ports/lang/php5

구성 설치를 깨끗하게 만들기

"Apache 모듈 빌드" 옵션이 선택되어 있는지 확인하세요. 게다가 몇 가지 확장 기능도 있습니다:

# cd /usr/ports/lang/php5-확장

구성 설치를 깨끗하게 만들기

PHP 구성 단계에서 포트 시스템이 MySQL 작업을 위해 PHP 모듈을 설치하도록 강제하는 "MySQL 데이터베이스 지원" 항목을 확인하는 것을 잊지 않는 것이 중요합니다. 그것 없이는 아무것도 작동하지 않습니다.

이제 텍스트 편집기에서 Apache 구성 파일을 열고(FreeBSD에서는 멀리 숨겨져 있음: /usr/local/etc/apache22/httpd.conf) 다음을 변경합니다.

1. LoadModule 줄 뒤에 다음 두 줄을 추가합니다.

AddType application/x-httpd-php.php
AddType application/x-httpd-php-source.phps

2. ServerAdmin 옵션을 찾아 해당 값으로 이메일 주소를 입력하세요.

서버관리자 [이메일 보호됨]

3. DocumentRoot 옵션에서 웹사이트의 모든 파일이 저장될 디렉터리를 지정합니다.

DocumentRoot "/home/www/data"

다음 디렉터리를 만드는 것을 잊지 마세요.

# mkdir /home/www

mkdir /home/www/data

mkdir /home/www/cgi-bin

나는 /home/www를 루트 디렉토리로 사용하는 것을 선호합니다. 첫째, /home 디렉토리는 일반적으로 가장 큰 파티션에 위치하고(설치 중에 사용한 자동 파티션 구성 프로그램은 대부분의 공간을 /home에 할당함) 두 번째로 , 많은 하위 디렉토리에 숨겨진 일부 /usr/local/www/apache22/data보다 작업하기가 더 쉽습니다.

4. 우리는 다음 줄을 찾습니다:

그리고 DocumentRoot가 디렉터리로 지정되도록 변경합니다.

5. 다음 줄을 변경합니다.


디렉토리색인 index.html


디렉토리 색인 index.php index.html

6. 지시어 내부 줄을 교체하십시오 :

ScriptAlias ​​​​/cgi-bin/ "/usr/local/www/apache22/cgi-bin/"

이 하나:

ScriptAlias ​​​​/cgi-bin/ "/home/www/cgi-bin/"

7. 다음 줄:

다음으로 바꾸세요:

파일을 저장하고 PHP 설정 파일을 만듭니다.

# cp /usr/local/etc/php.ini-권장 /usr/local/etc/php.ini

이는 Apache가 PHP와 함께 제대로 작동하기에 충분합니다. 이제 MySQL 설치를 시작할 수 있습니다. 우리는 항구로 가서 다음을 수행합니다.

# cd /usr/ports/databases/mysql50-server

WITH_OPENSSL=yes를 깨끗하게 설치하세요.

처음으로 충분할 기본 구성 파일을 만들어 보겠습니다.

# ee /etc/my.cnf
포트=29912
포트=29912
바인드 주소=127.0.0.1

MySQL을 시작에 추가하고 서버를 시작합니다.

# echo "mysql_enable="YES""<< /etc/rc.conf

/usr/local/etc/rc.d/mysql-server 시작

데이터베이스에 액세스하기 위한 비밀번호를 설정해 보겠습니다.

# mysqladmin -u 루트 비밀번호 비밀번호

mysql -u 루트 -p

이제 MySQL은 정상적으로 작동해야 하지만 데이터베이스를 수동으로 관리하는 것은 그다지 편리하지 않습니다. 게다가 일부에게는 이것이 MySQL을 설치하는 첫 경험이 될 것이므로 빨리 파악하기가 쉽지 않습니다. 따라서 PHPMyAdmin이라는 MySQL 웹 관리 인터페이스를 설치해 보겠습니다.

# cd /usr/ports/databases/phpmyadmin

깨끗하게 설치하세요

웹 인터페이스에 액세스하기 위한 비밀번호를 지정하여 PHPMyAdmin 구성 파일을 편집해 보겠습니다.

# cd /usr/local/www/phpMyAdmin

cp config.sample.inc.php config.inc.php

ee config.inc.php

$cfg["blowfi sh_secret"] = "비밀번호";

이제 Apache 구성 파일을 다시 열고 다음을 수행하십시오.

1. 섹션으로 다음 줄을 추가하세요:

별칭 /phpmyadmin /usr/local/www/phpMyAdmin

2. 섹션이 끝날 때까지 다음 줄을 추가하세요.


주문 허용, 거부
모두에서 허용

여기에서 "모두 허용" 대신 "123.456.789.0/12에서 허용"과 같은 항목을 추가하여 특정 서브넷에서만 PHPMyAdmin에 대한 액세스를 허용할 수 있습니다. 아파치를 다시 시작하세요:

그게 다입니다. 이제 (L)AMP가 작동합니다.

HTTPS

PHPMyAdmin이 제대로 작동하려면 HTTPS 지원이 필요하며, 앞으로 클라이언트와 사이트 간에 안전하게 암호화된 연결을 설정하려면 이 프로토콜이 필요할 가능성이 높습니다. 따라서 Apache가 이를 이해하는지 확인하겠습니다.

먼저 OpenSSL 구성 파일(/etc/ssl/openssl.cnf)에 다음 줄을 추가하여 수정해 보겠습니다.

# 인증서 저장을 위한 디렉토리
디렉토리 = /루트/sslCA

인증서 유효기간(~10년)

default_days = 3650

이제 디렉터리를 준비하고 자체 인증 기관에 대한 인증서를 생성해 보겠습니다.

mkdir SSLCA

chmod 700 SSLCA

chmod 700 SSLCA

mkdir 비공개

CD SSLCA

openssl req -new -x509 -days 3650 -extensions v3_ca

Keyout private/cakey.pem -out cacert.pem
-config /etc/ssl/openssl.cnf

인증서가 성공적으로 생성되었는지 확인해 보겠습니다.

# ls -l cacert.pem 개인/cakey.pem

Apache용 인증서를 생성하여 /etc/ssl 디렉터리에 배치해 보겠습니다.

# cd /root/sslCA

openssl req -new -nodes -out 호스트 이름-req.pem

Keyout private/hostname-key.pem -config /etc/ssl/openssl.cnf

openssl ca -config /etc/ssl/openssl.cnf -out

이름 Host-cert.pem -infiles 이름호스트-req.pem

cp /root/sslCA/hostname-cert.pem /etc/ssl/crt

cp /root/sslCA/private/hostname-key.pem /etc/ssl/key

Apache 구성 파일을 다시 열고 다음 줄을 찾아 주석을 제거합니다.

# ee /usr/local/etc/apache22/httpd.conf

etc/apache22/extra/httpd-ssl.conf 포함

/usr/local/etc/apache22/extra/http-ssl.conf 파일을 다음과 같이 변경합니다.

# ee /usr/local/etc/apache22/extra/http-ssl.conf

HTTPS 서버 이름

서버 이름 ssl.host.com

인증서와 키가 포함된 파일의 경로

SSL인증서 파일 /etc/ssl/crt/yourhostname-cert.pem
SSLCertificateKeyFile /etc/ssl/key/yourhostname-key.pem

기본 구성과 동일

DocumentRoot "/home/www/data"

로그 작성 위치

오류 로그 "/var/log/httpd-error.log"
TransferLog "/var/log/httpd-access.log"

아파치를 다시 시작하세요:

# /usr/local/etc/rc.d/apache22 재시작

무엇 향후 계획?

이 기사에서는 FreeBSD에서 완전한 기능을 갖춘 (L)AMP 스택을 실행하는 방법을 보여주었습니다(따라서 FAMP에 더 가깝습니다). 이제 해야 할 일은 즐겨찾는 웹 사이트 엔진을 다운로드하여 /home/www에 배포하는 것뿐입니다. /data 디렉토리(스크립트를 /home/www/cgi-bin에 넣는 것을 기억하세요). 그 밖의 모든 작업은 (L)AMP에서 처리합니다.

LAMP 스택은 Linux 호스팅 웹사이트의 기반이며 Linux, Apache, MySQL 및 PHP(LAMP) 소프트웨어 스택입니다.

램프 스탠드:-

  1. L(리넥스 OS)
  2. A(아파치[ 로컬 클라이언트 서버])
  3. M(MySQL 데이터베이스)
  4. 피(PHP)

LAMP 스택은 웹사이트와 웹 애플리케이션을 만드는 데 사용할 수 있는 오픈 소스 소프트웨어 세트입니다. LAMP는 약어이며 이러한 스택은 일반적으로 Linux 운영 체제, Apache HTTP 서버, MySQL 관계형 데이터베이스 관리 시스템 및 PHP 프로그래밍 언어로 구성됩니다.

    리눅스:운영 체제(OS)는 첫 번째 계층을 구성합니다. Linux는 스택 모델의 기반을 설정합니다. 다른 모든 레이어는 이 레이어 위에서 실행됩니다. Linux는 가장 낮은 수준의 계층이며 운영 체제를 제공합니다. Linux는 실제로 다른 각 구성 요소를 실행합니다. 그러나 특별히 Linux에만 국한되는 것은 아닙니다. Microsoft®에서 다른 각 구성 요소를 쉽게 실행할 수 있습니다. 필요한 경우 Windows®, Mac OS X 또는 UNIX®.

    아파치:두 번째 계층은 웹 서버 소프트웨어(일반적으로 Apache 웹 서버)로 구성됩니다. 이 계층은 Linux 계층 위에 있습니다. 웹 서버는 웹 브라우저에서 올바른 웹 사이트로 번역하는 역할을 담당합니다. Apache는 사용자에게 웹 페이지를 제공하는 메커니즘을 제공합니다. Apache는 안정적이고 업무상 중요한 기능을 갖춘 서버이며 인터넷상의 모든 웹 사이트 중 65% 이상을 실행합니다. PHP 구성 요소는 실제로 Apache 내부에 있으며 Apache와 PHP를 함께 사용하여 동적 페이지를 만듭니다.

    MySQL:세 번째 계층은 데이터베이스가 있는 곳입니다. MySQL은 웹 사이트를 구축하기 위해 스크립팅을 통해 쿼리할 수 있는 세부 정보를 저장합니다. MySQL은 일반적으로 Apache/layer 2와 함께 Linux 계층 위에 위치합니다. 고급 구성에서는 MySQL을 별도의 호스트 서버로 오프로드할 수 있습니다. MySQL은 LAMP 시스템의 데이터 저장 측면을 제공합니다. MySQL을 사용하면 크고 복잡한 사이트를 실행하는 데 적합한 매우 유능한 데이터베이스에 액세스할 수 있습니다. 웹 응용 프로그램 내에서 모든 데이터, 제품, 계정 및 기타 유형의 정보는 SQL 언어로 쉽게 쿼리할 수 있는 형식으로 이 데이터베이스에 상주합니다.

    PHP:그 위에는 네 번째이자 마지막 레이어가 있습니다. 스크립팅 계층은 PHP 및/또는 기타 유사한 웹 프로그래밍 언어로 구성됩니다. 웹사이트와 웹 애플리케이션은 이 계층 내에서 실행됩니다. PHP는 LAMP 시스템의 다른 모든 부분에 대한 접착제를 제공하는 간단하고 효율적인 프로그래밍 언어입니다. PHP를 사용하여 MySQL 데이터베이스의 데이터와 Linux가 제공하는 일부 기능에 액세스할 수 있는 동적 콘텐츠를 작성합니다.