zoukankan      html  css  js  c++  java
  • LNMP环境配置

    LAMP与LNMP 不同之处Nginx,N比A在静态上厉害 ,在动态上A比N厉害。

    1.1 安装mysql 与lamp一样

    1.2 安装php 与之前编译不同

    (1)下载 wget   解压 tar

    (2)编译 

     ./configure --prefix=/usr/local/php-fpm --with-config-file-path=/usr/local/php-fpm/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --disable-ipv6 --with-pear --with-curl --with-openssl

    (3)安装

    make && make install

    (4)修改配置文件

    cp php.ini-production /usr/local/php-fpm/etc/php.ini

    vim /usr/local/php-fpm/etc/php-fpm.conf 写入

    [global]
    pid = /usr/local/php-fpm/var/run/php-fpm.pid
    error_log = /usr/local/php-fpm/var/log/php-fpm.log
    [www]
    listen = /tmp/php-fcgi.sock
    listen.mode = 666
    user = php-fpm
    group = php-fpm
    pm = dynamic
    pm.max_children = 50
    pm.start_servers = 20
    pm.min_spare_servers = 5
    pm.max_spare_servers = 35
    pm.max_requests = 500
    rlimit_files =1024

    检验配置是否正确

    /usr/local/php-fpm/sbin/php-fpm -t

     successful 成功 !!!

    (5)启动php-fpm

    cp /usr/local/src/php-5.6.36/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

    chmod 755 /etc/init.d/php-fpm

    useradd -s /sbin/nologin php-fpm

    service php-fpm start

    设置php-fpm开机启动

    chkconfig php-fpm on

    检测php-fpm是否启动

    ps aux |grep php-fpm

     会显示二十多个进程

    1.3安装Nginx

    (1)下载wget 解压 tar

    (2)配置编译

    ./configure --prefix=/usr/local/nginx

    (3)安装

    make && make install

    (4)编写启动脚本

    vim /etc/init.d/nginx

    #!/bin/bash
    # chkconfig: - 30 21
    # description: http service.
    # Source Function Library
    . /etc/init.d/functions
    # Nginx Settings
    NGINX_SBIN="/usr/local/nginx/sbin/nginx"
    NGINX_CONF="/usr/local/nginx/conf/nginx.conf"
    NGINX_PID="/usr/local/nginx/logs/nginx.pid"
    RETVAL=0
    prog="Nginx"
    start()
    {
    echo -n $"Starting $prog: "
    mkdir -p /dev/shm/nginx_temp
    daemon $NGINX_SBIN -c $NGINX_CONF
    RETVAL=$?
    echo
    return $RETVAL
    }
    stop()
    {
    echo -n $"Stopping $prog: "
    killproc -p $NGINX_PID $NGINX_SBIN -TERM
    rm -rf /dev/shm/nginx_temp
    RETVAL=$?
    echo
    return $RETVAL
    }
    reload()
    {
    echo -n $"Reloading $prog: "
    killproc -p $NGINX_PID $NGINX_SBIN -HUP
    RETVAL=$?
    echo
    return $RETVAL
    }
    restart()
    {
    stop
    start
    }
    configtest()
    {
    $NGINX_SBIN -c $NGINX_CONF -t
    return 0
    }
    case "$1" in
    start)
    start
    ;;
    stop)
    stop
    ;;
    reload)
    reload
    ;;
    restart)
    restart
    ;;
    configtest)
    configtest
    ;;
    *)
    echo $"Usage: $0 {start|stop|reload|restart|configtest}"
    RETVAL=1
    esac
    exit $RETVAL

    更改文件权限

    chmod 755 /etc/init.d/nginx

    chkconfig --add nginx

    chkconfig nginx on

    (5)更改Nginx的配置文件

    清空原来配置文件

    > /usr/local/nginx/conf/nginx.conf

    写下内容

    vim /usr/local/nginx/conf/nginx.conf

    user nobody nobody;
    worker_processes 2;
    error_log /usr/local/nginx/logs/nginx_error.log crit;
    pid /usr/local/nginx/logs/nginx.pid;
    worker_rlimit_nofile 51200;
    events
    {
    use epoll;
    worker_connections 6000;
    }
    http
    {
    include mime.types;
    default_type application/octet-stream;
    server_names_hash_bucket_size 3526;
    server_names_hash_max_size 4096;
    log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]'
    ' $host "$request_uri" $status'
    ' "$http_referer" "$http_user_agent"';
    sendfile on;
    tcp_nopush on;
    keepalive_timeout 30;
    client_header_timeout 3m;
    client_body_timeout 3m;
    send_timeout 3m;
    connection_pool_size 256;
    client_header_buffer_size 1k;
    large_client_header_buffers 8 4k;
    request_pool_size 4k;
    output_buffers 4 32k;
    postpone_output 1460;
    client_max_body_size 10m;
    client_body_buffer_size 256k;
    client_body_temp_path /usr/local/nginx/client_body_temp;
    proxy_temp_path /usr/local/nginx/proxy_temp;
    fastcgi_temp_path /usr/local/nginx/fastcgi_temp;
    fastcgi_intercept_errors on;
    tcp_nodelay on;
    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 8k;
    gzip_comp_level 5;
    gzip_http_version 1.1;
    gzip_types text/plain application/x-javascript text/css text/htm
    application/xml;
    server
    {
    listen 80;
    server_name localhost;
    index index.html index.htm index.php;
    root /usr/local/nginx/html;
    location ~ .php$
    {
    include fastcgi_params;
    fastcgi_pass unix:/tmp/php-fcgi.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
    }
    }
    }

    检查是否正确

    /usr/local/nginx/sbin/nginx -t

    正确 。

    (6)启动Nginx

    service nginx start 

    // 如果启动失败

    检查nginx是否启动 ps aux |grep nginx

    没有启动成功 

     

     发现80端口被占用

    查看80端口

     kill -9 端口号杀死进程

    杀光80端口进程之后 重新启动

     成功!

    再查看Nginx是否启动成功

     成功!

    (7)测试是否能解析php

    创建文件 编写内容

     解析正常!

    1.4Nginx配置

    (1)默认虚拟主机

     // 第一个被Nginx加载的虚拟主机就是默认主机。但是可以标记,也就是被标记的主机就是默认虚拟主机,没有标记第一个虚拟主机就是默认虚拟主机。

    修改主配置文件在nginx.conf中加入如下

     //意思就是在/usr/local/nginx/conf/vhost下所有文件都以.conf结尾的文件都加载

    所有的虚拟主机配置文件都放在vhost目录下

    vim default.conf 写入

     检查是否正确 -t

    重新加载文件 -s reload

    echo "default_server" > /data/nginx/default/index.html //创建索引页

    访问 

     访问一个没有定义过的域名,也会访问aaa.com

     (2)用户认证

    重建文件 vim test.com.conf 写入如下

     创建用户密码

    htpasswd -c /usr/local/nginx/conf/htpasswd aaa

    检测 -t 重新加载 -s reload

    mkdir /data/nginx/test.com //创建文件写入内容

    echo "test.com" > /data/nginx/test.com/index.html 

    curl 

     回401需要用户认证

    在hosts加入192.168.200.17 test.com

    浏览器访问 

     针对某个目录 需要修改location

     访问admin目录需要密码

    访问test.com正常

     

    (3) 域名重定向 

    与httpd相似但是更容易理解,改写如下

     server_name后面可以跟多个域名,permanent为永久重定向,相当于httpd的301,这里用到的是redirect,相当于httpd的R=302.

    检查错误-t 重新加载文件-s reload

    curl

    (4) 访问日志

    查看Nginx的日志格式

     $remote_addr 为访问网站的用户的出口IP; $http_x_ forwarded_ for 为代理服务器的IP,如果使用了代理,则会记录代理的IP; $time_local为当前的时间; $host为访问的主机名; $request_uri为访问的URL地址; $status 为状态码; $http_ referer 为referer地址; $http_ user _agent为user_ agent。

     写入如下  access_log /tmp/1.log combined_realip;

    查看

     日志切割脚本

    1.4.5配置静态文件不记录日志并添加过期时间

    修改如下

     location~可以指定对应静态文件,expires配置过期时间,access_log配置为off就可以不记录访问日志。

    检测错误 -t 重新加载 -s reload

    建立js jpg 和对比的jss文件

    curl测试 //Cache-Control是对应时间

    查看日志 发现只记录了 jss文件 

    1.4.6 Nginx防盗链

    修改配置文件为

     访问其他网址403无法访问,允许的访问成功。

     1.4.7 访问控制

    限制IP

    allow允许 deny 拒绝 

    限制admin目录只允许192.168.200.17访问 其他的都拒绝

       | 表示分隔符 或者的意思 意思是可以访问带有abc或image的字符串,并且是PHP的请求拒绝访问。

     

    也可以针对的user_augent中 ~意思是匹配号,只要u中含有S Y T字符串的都拒绝,return 403 是直接返回403,也可以是别的。

     1.4.8 Nignx解析PHP

    PHP配置

    test.com.conf中

     fastcgi_pass用来指定php-fpm,这个地址一定要和php-fpm服务监听的地址匹配

    1.4.9Nginx代理

    如果Nginx中有多台Web服务器,如果同时代理,那么Nginx在这里起到一个负载均衡的作用。vim proxy.conf 写入如下内容

    Proxy_pass指定要代理的域名所在的服务器的IP

    后三行为定义发往后端Web服务器的请求头,第二行必须有,表示后端Web服务器的域名和当前配置文件中的server_name保持一致,三四行是日志格式。

    验证加载

    安装dig  yum install -y bind-utils

     dig查看对应域名的IP

     可以看到是有两个IP,都可以访问www.baidu.com

    curl 测试

     配置负载均衡

    vim /usr/local/nginx/conf/vhost/load.conf 写入

     验证重新加载 curl测试

     这是自己的虚拟机可以访问www.baidu.com.这个就是代理的作用。

    1.4.10 Nignx配置SSL

    自定义生成一对ssl证书

    配置如下

     生成key文件(私钥) 2048是加密字符串的长度,输入密码

     把刚生成的tmp.key转换成aminglinux.key 目的是删除刚才设置的密码,如果key文件有密码,则必须在Nginx加载它的时候输入它的密码,很不方便

     

     这一步是生成证书请求文件,并不是公钥,但是必须有这个文件,要用key文件和这个csr文件一起生成最终的公钥文件。

     这样最终生成了crt证书,也就是公钥。

    这样的目的就是生成aminglinux.key和aminglinux.crt两个文件,用这两个文件配置Nginx,

    vim /usr/local/nginx/conf/vhost/ssl.conf 

    保存之后 检查配置出错。因为Nginx并不支持ssl,所以重新编译安装

     再次测试 并创建对应的目录和测试文件

    在hosts中写入

    192.168.200.17 aming.com

    用浏览器访问

    会提示不安全,因为是自己制作的所以没有浏览器的认可。

    1.5 php-fpm的配置

    1.5.1php-fpm的pool

     Nginx可以配置多个虚拟主机,php-fpm也同样可以配置多个pool

    编辑如下 加入include一行

     

     创建配置文件目录和子配置文件

    mkdir /usr/local/php-fpm/etc/php-fpm.d

    vim www.conf

     vim aming.conf

     这样就有两个pool,第一个pool监听/tmp/www.sock 第二个监听/tmp/aming.sock

    检查一下配置

     重启下一php-fpm服务

     查看/tmp/目录下sock文件

     1.5.2 php-fpm 的慢执行日志

    vim www.conf

     1.5.3 php-fpm 定义 open_basedir

  • 相关阅读:
    Java实现 蓝桥杯 算法训练 Number Challenge(暴力)
    Java实现 蓝桥杯 算法训练 Number Challenge(暴力)
    Java实现 蓝桥杯 算法训练 Number Challenge(暴力)
    Java实现 蓝桥杯 算法训练 Rotatable Number(暴力)
    Java实现 蓝桥杯 算法训练 Rotatable Number(暴力)
    Java实现 蓝桥杯 算法训练 Rotatable Number(暴力)
    Java实现 蓝桥杯 算法训练 猴子吃包子(暴力)
    Java实现 蓝桥杯 算法训练 猴子吃包子(暴力)
    Java实现 蓝桥杯 算法训练 猴子吃包子(暴力)
    Python位运算符
  • 原文地址:https://www.cnblogs.com/Job123/p/12132122.html
Copyright © 2011-2022 走看看