lnmp 설치 설정

15009 단어 서버web
전체 프로필
Lnmp 구조 (Linux + nginx + my sql + phop) 는 현재 사이트 의 주류 구조 로 이 구 조 는 한 사이트 의 가장 기본 적 인 요 구 를 포함한다. 운영 환경 + 웹 용기 + 동적 페이지 처리 + 저장.물론 같은 주류 구조 에 lamp 도 있 지만 개인 적 으로 nginx 의 성능 이 현재 추세 에서 한 수 위 라 고 생각 합 니 다.
 
2. Nginx 우세
Nginx 는 고성능 웹 서버, 역방향 프 록 시 서버, 부하 균형 서버 로 고성능 은 주로 이벤트 구동 을 바탕 으로 하 는 I / O 모델 을 도입 하여 높 은 병행 을 지원 하고 메모리 자원 을 적 게 차지 하 는 데 나타난다.웹 서버 로 서 nginx 는 apache 보다 더 적은 자원 을 사용 하고 더 많은 병렬 연결 을 지원 합 니 다. nginx 는 정적 파일, 색인 파일 을 처리 하고 자동 색인 의 효율 이 매우 높 습 니 다.역방향 프 록 시 서버 로 서 nginx 는 캐 시 없 는 역방향 프 록 시 를 실현 하여 사이트 운행 속 도 를 높 일 수 있 습 니 다.nginx 는 부하 균형 서버 로 서 내부 적 으로 Rails 와 PHP 를 지원 할 수도 있 고 HTTP 프 록 시 서버 를 지원 해 대외 적 으로 서 비 스 를 할 수도 있다.간단 한 용 착 과 알고리즘 을 이용 하여 부하 균형 을 이 루 는 것 도 지원 합 니 다.
 
3. 설치 설정
1. 설치 설정 nginx
홈 페이지 에서 nginx 의 원본 패키지 다운로드:http://nginx.org/en/download.html
여기 서 제 가 선택 한 건 nginx - 1.12.0. tar. gz 입 니 다.
 
1) 압축 해제 소스 패키지
[root@server1 ~]# tar zxf nginx-1.12.0.tar.gz

2) 소스 패키지 설치
[root@server1 nginx-1.12.0]# cd auto/cc
[root@server1 cc]# vim gcc
# debug
#CFLAGS="$CFLAGS -g"                      ###      ,     debug  ,nginx        
 
[root@server1 nginx-1.12.0]# cd src/core
#define NGINX_VER          "nginx"            ###              nginx   
 
[root@server1 nginx-1.12.0]# yum install pcre-devel -y         ###     
[root@server1 nginx-1.12.0]# ./configure --prefix=/usr/local/lnmp/nginx --with-threads --with-file-aio --with-http_ssl_module --with-http_stub_status_module
###             ,         :      、     、l        io、  ngx_http_stub_status_module  (          nginx     ,       ,      )、  ngx_http_ssl_module  
[root@server1 nginx-1.12.0]# make&&make install
 
[root@server1 nginx-1.12.0]# cd /usr/local/lnmp/nginx/
[root@server1 nginx]# ln -s /usr/local/lnmp/nginx/sbin/nginx  /usr/local/sbin/
###    ,    

 
3) 설정 nginx
 nginx 의 설정 디 렉 터 리 는 / usr / local / lnmp / nginx / conf / nginx. conf 입 니 다.
 
[root@server1 nginx]# cd conf
[root@server1 conf]# useradd -u 800 nginx              ###  nginx  
[root@server1 conf]# vim nginx.conf
user  nginx nginx;                         ###  nginx  
worker_processes  2;###     ,    cpu   
worker_cpu_affinity 01 10;###     cpu,  cpu   01 10   cpu  0001 0010 0100 1000
 
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
 
#pid        logs/nginx.pid;
 
 
events {
    worker_connections  4096;             ###       ,            sysctl -a | grep file     
}
 
[root@server1 conf]# vim /etc/security/limits.conf     ###  nginx                      ,                               4096, ulimit -a        
nginx           -       nproc           4096
nginx           -       nofile           4096
 
[root@server1 conf]# su nginx
[nginx@server1 conf]$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 14868
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 4096
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 4096
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
[root@server1 conf]# nginx -t
[root@server1 conf]# nginx
 
###    server
[root@server1 conf]# vim nginx.conf
 
server {
        listen  80;
        server_name www.westos.com;
        location / {
        root    /web1;                  ###    
        index   index.html;
                }
        }
server {
        listen  80;
        server_name www.linux.com;
        location / {
        root    /web2;
        index   index.html;
                }
        }
[root@server1 conf]# mkdir /web1
[root@server1 conf]# mkdir /web2
[root@server1 conf]# echo 'westos' > /web1/index.html
[root@server1 conf]# echo 'linux' > /web2/index.html
[root@server1 conf]# nginx -t
[root@server1 conf]# nginx -s reload
###    
[root@server1 conf]# curl -I www.westos.com      ### url  
HTTP/1.1 200 OK
Server: nginx
Date: Sun, 14 May 2017 06:00:25 GMT
Content-Type: text/html
Content-Length: 7
Last-Modified: Sun, 14 May 2017 05:40:05 GMT
Connection: keep-alive
ETag: "5917edb5-7"
Accept-Ranges: bytes
 
 
 
