Nginx,LNMP学习笔记

Posted 醉人与轩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx,LNMP学习笔记相关的知识,希望对你有一定的参考价值。

一、nginx
1、Nginx的作用和特点
    1)、Nginx的作用
        网站平台
        反向代理功能
        缓存功能
    2)、Nginx的特点
         开源
        支持HTTP协议
        占用硬件资源小
        响应速度快
        支持高并发 支持30000-50000并发量
        稳定性强
        可靠性强
    3)、apache和nginx的区别
        apache支持静态网站和动态网站
        apache允许占用设备资源高响应速度慢
        nginx功能多使用广泛
2、Nginx主持动态语言解析的方式
    1)动静分离
        静态请求Nginx处理
        动态请求Nginx转发到apache处理
    2)使用FPM模块解析动态语言
        需要在php中启动fastcgi模块解析php动态语言
3、LNMP组成和特点
    1)LNMP的组成
        Linux:使用Linux系统平台
        N:Nginx网站平台 
        M:后端数据库使用的mysql
        p:开发网站的语言php、python、perl、html
    2)LNMP的特点 
        开源
        模块化设计 
        支持广泛的网站开发语言
        安全性强
        可靠性强 
二、编译安装nginx
    1)、安装支持软件
[root@centos01 ~]# yum -y install pcre-devel zlib-devel
    2)、创建允许用户、组
[root@centos01 ~]# useradd -M -s /sbin/nologin nginx
    3)、编译安装nginx
[root@centos01 ~]# tar zxf /mnt/nginx-1.6.0.tar.gz -C /usr/src/
[root@centos01 ~]# cd /usr/src/nginx-1.6.0/
[root@centos01 nginx-1.6.0]# ./configure --prefix=/usr/local/nginx \\
>--user=nginx --group=nginx --with-http_stub_status_module
[root@centos01 nginx-1.6.0]# make
[root@centos01 nginx-1.6.0]# make install
[root@centos01 nginx-1.6.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
2、nginx的运行控制
    1)、检查配置文件
[root@centos01 ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
    2)、启动、停止nginx
[root@centos01 ~]# nginx                    //启动
[root@centos01 ~]# killall -s HUP nginx    //选项-s HUP 等同于 -1        //重载
[root@centos01 ~]# killall -s QUIT nginx    //选项-s QUIT 等同于 -3        //退出
PID文件/usr/local/nginx/logs/nginx.pid 
    3)、使用nginx服务脚本
[root@centos01 ~]# vim /etc/init.d/nginx
#!/bin/bash
# chkconfig: - 99 20
# description:Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
  start)
    $PROG
    ;;
  stop)
    kill -s QUIT $(cat $PIDF)
    ;;
  restart)
    $0 stop
    $0 start
    ;;
  reload)
    kill -s HUP &(cat $PIDF)
    ;;
*)
        echo "Usage: $0 (start|stop|restart|reload)"
        exit 1
esac
exit 0
[root@centos01 ~]# chmod +x /etc/init.d/nginx 
[root@centos01 ~]# chkconfig --add nginx
[root@centos01 ~]# systemctl status nginx
● nginx.service - SYSV: Nginx Service Control Script
   Loaded: loaded (/etc/rc.d/init.d/nginx; bad; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:systemd-sysv-generator(8)
三、配置Nginx
1、nginx配置文件类型和nginx主配置文件包含的内容
    1)、Nginx配置文件类型
        /usr/local/nginx/html/                nginx网站根目录
        /usr/local/nginx/logs/                nginx网站日志目录
        /usr/local/nginx/sbin/                管理nginx服务命令        
        /usr/local/nginx/conf/nginx.conf    nginx主配置文件
    2)、nginx主配置文件包含的内容
vim /usr/local/nginx/conf/nginx.conf
    user nginx;                    管理nginx的账户
    worker_processes 1 ;        nginx工作进程数量(cpu数量)
    pid        logs/nginx.conf;    nginx服务启动后进程ID位置
    use epoll;                    epoll模型
    worker_connections 1024;    每个进程处理并发量(cpu数量 * 1024)
    http { }                    配置网站选项使用
    server { }                    配置虚拟主机 一个server表示一个虚拟主机
    location / { }                 设置网站根目录和默认网站主页
