LNMP=Linux+Nginx+MySQL+PHP

LNMP=Linux+Nginx+MySQL+PHP

Nginx深入剖析与安装
一、虚拟主机概念和类型介绍

        所谓虚拟主机,在web服务里就是一个独立的网站站点,这个站点对应独立的域名(也可能是IP或端口),具有独立的程序及资源目录,可以独立地对外提供服务供用户访问。
        nginx软件则使用一个server{}标签来标示一个虚拟主机,一个web服务里可以有多个虚拟主机主机标签对,即同时可以支持多个虚拟主机站点。

二、虚拟主机类型


    常见的虚拟主机类型有如下几种

     2.1    基于域名的虚拟主机

所谓基于域名的虚拟主机,意思就是通过不同的域名区分不通的虚拟主机,基于域名的虚拟主机是企业应用最广的虚拟主机类型,几乎所有对外提供服务的网站都是使用基于域名的虚拟主机,例如:www.etiantian.org

    2.2    基于端口的虚拟主机

    同理,所谓基于端口的虚拟主机,意思就是通过不同的端口来区分不同的虚拟主机。此类虚拟主机对应的企业应用主要为公司内部的网站,例如:一些不希望直接对外提供用户访问的网站后台等,访问基于端口的虚拟主机地址里要带有端口,例如:http://www.etiantian.org:9000

    2.3    基于IP的虚拟主机

    同理,所谓基于IP的虚拟主机,意思就是通过不同的IP区分不同的虚拟主机,此类虚拟主机对应的企业应用非常少见,一般不同业务需要使用多IP的常见都会在负载均衡器上进行VIP绑定,而不是在Web上通过绑定IP区分不同的虚拟机。

    三种虚拟主机类型均可独立使用,也可以互相混合一起使用。 把基于域名的虚拟主机类型是重点。

三、模块、参数解释

3.1Nginx模块说明
Nginx核心功能模块:负责Nginx的全局应用,主要针对主配置文件的Main区块和Events区块区域,有很多Nginx必须的全局配置参数
标准的http功能模块合集 :虽然不是Nginx软件所必需的,但都是很常用的,因此绝大部分默认情况都会自动安装到Nginx软件中,建议保留默认配置
在生产环境中,配置、调整及优化Nginx软件,主要就是根据这些模块的功能修改相应的参数来实现的

3.2工作中常用的Nginx http功能模块

LNMP=Linux+Nginx+MySQL+PHP

3.3Nginx目录说明

conf : Nginx所有配置文件的目录
fastcgi.conf fastcgi相关参数的配置文件
fastcgi.conf.default fastcgi.conf的原始备份
fastcgi_params fastcgi的参数文件
mime.types 媒体类型
nginx.conf Nginx默认的主配置文件
scgi_params scgi相关参数文件
uwsgi_params uwsgi相关参数文件

fastcgi_temp : fastcgi临时数据目录
html : 编译安装Nginx的默认站点目录
50x.html 错误页面优雅替代显示文件
index.html 默认的首页文件,index.html 、index.php等
logs : Nginx默认的日志路径,包括错误日志和访问日志
access.log Nginx的默认访问日志文件, tail -f access.log
error.log Nginx的错误日志文件,如果出现启动故障,要查看该文件
nginx.pid Nginx的pid文件,Nginx进程启动后,会把所有进程的ID号写到此 文件

proxy_temp : 临时目录
sbin : Nginx命令的目录
nginx Nginx的启动命令nginx
scgi_temp : 临时目录
uwsgi_temp : 临时目录

3.4Nginx主配置文件

nginx.conf是一个纯文本类型的文件,位于Nginx安装目录下的conf目录中
整个配置文件是以区块的形式组织的
每个区块一个大括号“{}” 来表示,区块可以分几个层次
Main区位于最上层,在Main区下面可以有Events区,HTTP区等层级
在HTTP区中又包含有多个server区,每个server区包含一个多个location区

3.5nginx配置参数解释

worker_processes 1; worker进程的数量
worker_connections 1024; 每个worker进程支持的最大连接数
include mime.types; nginx支持的媒体类型库文件
default_type application/octet-stream; 默认的媒体类型
sendfile on; 开启高效传输模式
keepalive_timeout 65; 连接超时
server 表示一个独立的虚拟主机站点
listen 80; 提供服务的端口,默认80
server_name localhost; 提供服务的域名主机名
location location区块
root html 站点的根目录

四、Nginx安装

  1. yum install openssl openssl-devel zlib zlib-devel pcre pcre-devel
    yum -y install gcc gcc-c++ autoconf automake make
 按装所需的模块

2.cd /usr/local/src //将安装包下载到/usr/local/src目录下
wget http://nginx.org/download/nginx-1.16.0.tar.gz

3.tar -zxvf nginx-1.16.0.tar.gz
解压之后进行安装输入命令