###  https
[root@server1 conf]# vim nginx.conf
 
    # HTTPS server
 
server {
    listen       443 ssl;
    server_name  localhost;
 
    ssl_certificate      cert.pem;
    ssl_certificate_key  cert.pem;         ###          key         
 
    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;
 
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;
 
    location / {
        root   html;
        index  index.html index.htm;
    }
}
 
[root@server1 conf]# cd /etc/pki/tls/certs/
[root@server1 certs]# ls
ca-bundle.crt        make-dummy-cert  renew-dummy-cert
ca-bundle.trust.crt  Makefile
[root@server1 certs]# make cert.pem                ###         
umask 77 ; \
PEM1=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
PEM2=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
/usr/bin/openssl req -utf8 -newkey rsa:2048 -keyout $PEM1 -nodes -x509 -days 365 -out $PEM2 -set_serial 0 ; \
cat $PEM1 >  cert.pem ; \
echo ""    >> cert.pem ; \
cat $PEM2 >> cert.pem ; \
rm -f $PEM1 $PEM2
Generating a 2048 bit RSA private key
...............................................................................................................+++
............................+++
writing new private key to '/tmp/openssl.f7Dpjt'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Shaanxi
Locality Name (eg, city) [Default City]:xi'an
Organization Name (eg, company) [Default Company Ltd]:westos
Organizational Unit Name (eg, section) []:linux
Common Name (eg, your name or your server's hostname) []:server1
Email Address []:root@localhost
[root@server1 certs]# mv cert.pem  /usr/local/lnmp/nginx/conf/     ###     nginx      
[root@server1 certs]# nginx -t      ###      
[root@server1 certs]# nginx -s reload   ###    nginx
 
 
###   
[root@server1 conf]# vim nginx.conf
 
server {
        listen  80;
        server_name www.princekin.com;               ###      www.princekin.com       https://www.prince.com
        rewrite ^(.*) https://www.prince.com;
        }
[root@server1 conf]# nginx -t
[root@server1 conf]# nginx -s reload
 
 
###         
[root@server1 conf]# vim nginx.conf
###  upstream       
http {
        upstream westos {
                server 172.25.45.2:80;
                server 172.25.45.3:80;
                server 172.25.45.1:8080 backup;   ### 2 3      1,1   
        }
###  proxy_pass      
server {
        listen  80;
        server_name www.westos.com;
        rewrite ^(.*) http://www.linux.com;
        }
server {
        listen  80;
        server_name www.linux.com;
        location / {
                proxy_pass http://westos;
                }
        }
 
###  http8080   http  nginx     
[root@server1 conf]# yum install httpd -y
[root@server1 conf]# vim /etc/httpd/conf/httpd.conf 
ServerName 172.25.45.1
Listen 8080
 
[root@server1 conf]# vim /var/www/html/index.html
   
[root@server1 conf]# /etc/init.d/httpd start
 
        server2 server3      nginx  httpd  
###    
[root@server1 conf]# for i in {1..10}; do curl www.linux.com;done

server3

server2

server3

server2

server3

server2

server3

server2

server3

server2


 
 
 
2. 설치 설정 mysql
홈 페이지 에서 다운로드:https://www.mysql.com/downloads/
my sql - boost - 5.7.17. tar. gz (boost 가 없 는 것 도 내 려 갈 수 있 습 니 다. 가방 은 작 지만 컴 파일 할 때 boost 가방 을 따로 다운로드 해 야 합 니 다)
원본 패 키 지 를 컴 파일 할 때 의존 적 으로 설치 해 야 합 니 다:
gcc gcc-c++ ncurses-devel bison openssl-devel zlib-devel cmake (시스템 자체 버 전이 너무 낮 으 면 홈 페이지 에서 최신 버 전에 있어 야 합 니 다)
[root@server1 mysql-5.7.17]# yum install -y gcc gcc-c++ make ncurses-devel bison openssl-devel zlib-devel cmake
[root@server1 mysql-5.7.17]# tar zxvf mysql-boost-5.7.12.tar.gz
[root@server1 mysql-5.7.17]# cd mysql-5.7.17
[[email protected]]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
#    
-DMYSQL_DATADIR=/usr/local/mysql/data \
#       
-DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock \ #Unix socket     
-DWITH_MYISAM_STORAGE_ENGINE=1 \
#   myisam     
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
#   innodb     
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
#   archive     
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
#   blackhole     
-DWITH_PARTITION_STORAGE_ENGINE=1 \
#       
-DENABLED_LOCAL_INFILE=1 \
#         
-DWITH_READLINE=1 \
#     
-DWITH_SSL=yes \
#   SSL
-DDEFAULT_CHARSET=utf8 \
#   utf8   
-DDEFAULT_COLLATION=utf8_general_ci \
#    
-DEXTRA_CHARSETS=all \
#         
-DMYSQL_TCP_PORT=3306 \
#MySQL             
-DWITH-BOOST=boost/boost_1_59_0/
 
[root@server1 mysql-5.7.17]# make && make install
 
###     ,               
make clean
rm -f CmakeCache.txt
 
[root@server1 mysql-5.7.17]# cd /usr/local/lnmp/mysql
[root@server1 mysql]# cd support-files
[root@server1 support-files]# cp my-default.cnf /etc/my.cnf
[root@server1 support-files]# cp mysql.server /etc/init.d/mysqld
[root@server1 mysql]# useradd -u 27 -s /sbin/nologin mysql
[root@server1 mysql]# groupmod -g 27 mysql
[root@server1 mysql]# chown mysql.mysql -R .
 
[root@server1 bin]# vim ~/.bash_profile 
PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin        ###      
[root@server1 bin]# source ~/.bash_profile 
 
[root@server1 mysql]# mysqld --initialize --user=mysql   ###   
2017-05-14T05:22:13.918714Z 1 [Note] A temporary password is generated for root@localhost: XUpjk0SNh4+C      ###   root     
 
[root@server1 mysql]# /etc/init.d/mysqld start   ###    
[root@server1 mysql]# mysql -p
Enter password:                       ###         ,  mysql
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.   ###          
mysql> alter user root@localhost identified by 'Lee+88888';  
Query OK, 0 rows affected (0.00 sec)
###           ,    ,    8 
 
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)
 
###      
[root@server1 mysql]# mysql_secure_installation -p
Enter password: 
 
Securing the MySQL server deployment.
 
 
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
 
Press y|Y for Yes, any other key for No: 
Using existing password for root.
Change the password for root ? ((Press y|Y for Yes, any other key for No) : 
 
 ... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
 
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.
 
 
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
 
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.
 
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
 
 
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
 - Dropping test database...
Success.
 
 - Removing privileges on test database...
Success.
 
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
 
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.
 
All done!

3. 설정 php 설치
php 홈 페이지 다운로드:http://php.net/downloads.php
[root@server1 ~]# tar jxf php-5.6.20.tar.bz2

 
 
다운로드 할 의존 패키지:
libmcrypt-2.5.8-9.el6.x86_64.rpm libmcrypt-devel-2.5.8-9.el6.x86_64.rpm  re2c-0.13.5-1.el6.x86_64.rpm   gd-devel-2.0.35-11.el6.x86_64.rpm 
 
[root@server1 ~]# yum install libmcrypt-2.5.8-9.el6.x86_64.rpm libmcrypt-devel-2.5.8-9.el6.x86_64.rpm re2c-0.13.5-1.el6.x86_64.rpm gd-devel-2.0.35-11.el6.x86_64.rpm
 
[root@server1 php-5.6.20]# yum install net-snmp-devel gmp-devel curl-devel libxml2-devel -y
 
[root@server1 php-5.6.20]# ./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --with-mysql --with-mysqli --with-pdo-mysql --enable-mysqlnd --with-openssl --with-snmp --with-gd --with-zlib --with-curl --with-libxml-dir --with-png-dir --with-jpeg-dir --with-freetype-dir --with-pear --with-gettext --with-gmp --enable-inline-optimization --enable-soap --enable-ftp --enable-sockets --enable-mbstring --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-mcrypt --with-mhash
 
[root@server1 php-5.6.20]# make && make install
[root@server1 php-5.6.20]# cd /usr/local/lnmp/php
[root@server1 php]# cd etc/
[root@server1 etc]# cp php-fpm.conf.default  php-fpm.conf
[root@server1 php-5.6.20]# cp php.ini-production /usr/local/lnmp/php/etc/php.ini
[root@server1 php-5.6.20]# cd /usr/local/lnmp/php/etc/
[root@server1 etc]# vim php.ini 
 
date.timezone = Asia/Shanghai                ###    
pdo_mysql.default_socket=/usr/local/lnmp/mysql/data/mysql.sock 
mysqli.default_socket = /usr/local/lnmp/mysql/data/mysql.sock
mysql.default_socket = /usr/local/lnmp/mysql/data/mysql.sock
###  mysql.sock
 
[root@server1 etc]# vim php-fpm.conf
 
[global]
; Pid file
; Note: the default prefix is /usr/local/lnmp/php/var
; Default Value: none
pid = run/php-fpm.pid             ###    
 
[root@server1 etc]# cd ~/php-5.6.20/sapi/fpm/
[root@server1 fpm]# cp init.d.php-fpm /etc/init.d/php-fpm  ###  php-fpm    /etc/init.d
[root@server1 fpm]# chmod +x /etc/init.d/php-fpm         ###     
[root@server1 fpm]# /etc/init.d/php-fpm start

좋은 웹페이지 즐겨찾기