2、配置虚拟主机
    1)、创建虚拟主机网站根目录
[root@centos01 ~]# mkdir -p /var/www/benet
[root@centos01 ~]# mkdir -p /var/www/accp
    2)、编辑网站主页
[root@centos01 ~]# echo "benet" > /var/www/benet/index.html
[root@centos01 ~]# echo "accp" > /var/www/accp/index.html
    3)、修改配置文件
vim /usr/local/nginx/conf/nginx.conf
server {
        listen       80;
        server_name  www.benet.com;
        charset utf-8;
        access_log  logs/benet.access.log ;
        error_log   logs/benet.error.log;
        location / {
                root   /var/www/benet/;
                index  index.html index.htm;
        }
    }
server {
        listen       80;
        server_name  www.accp.com;
        charset utf-8;
        access_log  logs/accp.access.log;
        error_log   logs/accp.error.log;
        location / {
                root   /var/www/accp/;
                index  index.html index.htm;
        }
    }
    4)、检查nginx配置文件
[root@centos001 ~]# nginx -t
    5)、配置nginx网站统计功能
 47         location /status {                                            //访问统计内容名字status
 48             stub_status on;                                            //打开状态统计功能
 49             access_log off;                                            //关闭此位置的日志记录
 50             auth_basic "Welcome to nginx!";                            //欢迎信息
 51             auth_basic_user_file /usr/local/nginx/html/.passwd;        //账户密码文件所在位置
 52         }
    4)、安装工具httpd-tools
       yum -y install httpd-tools
    5)、创建用户认证数据库文件
       htpasswd -c /usr/local/nginx/html/.passwd nginx
 
LNMP平台搭建 
1、安装nginx
[root@centos01 ~]# mount /dev/sr0 /mnt/
[root@centos01 ~]# yum -y install pcre-devel zlib-devel
[root@centos01 ~]# useradd -M -s /sbin/nologin nginx
[root@centos01 ~]# mount /dev/sr1 /mnt/
[root@centos01 ~]# tar zxf /mnt/nginx-1.6.0.tar.gz -C /usr/src/
[root@centos01 nginx-1.6.0]# ./configure --prefix=/usr/local/nginx \\
--user=nginx --group=nginx --with-http_stub_status_module
[root@centos01 nginx-1.6.0]# make
[root@centos01 nginx-1.6.0]# make install
[root@centos01 nginx-1.6.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@centos01 nginx-1.6.0]# cp /usr/local/nginx/conf/{nginx.com,nginx_conf.bak}
2、安装mysql数据库
    1)、编译和安装MySQL
[root@centos01 ~]# mount /dev/sr0 /mnt/
[root@centos01 ~]# yum -y install ncurses-devel cmake
[root@centos01 ~]# mount /dev/sr1 /mnt/
[root@centos01 ~]# tar zxf /mnt/mysql-5.5.22.tar.gz -C /usr/src/
[root@centos01 ~]# cd /usr/src/mysql-5.5.22/
[root@centos01 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
[root@centos01 mysql-5.5.22]# make && make install
    2)、优化调整
[root@centos01 mysql-5.5.22]# cp support-files/my-medium.cnf /etc/my.cnf
[root@centos01 mysql-5.5.22]# cp support-files/mysql.server \\
/etc/rc.d/init.d/mysqld
[root@centos01 mysql-5.5.22]# chmod +x /etc/rc.d/init.d/mysqld
[root@centos01 mysql-5.5.22]# chkconfig --add mysqld
[root@centos01 mysql-5.5.22]# chkconfig --level 35 mysqld on
[root@centos01 mysql-5.5.22]# echo "PATH=$PATH:/usr/local/mysql/bin" >> \\
/etc/profile
[root@centos01 mysql-5.5.22]# source /etc/profile
[root@centos01 mysql-5.5.22]# echo $PATH
    3)、初始化数据库
