LAMP 설치 및 설정
36905 단어 기타
LAMP 소개 및 설치
1. LAMP 는 무엇 입 니까?
LAMP, Linux + Apache + PHP + Mysql 포함.
LAMP 적용 환경
극도 의 안정 을 추구 하 는 WEB 환경 에 적용 되 며, 더 많은 자원 을 소모 해 야 한 다 는 단점 이 있다.
LAMP 외 에 도 LNMP 를 자주 들 었 을 것 이다. 다른 점 은 Apache 가 Nginx 로 바 뀌 었 다 는 것 이다.Apache 작업 모드 는 기본적으로 prefork 작업 모드 를 사용 합 니 다. 여러 프로 세 스 는 프로 세 스 마다 하나의 스 레 드 만 사용 합 니 다.또 다른 worker 작업 모델 도 있 습 니 다. 모든 하위 프로 세 스 는 여러 개의 스 레 드 가 있 고 높 은 병행 장면 에 적합 하지만 스 레 드 안전 은 스스로 보장 해 야 하기 때문에 추천 하지 않 습 니 다.
Apache 와 Nginx 비교
Apache 는 비교적 안정 적 이 고 Nginx 는 높 은 동시 다발 장면 에 적합 하 다.
Apache 설정 파일 이 상대 적 으로 복잡 하고 Nginx 설정 이 간단 합 니 다 아파 치 는 동적 프로 세 스 를 처리 합 니 다. Nginx 는 정적 처리 에 적합 합 니 다 Apache 는 모듈 화 된 시스템 이지 만 Nginx 도 점점 풍부 한 3 자 라 이브 러 리 를 가지 고 있다.
상용 환경
아파 치 는 안정성 과 동적 처리 능력 때문에 마지막 서버 에 자주 사용 된다.
Nginx 는 높 은 병행 처리 능력 과 강력 한 정규 표현 식 으로 전단 퍼 가기 에 사 용 됩 니 다.
2. LAMP 컴 파일 설치
일반적으로 ubuntu 및 centos 등 발행 판 에 서 는 간단 한 yum 또는 apt - get 명령 만 실행 하면 LAMP 전체 구성 요 소 를 빠르게 설치 할 수 있 지만 성능 등 을 고려 하여 복잡 한 소스 코드 를 선택 하여 설치 할 때 가 있 습 니 다. 여기 서 소스 코드 에 LAMP 를 설치 하 는 방법 을 소개 합 니 다.일부 내용 은 실험 건물 환경 에서 apt - get 을 통 해 설 치 된 apache 와 my sql 서 비 스 를 먼저 중단 해 야 조작 할 수 있 습 니 다.
2.1 아파 치 컴 파일
apache 관련 링크:
다운로드 주소 http://mirrors.aliyuncs.com/apache/httpd/
httpd 2.4 문서 http://httpd.apache.org/docs/2.4/
최신 버 전 다운로드
$ wget http://labfile.oss.aliyuncs.com/httpd-2.4.12.tar.gz
컴 파일 전 의존 관계 해결
$ sudo apt-get install gcc g++ make libtool -y
설치 의존
#####install apr
$ wget http://labfile.oss.aliyuncs.com/apr-1.5.1.tar.gz
$ tar xvf apr-1.5.1.tar.gz
$ cd apr-1.5.1
~/apr-1.5.1$ ./configure --prefix=/app/apr
~/apr-1.5.1$ make && make install
#####install apr-util
$ wget http://labfile.oss.aliyuncs.com/apr-util-1.5.4.tar.gz
$ tar xvf apr-util-1.5.4.tar.gz
$ cd apr-util-1.5.4
~/apr-util-1.5.4$ ./configure --prefix=/app/apr-util --with-apr=/app/apr
#####install pcre
$ wget http://labfile.oss.aliyuncs.com/pcre-8.36.tar.gz
$ tar xvf pcre-8.36.tar.gz
$ cd pcre-8.36
~/pcre-8.36$ ./configure --prefix=/app/pcre
~/pcre-8.36$ make && make install
컴 파일 설치 apache
$ tar xvf httpd-2.4.12.tar.gz
$ cd httpd-2.4.12
~/httpd-2.4.12$ ./configure --prefix=/app/apache --with-apr=/app/apr --with-apr-util=/app/apr-util --with-pcre=/app/pcre/
~/httpd-2.4.12$ make && make install
시동 을 걸다
$ sudo /app/apache/bin/httpd
$ netstat -anp | grep 80
(No info could be read for "-p": geteuid()=1000 but you should be root.)
tcp6 0 0 :::80 :::* LISTEN -
테스트
$ curl -I 127.0.0.1
HTTP/1.1 200 OK
Date: Tue, 03 Feb 2015 16:17:15 GMT
Server: Apache/2.4.12 (Unix)
Last-Modified: Mon, 11 Jun 2007 18:53:14 GMT
ETag: "2d-432a5e4a73a80"
Accept-Ranges: bytes
Content-Length: 45
Content-Type: text/html
2.2 MySQL 컴 파일
여기 서 우 리 는 MySQL 을 사용한다. 비록 이것 이 최선 의 선택 은 아니 지만.저 희 는 mariadb 나 percona 를 추천 합 니 다. 그들 은 모두 MySQL 의 갈래 로 MySQL 보다 더욱 우수한 성능 을 가지 고 MySQL 과 완전히 호 환 되 며 제조 업 체 의 통 제 를 받 지 않 습 니 다.
PS: MySQL 5.5 이후 cmake 로 컴 파일 합 니 다.
의존 관 계 를 해결 하 다
$ sudo apt-get install cmake g++ libbison-dev libncurses-dev
컴 파일 설치
$ wget http://labfile.oss.aliyuncs.com/mysql-5.6.24.tar.gz
$ tar xf mysql-5.6.24.tar.
~/mysql-5.6.24$
~/mysql-5.6.24$ cmake -DCMAKE_INSTALL_PREFIX=/app/mysql -DMYSQL_DATADIR=/app/mysql/data -DWITH_INNOBASE_STORAGE_ENGINE=1
~/mysql-5.6.24$ make && make install
권한 부여 및 초기 화
$ sudo useradd mysql
$ sudo chown -R mysql.mysql /app/mysql/
$ sudo /app/mysql/scripts/mysql_install_db --basedir=/app/mysql --datadir=/app/mysql/data --user=mysql
시동 을 걸다
$ sudo /app/mysql/bin/mysqld_safe &
[1] 2255
$ 150204 09:30:14 mysqld_safe Logging to '/app/mysql/data/ubuntu.err'.
150204 09:30:14 mysqld_safe Starting mysqld daemon with databases from /app/mysql/data
테스트
$ netstat -anp | grep 3306
(No info could be read for "-p": geteuid()=1000 but you should be root.)
tcp6 0 0 :::3306 :::* LISTEN -
포트 가 감청 되 어 성공 적 으로 설치 되 고 시작 되 었 습 니 다.
2.3 PHP 컴 파일
PHP 확장 패키지 가 좀 많 습 니 다. 저 희 는 직접 apt 를 설 치 했 습 니 다. 특별한 수요 가 있 으 면 지정 한 패키지 컴 파일 설치, 일반적인 컴 파일 방법 을 다운로드 할 수 있 습 니 다.
설치 의존
$ sudo apt-get install zlib1g-dev libbz2-dev libcurl4-gnutls-dev libjpeg-dev libpng12-dev libfreetype6-dev libmcrypt-dev libxml2-dev
컴 파일 설치
$ wget\ http://labfile.oss.aliyuncs.com/php-5.5.21.tar.gz
$ tar xf php-5.5.21.tar.gz
$ cd php-5.5.21
~/php-5.5.21$ ./configure --prefix=/app/php --with-bz2 --with-curl --with-jpeg-dir --with-gd --enable-shared --enable-mbstring --with-mcrypt --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --enable-fpm --enable-phar --enable-bcmath --with-zlib --enable-zip --enable-ftp --with-gettext --enable-sockets --with-freetype-dir --with-config-file-path=/app/php/etc/php.ini --with-config-file-scan-dir=/app/php/etc/conf.d --with-apxs2=/app/apache/bin/apxs
~/php-5.5.21$ make && make install
~/php-5.5.21$ cp php.ini-production /app/php/etc/php.ini
php 가 mysql 을 지원 하 는 지 확인 하 십시오. 다음은 지원 하 는 모듈 입 니 다.
~/php-5.5.21$ /app/php/bin/php -m | grep mysql
mysql
mysqli
mysqlnd
pdo_mysql
apache 프로필 수정
/etc/apache2/apache2.conf
, 다음 내용 추가, php 지원AddType application/x-httpd-php .php
apache 다시 시작
$ sudo /app/apache/bin/httpd
액세스 테스트
$ cat /app/apache/htdocs/index.php
echo phpinfo();
?>
브 라 우 저 를 사용 하여 방문 합 니 다. 정상 적 인 방문 상황 은 다음 과 같 습 니 다. apache 가 설정 되 어 있 음 을 설명 합 니 다.
LAMP 설정 및 조정
1. 아파 치 상용 설정
파일 내용 설정
새 아파 치 설정 파일 은 이미 매우 우아 합 니 다. 기본 매개 변수 몇 개 만 선택 하여 설명 합 니 다.
#apache
ServerRoot "/app/apache"
#
ServerAdmin [email protected]
#
Listen 80
#
DirectoryIndex index.php
# php
LoadModule php5_module modules/libphp5.so
# php
AddType application/x-httpd-php .php
디 렉 터 리 권한 매개 변수
DocumentRoot "/app/apache/htdocs" #WEB
# http://httpd.apache.org/docs/2.4/mod/core.html
Options Indexes FollowSymLinks
AllowOverride None
Require all granted #
AllowOverride 매개 변수 상세 설명
none 이 건 말 안 해도 되 죠?
AuthConfig 는 AuthDBMGroupFile AuthDBMUserFile AuthGroupFile AuthName AuthType AuthUserFile 과 Require 를 포함 한 모든 권한 명령 을 사용 할 수 있 습 니 다.
FileInfo 는 파일 제어 형식의 명령 을 사용 할 수 있 습 니 다.그것들 은 AddEncoding AddLanguage AddType DEfaultType ErrorDocument Language Priority 를 포함한다.
Indexes 는 디 렉 터 리 제어 형식의 명령 을 사용 할 수 있 습 니 다.AddDescription AddIcon AddIconByEncoding AddIconByType DefaultIcon Directory Index FancyIndexing HeaderName IndexIgnore IndexOptions ReadmeName Limit 는 권한 제어 명령 을 사용 할 수 있 습 니 다.Allow Deny 와 Order 를 포함 합 니 다.
Options 는 디 렉 터 리 특징 을 제어 하 는 명령 을 사용 할 수 있 습 니 다. Options 와 XbitHack 을 포함 합 니 다.
Options 매개 변수 상세 설명
All 은 MultiViews 를 제외 한 모든 특성 을 표시 합 니 다.이것 도 Options 명령 의 기본 설정 입 니 다.
None 는 서버 기능 을 사용 하지 않 음 을 표시 합 니 다.
Follow SymLinks 서버 는 이 디 렉 터 리 에 기호 연결 을 사용 할 수 있 습 니 다.이 설정 옵션 이 설정 단계 에 있 으 면 무 시 됩 니 다.
Indexes 입력 한 사이트 가 서버 에 있 는 파일 디 렉 터 리 에 대응 하면 이 디 렉 터 리 에는 DirectoryIndex 명령 이 없습니다 MultiViews 사용 가능 modnegotiation 모듈 은 콘 텐 츠 협상 의 '다 중 보기' 를 제공 합 니 다.클 라 이언 트 가 요청 한 경로 가 여러 종류의 파일 에 대응 할 수 있다 면 서버 는 클 라 이언 트 가 요청 한 구체 적 인 상황 에 따라 클 라 이언 트 가 요구 하 는 파일 을 자동 으로 선택 합 니 다.
SymLinks IfOwner Match 서버 는 기호 연결 이 대상 파일 이나 디 렉 터 리 소유자 와 같은 사용자 ID 를 가지 고 있 을 때 만 사용 합 니 다.기호 연결 과 기호 연결 이 가리 키 는 대상 파일 이나 디 렉 터 리 의 소유자 가 같은 사용자 일 때 만 기호 연결 을 사용 할 수 있 습 니 다.
ExecCGI mod 사용 허용cgi 모듈 에서 CGI 스 크 립 트 를 실행 합 니 다.
Includes 사용 가능 modinclude 모듈 이 제공 하 는 서버 엔 드 포함 기능 Includes NOEXEC 는 서버 에 포함 시 킬 수 있 으 나 '\ # exec cmd' 와 '\ # exec cgi' 를 사용 하지 않 습 니 다.그러나 ScriptAlias 디 렉 터 리 에서 '\ # include virtual' 가상 CGI 스 크 립 트 를 사용 할 수 있 습 니 다.
로그 설정 매개 변수
ErrorLog "logs/error_log"
LogLevel warn #
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common # common
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
CustomLog "logs/access_log" common # common
LogLevel 기록 로그 레벨
error 오류 상황 warn 경고 상황 info 일반 정보 debug 오류 단계 정보 로그 형식
% h - 클 라 이언 트 의 ip 주소 나 호스트 이름 % l - The 클 라 이언 트 identd 가 판단 하 는 RFC 1413 신분 입 니 다. 출력 중의 기호 "-" 이 곳 의 정보 가 잘못 되 었 음 을 표시 합 니 다 % u - HTTP 인증 시스템 에서 이 웹 페이지 를 방문 한 고객 이름 입 니 다.인증 이 있어 야 유효 합 니 다. 출력 중의 기호 "-" 이 곳 의 정보 가 유효 하지 않 음 을 표시 합 니 다 % t - 서버 가 요청 한 처리 시간 "% r" - 따옴표 에는 고객 이 보 낸 유용 한 정보 가 많이 포 함 된 요청 내용 % > s - 서버 가 클 라 이언 트 에 게 되 돌아 오 는 상태 코드 입 니 다 % b - 마지막 으로 이 항목 은 클 라 이언 트 에 게 응답 헤드 가 포함 되 지 않 은 바이트 수 를 되 돌려 줍 니 다.
"% {Referer} i" - 이 요청 은 어느 페이지 에서 제출 되 었 는 지 알려 줍 니 다 "% {User - agent} i" - 이 항목 은 클 라 이언 트 브 라 우 저 에서 제공 하 는 브 라 우 저 인식 정보 입 니 다.
실제 접근 로그
192.168.1.166 - - [04/Feb/2015:12:52:35 +0800] "GET / HTTP/1.1" 200 25
판단 매개 변수
하면, 만약, 만약...module 모듈 은 다음 과 같은 인 자 를 사용 합 니 다.
User daemon
Group daemon
가상 호스트 매개 변수
도 메 인 이름 기반 가상 호스트
DocumentRoot /web1
ServerName web1.com
ErrorLog /app/apache/logs/error_log
CustomLog /app/apache/logs/access_log combined
DocumentRoot /web2
ServerName web2.com
IP 기반 가상 호스트
DocumentRoot /web1
ServerName web1.com
DocumentRoot web2
ServerName web2.com
포트 기반 가상 호스트
Listen 172.20.30.40:80
Listen 172.20.30.40:8080
DocumentRoot /web1
ServerName web1.com
DocumentRoot /web2
ServerName web2.com
2. PHP 상용 설정
pp. ini 설정 파일 에 대한 자세 한 설명 은 앞에서 소개 한 매개 변 수 를 다시 설명 하지 않 습 니 다.
###
engine = On
short_open_tag = Off #tags
asp_tags = Off #asp tags
precision = 14 #
output_buffering = 4096 # header
implicit_flush = Off #
disable_functions = #
display_errors = Off #
log_errors = On #
request_order = "GP" #GET POST
register_argc_argv = On # argv argc
post_max_size = 8M # POST
file_uploads = On # HTTP
upload_tmp_dir = # HTTP
upload_max_filesize = 2M #
max_file_uploads = 20 #
allow_url_fopen = On # URLs http:.. ftp:...
default_socket_timeout = 60 # socker
#MySQL
mysql.allow_persistent = On #
mysql.cache_size = 2000 #
mysql.max_persistent = -1 # -1
mysql.max_links = -1 #
mysql.connect_timeout = 60 #
#session
session.save_handler = files # /
session.use_cookies = 1 # cookies
session.name = PHPSESSID # cookies
session.use_only_cookies = 1 # SESSION ID COOKIE
session.auto_start = 0 # session
session.cookie_lifetime = 0 #cookies
#session
session.gc_probability = 1 #
session.gc_divisor = 1000 # 1/1000 " "
#Session ID
session.use_trans_sid = 0 # URL session id
session.hash_function = 0 # SID MD5
session.hash_bits_per_character = 5 # SID bit
PHP 설정 관련 링크:
PHP 중국어 매 뉴 얼 http://php.net/manual/zh/
전체 php. ini 매개 변수 상세 설명 http://php.net/manual/zh/ini.php
3. LAMP 에서 자주 사용 하 는 변조 방법
LAMP 환경 에서 의 조정, 아래 의 모든 매개 변 수 는 네트워크 에서 나 오 므 로 실제 환경 에 따라 조정 하 십시오.
안정 적 인 perfork 작업 모드 를 바탕 으로 apache 메 인 프로필 아래 의 인 자 를 조정 합 니 다.
StartServers 50 # 50
MinSpareServers 15 #
MaxSpareServers 30 #
MaxClients 225 #
MaxRequestsPerChild 4000 #
프로 세 스 가 메모리 수 를 차지 하 는 지 ps aux 를 사용 하여 실제 환경 에서 의 인 자 를 조정 하여 모든 자원 이 소모 되 는 것 을 방지 하 십시오.
php. ini 상용 설정 매개 변수
max_execution_time 30 # CPU
max_input_time 60 # ( )
memory_limit 32M # , ( )
output_buffering 4096 # , ( )
MySQL 튜 닝, 이것 은 저도 잘 모 르 겠 습 니 다. MySQL 의 해당 실험 을 참고 하 십시오.
관련 링크:
실제 생산 환경 64GB 메모리 프로필http://cancait.blog.163.com/blog/static/21335744201351011939299/
my. cnf 온라인 으로 생 성 된 링크 를 드 립 니 다. http://imysql.cn/my_cnf_generator
더 자세 한 인 자 는 공식 매 뉴 얼 을 참고 하 세 요.
시스템 차원 의 조정 은 범위 내 에 있 지 않 으 니 간단하게 소개 해 드 리 겠 습 니 다.
ulimit 제한 해제 I / O 최적화 커 널 매개 변수 최적화 TCP 등. 4. 기타 고급 용법
Apache 모듈 을 apxs 로 수 동 으로 컴 파일 하기
공식 문서:http://httpd.apache.org/docs/2.4/programs/apxs.htmlmod_ssl :http://httpd.apache.org/docs/current/mod/mod_ssl.html
상용 매개 변수 소개
-c 。 C (.c)files (.o), , files (.o and .a), dsofile。 -o , files , , , mod_name.so
-i , modules 。
-a httpd.conf LoadModule , ## ## , , , 。
컴 파일 방법
/app/apache/bin/apxs –i –a –c mod_headers.c
# ssl
apxs -I/path/openssl/include -L/path/openssl/lib -c *.c -lcrypto -lssl -ldl
phpsize 를 사용 하여 PHP 모듈 을 수 동 으로 컴 파일 합 니 다.
#
cd php-5.5.21/ext/ftp
# phpize
/app/php/bin/phpize
# php-config
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
php. ini 로드 모듈
extension=ftp.so
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
요구사항 정의요구사항 정의 작성 방법 개요 ・목적 표시되고 있는 텍스트를 가변으로 한다 · 과제 표시된 텍스트가 변경되지 않음 ・해결 표시되고 있는 텍스트가 가변이 된다 사양 · 표시 정의 각 편집 화면 ○○ 표시되고 있는 텍스...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.