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学习笔记的主要内容,如果未能解决你的问题,请参考以下文章