[root@centos01 ~]# groupadd mysql
[root@centos01 ~]# useradd -M -s /sbin/nologin mysql -g mysql
[root@centos01 ~]# chown -R mysql:mysql /usr/local/mysql/
[root@centos01 ~]# /usr/local/mysql/scripts/mysql_install_db \\
--basedir=/usr/local/mysql \\
--datadir=/usr/local/mysql/data \\
--user=mysql
    4)、启动mysql服务
[root@centos01 ~]# systemctl start mysqld
[root@centos01 ~]# mysqladmin -u root password
2、安装PHP解析环境
    1)、编译安装php
[root@centos01 ~]# mount /dev/sr0 /mnt/
[root@centos01 ~]# yum -y install gd libxml2-devel libjpeg-devel libpng-devel
[root@centos01 ~]# mount /dev/sr1 /mnt/
[root@centos01 ~]# tar zxf /mnt/php-5.3.28.tar.gz -C /usr/src/
[root@centos01 ~]# cd /usr/src/php-5.3.28/
[root@centos01 php-5.3.28]# ./configure --prefix=/usr/local/php \\
--with-gd --with-zlib \\
--with-mysql=/usr/local/mysql \\
--with-mysqli=/usr/local/mysql/bin/mysql_config \\
--with-config-file-path=/usr/local/php \\
--enable-mbstring --enable-fpm --with-jpeg-dir=/usr/lib
[root@centos01 php-5.3.28]# make && make install
    2)、安装后的调整
生成php配置文件
[root@centos01 php-5.3.28]# cp php.ini-production /usr/local/php/php.ini
[root@centos01 php-5.3.28]# ln -s /usr/local/php/bin/* /usr/local/bin/
[root@centos01 php-5.3.28]# ln -s /usr/local/php/sbin/* /usr/local/sbin/
    3)、安装ZendGuardLoader加速模块
[root@centos01 ~]# tar zxf /mnt/ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz -C /usr/src/
[root@centos01 ~]# cp /usr/src/ZendGuardLoader-php-5.3-linux-glibc23-x86_64/php-5.3.x/ZendGuardLoader.so /usr/local/php/lib/php/
[root@centos01 ~]# vim /usr/local/php/php.ini    
1 [PHP]
2 zend_extension= /usr/local/php/lib/php/ZendGuardLoader.so
3 zend_loader.enable=1    
3、配置nginx支持php环境
    1)、启用php-fpm进程(9000/tcp)
生成php-fpm模块配置文件
[root@centos01 ~]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
[root@centos01 ~]# vim /usr/local/php/etc/php-fpm.conf
#user = nobody
#group = nobody
user = nginx
group = nginx
[root@centos01 ~]# /usr/local/sbin/php-fpm
[root@centos01 ~]# netstat -anptu | grep php-fpm
    2)、创建服务脚本php-fpm进程跟随nginx运行
vim /etc/init.d/nginx
#!/bin/bash
# chkconfig: - 99 20
# description:Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
PROG_FPM="/usr/local/sbin/php-fpm"
PIDF_FPM="/usr/local/php/var/run/php-fpm.pid"
case "$1" in
  start)
    $PROG
    $PROG_FPM
    ;;
  stop)
    kill -s QUIT $(cat $PIDF)
    kill -s QUIT $(cat $PIDF_FPM)
    ;;
  restart)
    $0 stop
    $0 start
    ;;
  reload)
    kill -s HUP &(cat $PIDF)
    kill -s HUP &(cat $PIDF_FPM)
    ;;
*)
        echo "Usage: $0 (start|stop|restart|reload)"
        exit 1
esac
exit 0
    3)、配置nginx支持php解析