4.cd nginx-1.6.0 //切换到解压后的nginx目录

5../configure
make
make install
进行编译安装

6.cd /usr/local/nginx/conf/ // 进入conf文件进行文件配置
vim nginx.conf // 增加一个人server
server {
listen 80;
server_name blog.nautilus.org;
location / {
root html/blog;
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ .php$ {
root html/blog;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

7 . cd /usr/local/nginx/sbin // 进入nginx的sbin目录下
./nginx //启动
./nginx -s reload //重读配置文件

yum安装MySQL:

wget http://repo.mysql.com/mysql57-community-release-el7.rpm

获取 mysql 安装包
rpm -ivh mysql57-community-release-el7.rpm

安装 mysql
yum install mysql-server

首先启动MySQL
systemctl start mysqld.service
查看MySQL运行状态,运行状态如图:
systemctl status mysqld.service

此时MySQL已经开始正常运行,不过要想进入MySQL还得先找出此时root用户的密码,通过如下命令可以在日志文件中找出密码:
grep "password" /var/log/mysqld.log
如下命令进入数据库:
mysql -uroot -p # 回车后会提示输入密码

输入初始密码,此时不能做任何事情,因为MySQL默认必须修改密码之后才能操作数据库:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
这里有个问题,新密码设置的时候如果设置的过于简单会报错:
原因是因为MySQL有密码设置的规范,具体是与validate_password_policy的值有关
 解决方法就是修改密码为规范复杂的密码:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'z?guwrBhH7p>';
Query OK, 0 rows affected (0.00 sec)

mysql>

这时候我们要把密码规则改一下,执行下面sql就可以了:
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)

mysql>

设置之后就是我上面查出来的那几个值了,此时密码就可以设置的很简单,例如1234之类的。到此数据库的密码设置就完成了。

PHP编译安装
下载 PHP 源码包
#wget http://cn2.php.net/distributions/php-5.6.0.tar.xz
xz -d php-5.6.0.tar.xz
tar xf php-5.6.0.tar -C /usr/local/src/
解压源码包

yum install zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel
yum install freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel bz2-devel
yum -y install libmcrypt-devel mhash mcrypt
yum安装所需模块
./configure make make install源码包编译安装
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
创建 www 用户
#groupadd www
#useradd -g www -s /sbin/nologin -M www
编译安装
#cd /usr/local/src/php-5.6.0/

./configure \
--prefix=/usr/local/php56 \
--with-config-file-path=/usr/local/php56/etc \
--enable-inline-optimization \
--disable-debug \
--disable-rpath \
--enable-shared \
--enable-opcache \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-gettext \
--enable-mbstring \
--with-iconv \
--with-mcrypt \
--with-mhash \
--with-openssl \
--enable-bcmath \
--enable-soap \
--with-libxml-dir \
--enable-pcntl \
--enable-shmop \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-sockets \
--with-curl \
--with-zlib \
--enable-zip \
--with-bz2 \
--with-readline\
--with-gd
cd /usr/local/src/php-5.6源码包
配置文件:
#cp php.ini-development /usr/local/php56/etc/php.ini

php-fpm 服务
#cp /usr/local/php56/etc/php-fpm.conf.default /usr/local/php56/etc/php-fpm.conf

#cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm56 (php-fpm的可执行文件)
#chmod +x /etc/init.d/php-fpm56

启动 php-fpm(nginx与 php沟通 )
#service php-fpm56 start
Starting php-fpm done
添加 PHP 命令到环境变量
编辑 /etc/profile ,将:
PATH=$PATH:$HOME/bin
改为:
PATH=$PATH:$HOME/bin:/usr/local/php56/bin
使 PHP 环境变量生效:
source /etc/profile
然后执行 vim /usr/local/nginx/nginx.conf 编辑nginx配置文件,具体路径根据实际的nginx.conf配置文件位置编辑,下面主要修改nginx的server {}配置块中的内容,修改location块,追加index.php让nginx服务器默认支持index.php为首页:

  然后配置.php请求被传送到后端的php-fpm模块,默认情况下php配置块是被注释的,此时去掉注释并修改为以下内容:

  这里面很多都是默认的,root是配置php程序放置的根目录,主要修改的就是fastcgi_param中的/scripts为$document_root
  修改完上面的,回到nginx.conf第一行,默认是#user nobody; 这里要去掉注释改为user www-data;或者user www www;表示nginx服务器的权限为www
  修改完这些保存并退出,然后重启nginx:
/usr/local/nginx/nginx -s stop
/usr/local/nginx/nginx
  接下来编辑一个测试的php程序,在nginx下的html目录下创建test.php文件,打印一下php配置:
<?php
phpinfo();
?>
  然后打开浏览器输入对应的地址进行访问,看到输出页面,说明nginx和php都配置成功了

猜你喜欢

转载自blog.51cto.com/14375807/2417648