Linux&&nginx网站服务

nginx服务基础

**优势:**稳定性和低系统资源消耗,以及对HTTP并发连接的高处理能力

单台物理服务器可支持30000~50000个并发请求

Apache与nginx的区别:

apache是多进程的web服务;适合CPU密集型业务(CPU计算、sql查询等);
nginx是单进程的web服务;适合IO密集型业务(视频、音频站点等);高并发能力强;

多进程与单进程:

多个客户端请求由多个进程处理
多个客户端请求由单个进程处理
由于非CPU密集型业务占用CPU时间非常短,因此可以交由nginx的单进程快速处理而不会耽误处理其他业务。
如果nginx遇到了CPU密集型业务占据CPU时间比较多,cpu等待会影响其他业务的执行
服务器几核cpu就可以设置nginx启动几个单进程。

安装与运行控制

#预安装软件包
yum  -y  install  pcre-devel  zlib-devel
#创建运行用户、组
useradd  -M  -s  /sbin/nologin  nginx
#编译、安装nginx
tar  zxf  nginx-1.6.0.tar.gz
cd  nginx-1.6.0
./configure  --prefix=/usr/local/nginx  --user=nginx  --group=nginx  --with-http_stub_status_module
make  &&  make install
#创建链接文件
ln  -s  /usr/local/nginx/sbin/nginx  /usr/local/sbin/
ls  -l  /usr/local/sbin/nginx
#配置文件测试
nginx  -t
#启动nginx.使用默认配置文件;“-c  配置文件路径”选项可指定其他配置文件来启动。
nginx
#安装elinks浏览器。使用命令lynx也可以查看目标网页效果
yum  -y  install  elinks
#查看nginx测试页
elinks  http://localhost
#重新配置。选项“-s  HUP”等同于“-1”。等同于reload
killall  -s  HUP  nginx
#退出进程。选项“-s  QUIT”等同于“-3”。等同于stop
killall  -s  QUIT  nginx
#编写nginx服务脚本
vim  /etc/init.d/nginx
    #!/bin/bash
    #-  :  代表在所有运行级别当中都可以交由chkconfig管理控制
    #chkconfig:  -  99  20
    #description:Nginx Service Control Script
    PROG="/usr/local/nginx/sbin/nginx"  //主程序路径
    PIDF="/usr/local/nginx/log/nginx.pid"  //PID存放路径
    case  "$1"  in 
        start)
           $PROG
           ;;
       stop)
           kill  -s  QUIT  $(cat  $PIDF)  //根据PID终止nginx级才能拿
           ;;
       restart)
           $0  stop
           $0  start
           ;;
       reload)
           kill  -s  HUP  $(cat  $PIDF)  //根据PID重载配置
       *)
           echo  "Usage : $0 {start|stop|restart|reload}"
           exit 1
       esac
       exit 0
#添加可执行权限
chmod  +x  /etc/init.d/nginx
#添加开机运行
chkconfig  --add  nginx

–with-http_stub_status_module : 模块。支持状态统计,便于查看服务器的连接信息。
./configure --help : 查看nginx可用的全部选项。

配置文件nginx.conf

vim  /usr/lcoal/nginx/conf/nginx.conf
    #第一大块:全局配置
    #user  nobody;  //运行用户
    worker_processes  1;  //工作进程数量
    #error_log  logs/error.log;  //错误日志文件位置
    #pid  logs/nginx.pid;  //PID文件的位置
    
    #第二大块:IO事件配置
    #使用“events {}”界定标记,用来指定nginx进程的IO相应模型、每个进程处理的连接数。
    events {
        use  epoll;  //使用epoll模型
        worker_connections  4096;  //每个进程处理4096个连接
    }
    #第三大块:HTTP配置
    #使用“http {}”界定标记,包括访问日志、HTTP端口、网页目录、默认字符集、连接保持以及虚拟web主机、PHP解析。
    #子界定标记为“server {}”。多站点对应多子界定标记“server {}”或多配置文件。
    http {
        include  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  logs/access.log  main;  //访问日志位置
        sendfile  on;  //支持文件发送(下载)
        #tcp_nopush  on;
        keepalive_timeout  65;  //连接保持超时
        #gzip  on;
        #子#子界定标记为-站点1
        server {  //站点1的监听配置
            listen  80;  //监听地址及端口
            server_name  www.test.com;  //网站名称(FQDN)
            charset  utf-8;  //网页的默认字符集
            location  /  {  //站点根目录配置。 http://location:80/
                root  html;  //网站根目录的位置
                index  index.html  index.php;  //默认首页(索引页)。默认打开的网页文件
            }
            error_page  500  502  503  504  /50x.html  //内部错误的反馈页面。如果报50*类型错误,给用户看哪个网页(50x.html)
            location = /50x.html {  //错误页面配置.http://location:80/50x.html
                root  html;
            }
            location /status {  //访问位置为status.http://location:80/status
                stub_status  on;  //打开状态统计功能。需配合启动 --with-http_stub_status_module模块使用
                access_log  off;  //关闭此位置的日志记录
            }
        }
    }
