zoukankan      html  css  js  c++  java
  • CentOS安装与配置LNMP

    本文PDF文档下载:http://www.coderblog.cn/doc/Install_and_config_LNMP_under_CentOS.pdf

    本文EPUB文档下载:http://www.coderblog.cn/doc/Install_and_config_LNMP_under_CentOS.epub

    原文链接:http://www.coderblog.cn/article/36/

    CentOS安装与配置LNMP(1):Nginx安装与常用命令

    Nginx是一个轻量级的HTTP服务器,与庞大的Apache相比有以下优势,在性能上,它战用很少的系统资源,能支持更多的并发连接,达到更高的访问效率;在功能上,Nginx是优秀的代理服务器和负载均衡服务器;在安装配置上,Nginx安装简单、配置灵活。而CentOS又是最常用的网站服务器的Linux系统,本文将介绍购买VPS主机或者云主机后,如何在纯净系统下安装与配置Nginx。

    一、安装环境

    • 操作系统:CentOS
    • 安装软件:Nginx 1.6.0
    • 安装方式: yum
    • 安装说明:以下操作如无特别说明,请在root用户或者具有root权限的用户下执行

    二、安装

    一般CentOS系统的yum软件源中,都没有含有Nginx软件,故我们需要导入额外的yum软件源。

    rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm

    yum install nginx

    安装后的文件列表

    • 自启动脚本文件: /etc/init.d/nginx
    • 主程序文件: /usr/sbin/nginx
    • 配置文件目录: /etc/nginx/
    • 主配置文件: /etc/nginx/nginx.conf
    • 各站点的配置文件 /etc/nginx/conf.d/*.conf
    • 日志文件目录:/var/log/nginx/
    • 访问日志:/var/log/nginx/access.log
    • 错误日志:/var/log/nginx/error.log

    三、程序启动

    /etc/init.d/nginx start

    Or

    /etc/init.d/nginx restart

    如果你看到以下结果,表示Nginx程序已经成功启动了

    Starting nginx: [ OK ]

    四、查看网站

    一般网站服务器都没有提供图形化的界面,故我们需要通过远程在查看服务器上的网站,首先,获得网站服务器的IP。

    ifconfig

    然后我们就可以在浏览器里,输入http://服务器的IP/来查看我们的网站,如果你看到以下的结果,那么恭喜了,你的网站已经能够正常访问了

    Nginx Welcome Page

    五、Nginx的常用命令

    • 查看Nginx版本:nginx -v
    • 测试配置文件是否正确: nginx -t
    • 测试特定配置文件是否正确: nginx -t -c *filepath*
    • 启动/停止/重新启动

    /etc/init.d/nginx start

    /etc/init.d/nginx stop

    /etc/init.d/nginx restart

    • 修改配置文件后,不启动重新载入配置:nginx -s reload

    六、故障排除

    如果你的网站无法正常访问,请按以下步骤检查:

    1、查看80端口是否已被Nginx使用

    netstat -tlunp Or netstat -tlunp|grep :80

    如果有以下内容,则Nginx程序已正常监听80端口

    tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 573/nginx

    2、查看网站在本地是否能够访问

    curl http://localhost/ 如果返回Nginx欢迎页的HTML代码则正常

    3、80端口被系统阻止外部访问

    方法一:停用iptables服务

    iptables stop

    chkconfig iptables off

    方法二:开通80端口的外部访问

    /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT

    /etc/init.d/iptables save

    4、查看错误日志文件

    more /var/log/nginx/error.log

    CentOS安装与配置LNMP(2):Nginx优化

    在简单地安装完Nginx后,需要对其进行配置,如配置网站的文件路径,多网站共享同一端口,与PHP的结合,还有对其进行优化。

    一、主配置文件

    nginx的主配置文件路径:/etc/nginx/nginx.conf

    user  nginx;
    worker_processes  1;
    
    error_log  /var/log/nginx/error.log warn;
    pid        /var/run/nginx.pid;
    
    events {
        worker_connections  1024;
    }
    
    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /var/log/nginx/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        keepalive_timeout  65;
    
        #gzip  on;
    
        include /etc/nginx/conf.d/*.conf;
    }
    • user nginx; 运行nginx程序的用户
    • worker_processes 1; worker进程的个数,建议修改为和CPU的核数一样的数量,如4核CPU,则修改为4
    • error_log /var/log/nginx/error.log warn; 错误日志的文件路径与记录的日志类型
    • pid /var/run/nginx.pid; 存放Nginx进程号的文件,以后可通过此文件向Nginx发送信息,如 kill -HUP `cat /var/run/nginx.pid`
    • worker_connections 1024; worker支持的并发量,需要支持高并发量的服务器,可修改此值为65536,此修改必须与linux的内核配合才能发挥作用;
    • include /etc/nginx/mime.types; 设定mime类型,类型由mime.type文件定义
    • 定义日志格式,格式名称命令为main:

     

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                              '$status $body_bytes_sent "$http_referer" '
                              '"$http_user_agent" "$http_x_forwarded_for"';
    
    各字段意义如下:
    $remote_addr与$http_x_forwarded_for用以记录客户端的ip地址;
    $remote_user:用来记录客户端用户名称;
    $time_local: 用来记录访问时间与时区;
    $request: 用来记录请求的url与http协议;
    $status: 用来记录请求状态;成功是200,
    $body_bytes_sent :记录发送给客户端文件主体内容大小;
    $http_referer:用来记录从那个页面链接访问过来的;
    $http_user_agent:记录客户端浏览器的相关信息;                     
    • access_log /var/log/nginx/access.log main;日志文件路径,main为刚才定义的日志格式名称
    • sendfile on; sendfile指令指定 nginx 是否调用sendfile 函数(zero copy 方式)来输出文件,对于普通应用,必须设为on。如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络IO处理速度,降低系统uptime。
    • keepalive_timeout 65; keepalive的超时时间
    • include /etc/nginx/conf.d/*.conf; 此句是包含/etc/nginx/conf.d/目录下的.conf文件作为配置文件的内容

    二、主配置文件的一些额外设置

    1、打开gzip

    一般服务器的配置都比较强大,而网络带宽都比较小,利用gzip功能,在发送网页内将网页内容进行压缩,客户端浏览器在收到文件名,再进行解压缩,这样可以节省大量的网络带宽。 在主配置文件中加入以下选项:

    gzip  on;  #打开gzip
    gzip_min_length 1k;  #内容大小小于1KB的将不压缩,因为可能越压越大
    gzip_buffers 4 16k;  #gzip缓存设置系统获取4个16KB单位的缓存用于存储gzip的压缩结果数据流
    #gzip_http_version 1.0;
    gzip_comp_level 2;   #压缩级别
    gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php; #需要进行压缩的MIME TYPE
    gzip_vary off;
    gzip_disable "MSIE [1-6]."; #对于IE6以下的浏览器,不进行压缩

    2、提高文件上传的大小

    Nginx默认的可上传文件在大小只有1M,这远远不能满足我们的需求,因此可加入以下选项以提高上传文件大小。

    client_max_body_size 10m;

    三、网站配置文件路径

    Nginx的各网站配置文件存放在/etc/nginx/conf.d/目录下,每个.conf文件代表每一个独立的网站,我们来看一个经典的conf文件的结构,即/etc/nginx/conf.d/default.conf文件:

    server {
        listen       80;
        server_name  localhost;
    
        #charset koi8-r;
        #access_log  /var/log/nginx/log/host.access.log  main;
    
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
    
        #error_page  404              /404.html;
    
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ .php$ {
        #    proxy_pass   http://127.0.0.1;
        #}
    
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ .php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}
    
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /.ht {
        #    deny  all;
        #}
    }

    我们独个解读一下

    • 所有配置必须包括在server{}
    • listen 80 ; 监听80端口
    • server_name localhost; 通过网址名称与其它网站区分开,此处应该修改为你的申请的域名网址,多个网址请用空格分开,如:server_name www.coderblog.cn coderblog.cn;,另外,这里的网址也可以是正则表达式的形式,如server_name (www.)?coderblog.cn;
    • charset koi8-r; 文件编码,一般设置为charset utf-8;
    • access_log /var/log/nginx/log/host.access.log main; 访问日志的文件路径与需要记录的日志类型,main为nginx.conf定义的日志格式

    • 网站文件的存放路径,以及默认的文档名称,如,你访问http://www.coderblog.cn/,实际是访问http://www.coderblog.cn/index.htm

     

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    • error_page 404 /404.html; 当文件没有找到时,重定位到/404.html文件

    • 当发生 500 502 503 504错误时,重定位到/50x.html文件

     

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
       root   /usr/share/nginx/html;
    }
    • 配置某些文件禁止访问

     

    location ~ /.ht {
        deny  all;
    }

    四、修改配置后可能发生的错误

    修改配置文件后,可用nginx -t测试配置文件的正确性,以及需要用nginx -s reload重新载入配置文件。

    1、修改文件路径后,访问时发生403 Forbidden错误

    可能原因1:缺少默认文档文件,如root目录下缺少index.html index.htm以及任何一个默认文档文件,你那么你直接访问网站域名的时候,将发生403 Forbidden错误; 解决方法:添加至少一个默认文档到root目录下

    可能原因2:nginx用户在root目录下没有读权限,例如将root目录设置为/home/homeway,而该目录的权限为drwx------,即除了homeway用户外,其它用户没有读写权限。 解决方法:将root目录权限修改为777,即任何人可读可写可执行,执行命令 chmod 777 /home/homeway -R即可

    五、多网站共用80端口

    Nginx实现多网站共用80端口其实很简单,只要设置server_name属性即可;如:我有两个网站forum.coderblog.cn与blog.coderblog.cn,那么,我只需要在/etc/nginx/conf.d/下新增两个文件 /etc/nginx/conf.d/forum.coderblog.cn.conf

    listen       80;
    server_name  forum.coderblog.cn;

    /etc/nginx/conf.d/blog.coderblog.cn.conf

    listen       80;
    server_name  blog.coderblog.cn;

    好了,本文就先讲到这里,下一篇将讲NGINX与PHP结合。

    CentOS安装与配置LNMP(3):Nginx与PHP结合

    PHP可以说是目前最流行的网站首选语言,之前两篇文章已经讲了如果在CentOS环境下搭建与优化Nginx环境,本篇文章将讲述PHP在CentOS下的安装,并结合Spawn-fcgi与Nginx进行组合使用。

    一、PHP在CentOS下的安装

    截至目前为止,PHP最新版本为5.6.0,但实际生产环境中,PHP 5.3.3已经能够满足大部分程序的需求,运行比较稳定且扩展模块比较多,故推荐安装PHP 5.3.3版本。

    • 操作系统:CentOS
    • 安装软件:PHP 5.3.3
    • 安装方式: yum
    • 安装说明:以下操作如无特别说明,请在root用户或者具有root权限的用户下执行

    二、安装

    rpm -Uvh http://repo.webtatic.com/yum/el6/latest.rpm

    yum install php php-mysql php-gd php-gd php-mcrypt php-xml php-xcache php-mbstring

    安装后的文件列表

    • 配置文件 /etc/php.ini
    • 程序文件 /usr/bin/php-cgi,使用php-cgi -b port的形式即可让其监听某一端口,但一般不推荐以此种方式运行

    三、使用spawn-fcgi管理php进程

    spawn-fcgi是lightpd中的一个组件,可单独使用,请使用以下命令进行安装

    wget http://www.lighttpd.net/download/lighttpd-1.4.18.tar.bz2
    tar -xvjf lighttpd-1.4.18.tar.bz2
    cd lighttpd-1.4.18
    ./configure
    make
    make install

    常用命令:

    spawn-fcgi -C 5 -u nginx -g nginx -f /usr/bin/php-cgi -a 127.0.0.1 -p 9000

    参数解释:

    • -C 5 启动5个PHP进程进行处理
    • -u nginx -g nginx 以用户nginx及用户组nginx运行php
    • -f /usr/bin/php-cgi 指定php-cgi的文件路径
    • -a 127.0.0.1 -p 9000 监听的IP与端口

    运行之后,使用netstat -tlunp可看到如下信息

    Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
    tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      13320/php-cgi 

    此时如果使用kill -9 pid 的形式,spawn-fcgi会认为该进程崩溃了,马上又会启动另外一个进程,故需要多次执行kill命令,次数与-C 5 指定的进程数相关,故结束进程时推荐使用pkill php-cgi的形式,一次性杀死所有的php-cgi进程。

    四、配置Nginx的配置文件

    要使php与nginx进行结合,需要在网站配置文件里,增加对.php结尾的文件进行处理的语句,例子如下:

    location ~.php$ {
        root   /home/homeway/coder;
        index  index.html index.htm;
        fastcgi_index index.php;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_param  QUERY_STRING       $query_string;
        fastcgi_param  REDIRECT_STATUS    200;
        include       fastcgi_params;
    }

    主要配置解释:

    • location ~.php$ 匹配所有以.php结尾的文件,以便对其进行处理
    • fastcgi_index index.php; 首页文件
    • fastcgi_pass 127.0.0.1:9000; 将该文件传递给监听该端口的程序进行处理,也就是我们的php-cgi程序
    • include fastcgi_params; 此参数配置文件里需要进行两处修改

    /etc/nginx/fastcgi_params文件里增加以下信息(如果已有则跳过)

    # PHP only, required if PHP was built with --enable-force-cgi-redirect
    fastcgi_param  REDIRECT_STATUS    200;
    fastcgi_param  PATH_INFO          "";
    fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

    五、测试运行

    在网站的root路径下新增test.php文件,内容如下:

    <?php 
    echo phpinfo();
    ?>

    对该文件进行访问,如果出现了PHP的相关信息,则表示PHP已经成功运行了。

    PHP Info

    CentOS安装与配置LNMP(4):MySQL数据库

    MySQL数据库是最流行的关系型数据库之一,其功能与性能,足以满足大部分中小企业的需求,故在数据库选择中,首先MySQL数据库。本文将讲述MySQL数据库在CentOS下的安装,虽然与Nginx没有必然的联系,但作为整个Nginx系列文章的补充,希望能够形成完整的CentOS下网站运行环境搭建的教程。

    一、安装环境

    • 操作系统:CentOS
    • 安装软件:MySQL 5.1.73
    • 安装方式: yum
    • 安装说明:以下操作如无特别说明,请在root用户或者具有root权限的用户下执行

    二、安装

    yum install mysql mysql-server

    安装后的文件列表

    • /etc/my.cnf 配置文件
    • /usr/bin/mysql 文字界面的客户端程序
    • /etc/init.d/mysqld MySQL服务启动脚本
    • /usr/bin/mysqladmin 对MySQL进行管理配置的程序

    三、常用命令

    启动MySQL服务

    /etc/init.d/mysqld start 或者 service mysqld start

    设置为开机启动

    chkconfig mysqld on

    修改密码

    初次安装后,初始密码为空,为了网站的安全性,需要对密码进行修改,修改命令如下、

    mysqladmin -uroot -p password coderblog

    此时会要求你输入原来的密码,但因为初始密码为空,直接按回车即可。

    命令解释如下:

    • -u root -p 使用root用户登录,则需要输入密码
    • password coderblog 将密码修改为coderblog

    登录

    mysql -u用户 -p密码

    备份还原数据库

    mysqldump -u用户 -p密码 数据库名 > 文件路径

    如:

    mysqldump -uroot -pcoder coder > /home/homeway/coder.sql

    还原数据库

    进入mysql命令界面还原法:

    mysql -uroot -pcoder
    > create database coder;
    > source /home/homeway/coder.sql;
    > exit

    直接还原法: mysql -u用户 -p密码 数据库名 -e 'source 文件路径'

    -e为执行命令,执行后直接结束程序

    mysql -uroot -pcoder coder -e 'source /home/homeway/coder.sql'

    简单的优化配置

    /etc/my.cnf中新增如下内容

    default-character-set=utf8
    key_buffer_size = 256M
    max_allowed_packet = 4M
    thread_stack = 256K
    table_cache = 128K
    sort_buffer_size = 6M
    read_buffer_size = 4M
    join_buffer_size = 8M
    myisam_sort_buffer_size = 64M
    table_cache = 512
    thread_cache_size = 64
    query_cache_size = 64M
    tmp_table_size = 256M
    max_connections = 2048
    wait_timeout = 60
    thread_concurrency = 8

    CentOS安装与配置LNMP(5):使用GoAccess分析Nginx日志并发送邮件报告

    GoAccess是一款性能非常出色的日志分析软件,非常适合来分析Nginx产生的日志,并且可以形成HTML报告,通过Crontab定时任务,每天分析主机上的日志并发送报告到运维人员的邮箱,这样便可以对网站的运行情况了然于胸。

    一、安装软件

    • 日志分析软件 GoAccess : yum install goaccess
    • 邮件发送软件 Mutt : yum install mutt
    • SMTP软件 msmtp : yum install msmtp

    二、日常使用

    使用命令goaccess -f 日志文件路径来对一个日志文件进行分析,第一次启动时,会弹出一个对话框,询问日志文件的格式,如下图所示:

    GoAccess

    此时选择第三个,即NCSA Commbined Log Format ,使用空格键进行选择,然后回车确定,然后GoAccess就会以迅雷不及掩耳之势分析完整个日志文件。

    不想每次都对日志文件的格式进行选择的话,可以新建一个配置文件,比如~/.garc,内容如下:

    color_scheme 1
    date_format %d/%b/%Y
    log_format %h %^[%d:%^] "%r" %s %b "%R" "%u"

    然后,启动程序时,指定配置文件的路径即可:

    goaccess -p ~/.garc -f 日志文件路径

    三、测试邮件发送功能

    1、设置邮件发送帐户

    编辑msmtp的配置文件~/.msmtprc

    defaults
    account gmail
    tls on
    auth on
    host smtp.gmail.com
    port 587
    user 邮箱名称
    from 邮箱名称
    password 邮箱密码
    tls_starttls on
    tls_trust_file /etc/pki/tls/certs/ca-bundle.crt
    account default: gmail

    上面的例子是以GMail为例,大家可结合自己使用的邮箱进行设置,其中account gmail中的gmail为帐户标识,最后一行account default: gmail指定默认帐户为gmail,mutt发送邮件时使用默认帐户进行发送。

    也可以使用其它邮箱,不同的邮箱有些选项不太一样,如使用QQ邮箱,则需要关闭tls_starttls,下面列一个QQ邮箱的例子:

    defaults
    account qq
    tls on
    auth on
    host smtp.qq.com
    port 465
    user homeway88
    from homeway88@qq.com
    password 密码
    tls_starttls off
    tls_trust_file /etc/pki/tls/certs/ca-bundle.crt
    account default: qq

    2、配置mutt使用msmtp来发送邮件而不是sendmail

    默认mutt使用sendmail来发送邮件,如果你的主机没有架设邮局功能的话,发送的邮件只是发送到本机的帐户邮箱,而我们一般要使用外部smtp服务来将邮件发送到internet邮箱。

    编辑Mutt的配置文件/etc/Muttrc.Local,增加以下内容即可,注意发件人邮箱必须和上面指定的msmtp的发件人邮箱一致。

    set sendmail = "/usr/bin/msmtp"
    set from="发件人邮箱"  
    set sendmail="/usr/local/msmtp/bin/msmtp"  
    set use_from=yes   
    set realname="发件人"  

    3、使用mutt发送测试邮件

    mutt的常用发送邮件命令为

    echo "邮件内容"| mutt -s "邮件标题" -a 附件文件路径 -c 收件人邮箱

    四、定时生成日志报告并发送邮件

    分解任务

    • 定时 Crontab
    • 生成日志报告 GoAccess
    • 发送邮件 mutt

    定时任务的格式为:

    分 时 日 月 星期 命令

    假设我们要每天晚上23:59分生成日志报告,则使用crontab -e,然后添加以下内容即可

    59 23 * * * sh /home/homeway/report/nginx.sh

    然后新建/home/homeway/report/nginx.sh,输入以下内容

    DATE=$(date +%Y%m%d)
    mkdir /home/homeway/report/$DATE
    cd /home/homeway/report/$DATE
    cp /home/homeway/log/access.log .
    echo "" > /home/homeway/log/access.log
    cat *.log > all.log
    goaccess -f /home/report/$DATE/all.log -a -p ~/.garc > report.html
    echo "$DATE Report" | mutt -s "$DATE Report" -a /home/homeway/report/$DATE/report.html -c homeway88@qq.com

    命令解释如下:

    • DATE=$(date +%Y%m%d) 获取当前日期,格式为年月日,如20140101
    • 然后新建该日期的归档文件夹mkdir /home/homeway/report/$DATE,并把日志文件拷贝到该文件夹下和清空原来的日志文件,使用cat *.log > all.log是因为通常主机上都有多个文件,故需要把多个日志文件合并成一个。
    • goaccess -f /home/report/$DATE/all.log -a -p ~/.garc > report.html 分析日志并将结果输出到report.html文件
    • echo "$DATE Report" | mutt -s "$DATE Report" -a /home/homeway/report/$DATE/report.html -c homeway88@qq.com,将该报告文件作为附件发送到homeway88@qq.com邮箱。

    五、结束语

    至此,本系列的文章便告一段落啦,一边写文章一边改善博客,虽然花了很多时间,但是自己也很有收获,可以对所学的技巧作一个梳理,以免时间长了就忘了;也希望可对后来者起到一些帮助。

    由于本人精力有限,文章难免有错漏和不足之处,希望各位读者不吝赐教。

    文章:CentOS安装与配置LNMP

    作者:HomeWay88

    发表在: 程旭猿博客 http://www.coderblog.cn/

    原文链接:http://www.coderblog.cn/article/36/

    转载请注明出处

  • 相关阅读:
    python kivy 简单入门
    django 入门实例
    window docker安装
    apache进程和用户请求的关系
    php cookie工作原理
    react-router 简单的nginx配置
    node单线程支撑高并发原理(node异步I/O)
    知识图谱
    java
    java
  • 原文地址:https://www.cnblogs.com/chaofeng/p/3991530.html
Copyright © 2011-2022 走看看