调用本机的php-fpm进程
[root@centos01 ~]# vim /usr/local/nginx/conf/nginx.conf
server {
  listen 80;
  server_name www.benet.com;
  charset utf-8;
  access_log logs/benet.access.log;
  error_log logs/benet.error.log;
  location / {
    root /var/www/benetcom/;
    index index.html index.htm;
  }
  location ~ \\.php$ {
    root /var/www/benetcom/;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include fastcgi.conf;
  }
}
server {
  listen 80;
  server_name www.accp.com;
  charset utf-8;
  access_log logs/accp.access.log;
  error_log logs/accp.error.log;
  location / {
    root /var/www/accpcom/;
    index index.html index.htm;
  }
  location ~ \\.php$ {
    root /var/www/accpcom/;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include fastcgi.conf;
  }
}
[root@centos01 ~]# vim /var/www/benetcom/index.php
<?php
phpinfo ();
?>
[root@centos01 ~]# vim /var/www/accpcom/index.php
<?php
phpinfo ();
?>
[root@centos01 ~]# killall nginx
[root@centos01 ~]# nginx
elinks http://www.benet.com/index.php
elinks http://www.accp.com/index.php
部署论坛
1、下载并部署程序代码
[root@centos01 ~]# mount /dev/sr0 /mnt/
[root@centos01 ~]# yum -y install unzip
[root@centos01 ~]# mount /dev/sr1 /mnt/
[root@centos01 ~]# unzip /mnt/Discuz_X3.2_SC_UTF8.zip 
[root@centos01 ~]# rm -rf /var/www/benetcom/*
[root@centos01 ~]# mv /root/Discuz_X3.2_SC_UTF8/upload/* /var/www/benetcom/
[root@centos01 ~]# chown -R nginx:nginx /var/www/benetcom/
[root@centos01 ~]# chmod -R 755 /var/www/benetcom/
[root@centos01 ~]# vim /usr/local/nginx/conf/nginx.conf
server {
  listen 80;
  server_name www.benet.com;
  charset utf-8;
  access_log logs/benet.access.log;
  error_log logs/benet.error.log;
  location / {
    root /var/www/benetcom/;
    index index.html index.htm index.php;
  }
  location ~ \\.php$ {
    root /var/www/benetcom/;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include fastcgi.conf;
  }
}
server {
  listen 80;
  server_name www.accp.com;
  charset utf-8;
  access_log logs/accp.access.log;
  error_log logs/accp.error.log;
  location / {
    root /var/www/accpcom/;
    index index.html index.htm index.php;
  }
  location ~ \\.php$ {
    root /var/www/accpcom/;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include fastcgi.conf;
  }
}
[root@centos01 ~]# killall nginx
[root@centos01 ~]# nginx
2、创建数据库
[root@centos01 ~]# mysql -uroot -ppwd@123
mysql> create database discuzdata;
mysql> grant all on discuzdata.* to discuzuser@localhost identified by 'pwd@123';
3、安装web应用
http://www.benet.com/bbs/install/

部署电影院管理系统
[root@centos01 ~]# mount /dev/sr1 /mnt/
[root@centos01 ~]# cp /mnt/SKYUC.v3.4.2.SOURCE.zip ./
[root@centos01 ~]# unzip SKYUC.v3.4.2.SOURCE.zip
[root@centos01 ~]# rm -rf /var/www/accpcom/*
[root@centos01 ~]# mv SKYUC.v3.4.2.SOURCE/wwwroot/* /var/www/accpcom/
[root@centos01 ~]# chown -R nginx:nginx /var/www/
[root@centos01 ~]# chmod -R 755 /var/www/
[root@centos01 ~]# mysql -uroot -ppwd@123
mysql> create database skyncdata;
mysql> grant all on skyucdata.* to 'skyucuser'@'localhost' identified by 'pwd@@123';
[root@centos01 ~]# killall nginx
[root@centos01 ~]# nginx
http://www.accp.com/install/
 

以上是关于Nginx,LNMP学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

Linux学习笔记之搭建LNMP服务器环境

2018-3-12 Linux学习笔记

lnmp学习笔记

Linux学习笔记十三周二次课(5月3日4日)

Mysql学习笔记_1

zabbix学习笔记