service  nginx  restart

配置语句的格式 : “关键字 值;”
建议设置工作进程数量worker_processes值等于CPU核数量
总处理连接数 = worker_connections * worker_processes
worker_connections : 一般在10000以下。
location / : 代表根目录
Active connections : 表示当前的活动连接数;server accepts handled requests : 表示已处理的连接信息;三个数字分别代表已处理的连接数、成功的TCP握手次数、已处理的请求数。

基于域名的虚拟web主机

#为不同域名创建不同的web站点
mkdir  -p  /var/www/xingfafa
echo "<h1>www.xingfafa.com</h1>" > /var/www/xingfafa/index.html
mkdir  -p  /var/www/airetalk
echo "<h1>www.airetalk.com</h1>" > /var/www/airetalk/index.html
#针对不同域名站点配置nginx.conf
vim  /usr/lcoal/nginx/conf/nginx.conf
    --snip--
     #第三大块:HTTP配置
    #使用“http {}”界定标记,包括访问日志、HTTP端口、网页目录、默认字符集、连接保持以及虚拟web主机、PHP解析。
    #子界定标记为“server {}”。多站点对应多子界定标记“server {}”或多配置文件。
    http {
        --snip--
        #子界定标记为-站点xingfafa
        server {  //站点1的监听配置
            listen  80;  //监听地址及端口
            server_name  www.xingfafa.com;  //网站名称(FQDN)
            access_log  logs/xingfafa.access.log  main;
            charset  utf-8;  //网页的默认字符集
            location  /  {  //站点根目录配置。 http://www.xingfafa.com:80/
                root  /var/www/xingfafa;  //网站根目录的位置
                index  index.html  index.php;  //默认首页(索引页)。默认打开的网页文件
            }
            error_page  500  502  503  504  /50x.html  //内部错误的反馈页面。如果报50*类型错误,给用户看哪个网页(50x.html)
            location = /50x.html {  //错误页面配置.http://location:80/50x.html
                root  html;
            }
        }
         #子界定标记为-站点airetalk
        server {  //站点2的监听配置
            listen  80;  //监听地址及端口
            server_name  www.airetalk.com;  //网站名称(FQDN)
            access_log  logs/airetalk.access.log  main;
            charset  utf-8;  //网页的默认字符集
            location  /  {  //站点根目录配置。 http://www.xingfafa.com:80/
                root  /var/www/airetalk;  //网站根目录的位置
                index  index.html  index.php;  //默认首页(索引页)。默认打开的网页文件
            }
            error_page  500  502  503  504  /50x.html  //内部错误的反馈页面。如果报50*类型错误,给用户看哪个网页(50x.html)
            location = /50x.html {  //错误页面配置.http://location:80/50x.html
                root  html;
            }
            --snip--
        }
    }
service  nginx  reload

LNMP架构及应用部署

构建LNMP网站平台

安装mysql

#预安装软件包
yum  -y  install  ncurses-devel
tar  zxvf  cmake-2.8.6.tar.gz
cd  cmake-2.8.6
./configure  &&  gmake  &&  gmake install
#编译安装mysql数据库
tar  zxvf  mysql-5.5.22.tar.gz
cd  mysql-5.5.22
cmake  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql  -DDEFAULT_CHARSET=utf8  -DDEFAULT_COLLATION=utf8_general_ci  -DWITH_EXTRA_CHARSETS=all  -DSYSCONFDIR=/etc
make  &&  make  install
#创建(复制)mysql配置文件
cp  support-files/my-medium.conf  /etc/my.cnf
#创建(复制)mysql启动脚本
cp  support-files/mysql.server  /etc/rc.d/init.d/mysqld
#为mysql脚本添加执行权限
chmod  +x  /etc/rc.d/init.d/mysqld
#开机自启
chkconfig  --add  mysqld
#添加mysql可执行文件到环境变量
echo  "export  PATH=$PATH;/usr/local/mysql/bin"  >>  /etc/profile
. /etc/profile
#创建mysql程序用户、组
groupadd  mysql
useradd  -M  -s  /sbin/nologin  mysql  -g  mysql
chown  -R  mysql:mysql  /usr/local/mysql
#初始化数据库
/usr/local/mysql/scripts/mysql_install_db  --basedir=/usr/local/mysql  --datadir=/usr/local/mysql/data  --user=mysql
#重启测试
service  mysqld  start
#为mysql服务添加root用户
mysqladmin  -u  root  password  'pwd123'

安装PHP

