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

좋은 웹페이지 즐겨찾기