#预安装软件包
yum  -y  install  gd  libxml2-devel  libjpeg-devel  libpng-devel
#编译安装php
tar  zxvf  php-5.3.28.tar.gz
cd  php-5.3.28
./configure  --prefix=/usr/local/php5  --with-gd  --with-zlib  --with-mysql=/usr/local/mysql  --with-config-file-path=/usr/local/php5  --enable-mbstring  --enable-fpm  --with-jpeg-dir=/usr/lib
make  &&  make  install
#创建(复制)配置文件php.ini
cp  php.ini-development  /usr/local/php5/php.ini
ln  -s  /usr/local/php5/bin/*  /usr/local/bin/
ln  -s  /usr/local/php5/sbin/*  /usr/local/sbin/
#安装加速程序ZendGuardLoader
tar  zxvf  ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz
cd  ZendGuardLoader-php5-5.3-linux-glibc23-x86_64/php-5.3.x/
cp  ZendGuardLoader.so  /usr/local/php5/lib/php/
vim  /usr/local/php5/php.ini
    zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so
    zend_loader.enable=1
#配置nginx支持php环境
#方法一:充当中介,将访问PHP页面的web请求转发给其他LAMP服务处理
#方法二:通过PHP服务的FPM模块来调用本机的PHP环境
#启动php-fpm进程
cd  /usr/local/php5/etc/
cp  php-fpm.conf.default  php-fpm.conf
useradd  -M  -s  /sbin/nologin  php
vim  php-fpm.conf
    --snip--
    pid = run/php-fpm.pid  //确认pid文件位置
    user = php  //运行用户
    group = php  //运行组
    pm.start_servers = 20  //启动时开启的进程数
    pm.min_spare_servers = 5  //最少空闲进程数
    pm.max_spare_servers = 35  //最多空闲进程数
    pm.max_children = 50  //最大客户端数
#运行php-fpm
/usr/local/sbin/php-fpm
#确认是否已经运行
netstat -antp  |  grep php-fpm
#更新nginx服务脚本
vim  /etc/init.d/nginx
    #!/bin/bash
    #-  :  代表在所有运行级别当中都可以交由chkconfig管理控制
    #chkconfig:  -  99  20
    #description:Nginx Service Control Script
    PROG="/usr/local/nginx/sbin/nginx"  //主程序路径
    PIDF="/usr/local/nginx/log/nginx.pid"  //PID存放路径
    PROG_FPM="/usr/local/sbin/php-fpm"
    PIDF_FPM="/usr/local/php5/var/run/php-fpm.pid"
    case  "$1"  in 
        start)
           $PROG  -c  $CONF
           $PROG_FPM
           ;;
       stop)
           kill  -s  QUIT  $(cat  $PIDF)  //根据PID终止nginx级才能拿
           kill  -s  QUIT  $(cat  $PIDF_FPM)  //根据pid终止php-fpm进程
           ;;
       restart)
           $0  stop
           $0  start
           ;;
       reload)
           kill  -s  HUP  $(cat  $PIDF)  //根据PID重载配置
       *)
           echo  "Usage : $0 {start|stop|restart|reload}"
           exit 1
       esac
       exit 0

#配置nginx支持php解析
vim  /usr/local/nginx/conf/nginx.conf
    --snip--
    server {
        --snip--
        #方法一:
        location ~ \.php$ {  //访问.php页面的配置端。http://localhost/index.php
            proxy_pass  http://192.168.1.112:80;  //Apache服务器的监听地址
        }
        #方法二:
        location ~ \.php$ {  //访问.php页面的配置端。http://localhost/index.php
            root  /var/www/html;  //PHP网页文档根目录
            fastcgi_pass  127.0.0.1:9000;  //php-fpm的监听地址
            fastcgi_index  index.php;  //PHP首页文件
            include  fastcgi.conf  //包括fastcgi.conf样本配置
        }
        
    }

php连接数据库测试页

<?php
    $link=mysql_connect('localhost','root','pwd123');  //连接mysql数据库
    if($link) echo "<h1>恭喜你,数据库连接成功了</h1>";  //连接成功时的反馈信息
    mysql_close();
?>

在LNMP平台中部署web应用

以天空网络电影系统为例:
官方网站:http://www/skyuc.com/

yum  -y  install  unzip
unzip  SKYUC.v3.4.2.SOURCE.zip
cd  SKYUC.v3.4.2.SOURCE
mv  wwwroot  /var/www/xingfafa/skyuc
cd  /var/www/xingfafa/skyuc/
#赋予php服务解析整个网站的权限
chown  -R  php:php  admincp/  data/  templates/  upload/
#创建数据库
> create  database  skyucdb;
> grant  all  on  shyucdb.*  to  runskyuc@localhost  identified by 'sky@uc123';
#访问网页http://www.xingfafa.com/skyuc/install/index.php完成安装。
发布了73 篇原创文章 · 获赞 5 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/dfq737211338/article/details/104564780