Nginx lnmp环境及https的实现

一、http事务简明 

request:
<method> <URL> <VERSION>
MHADERS 
<body>
response:
<version><status><reason phrase>
<HEADERS>
...
<body> 

status:

1xx:信息类
2xx:成功类,200 
3xx:重定向,301,304,302 
4xx:错误类,客户端错误,404,403 
5xx:错误类, 服务端错误,502 

认证:basic,digest 

httpd;MPM 

prefork,:进程模型,两级结构,主进程master负责生成子进程,每个进程负责响应一个请求;
worker:线程模型,三级结构,主进程生成子进程,子进程负责生成多个线程, 每个线程响应一个请求 
event:主进程master负责生成子进程,每个子进程响应多个请求,基于事物管理; 

I/O模型;

同步:synchronous 
异步:asynchronous 
关注的是消息通知机制; 
消息通知:
同步:等待对方返回消息; 
异步; 被调用者能过状态,通知或回调通知调用者 

状态:调用者每隔一段时间就需要检查一次; 

阻塞/非阻塞 
调用者等待结果返回之前年处的状态; 
阻塞:block调用结果返回之前,调用者会被挂起; 
非阻塞:nonblock调用结果返回之前,调用者不会被挂起 

I/O:

网络IO:本质是socket读取; 
磁盘IO:流; 

每次IO,都不会经由两个阶段 ;
第一步; 数据先回载至内核内存空间; 
第二步; 数据从内核缓冲区复制到用户空间的进程的内存中付出 ;

等待数据准备完成; 

数据内核复制进程 ;

二、Nginx简明:

特性:

采用模块化设计,较好的扩展性; 
高可靠性  master/worker 
支持热部署:不停机更新配置文件、更换日志文件、列新服务器版本 
低内存消耗:10000个keep-alive连接模式下的非活动连接仅消耗2.5M内存; 
event-dreiven,aio,mmap 
基本功能; 
静态资源的web服务器
http协议反向代理服务器;
pop3/imap4协议反向代理服务器; 
FastCgi,uWSCGI等协议; 
模块化(非DSO),有zip,ssl,…;

web服务器相关的功能; 

虚拟主机、keepalive、访问日志、url rewrite 、路径别名、基于ip及用户的访问控制; 
支持速率限制及并发数限制,…; 
Nginx的程序架构:
master/worker 
一个master进程,可生成一个或多个worker进程; 
master;加载配置文件、管理worker进程、平滑升级、… 
worker:http服务、http代理、fstcgi代理 … 
缓存对象的相关数据
cache loader 载入缓存对象 
cache manager 管理缓存对象 
模块类型
核心模块;core module 
标准模块: Standard HTTP modules Optional HTTP moduels Mail modules 3rd party modules ; 
nginx一般用于静态资源的web服务器 http协议反向代理
nginx高度模块:高度模块化,但其模块早期不支持DSO机制; 近期版本支持动态装载和动态卸载 
nginx的功用; 
静态的web资源服务器; (图片服务器,或js/css/html/txt等静态的资源服务器)
结合FastCGI/uwCGI/SCGI等协议反代动态资源请求 
http/https协议的反向代理 ; 
imap4/pop3协议的么向代理 ; 
tcp/udp协议的请求转发; 

三、LNMP环境的搭建 (nginx+php-fpm):基于fastcgi 

CGI全称为公共网关接口(Common Gateway Interface)
php-fpm 工作方式:(类似于httpd的prefork)
listen=127.0.0.1:9000
listen.allowed_clients=127.0.0.1 
pm=dynamic |static  
pm.start_servers:启动fpm进程时启动的工作进程数量; 
pm.min_spare_server:最少空闲进程数; 
pm.max_children:最大工作进程数; 
user=USERNAME 
group=GROUPNAME 

fastcgi模块指令; 
fastcgi_pass address;
address是fpm服务器监听的地址和端口; 
示例:fastcgi 127.0.0.1:9000; 
fastcgi_index name; fastcgi应用的主面名称; 
fastcgi_param parameter avlue [if_not_empty];
传递给fpm服务器的参数及其值 
path:文件系统路径,用于存储缓存的文件数据 ; 
max_size=size:定义此路径下的多大空间用于存储缓存数据 ; 
levels=#[:#[:#]]:缓存目录层级定义; 
levels=1:2 
key_zone=name:size  
内存中用于缓存k/v映射关系的空间名称及大小; 
inactive=time  
注意:只能定义在httpd上下文; 
fastcgi_cache zone | off; 
是否启用cache,如果启用; 
fastcgi_cache_path /var/cache/nginx/fastcgi levels=1:2 keys_zone=fcgicache:10m; 
在location中调用; 
fastcgi_cache fcgicache; 
fastcgi_cache_key string; 
定义要使用的缓存键; 
例如:fastcgi_cache_key $request_uri; 
fastcgi_cache_methods GET | HEAD |POST…; 
缓存哪些类型的请求的相关数据; 
fastcgi_cache_min_users number; 
fastcgi_cache_valid [code…] time; 
对不同响应码设定其可缓存时长; 
注意:调用缓存时,至少应该指定三个参数; 
fastcgi_cache 
fastcgi_cache_key 
fastcgi_cache_valid 

配置拓扑

Nginx lnmp环境及https的实现

安装: 

# yum -y install php-fpm php-mysql php-mbstring php-gd php-xml nginx mariadb  
# rpm -ql php-fpm 可以查看其生成的文件 
# systemctl start php-fpm mariadb nginx 
# vim /etc/nginx/conf.d/defult.conf 
修改 
location / {
root   /usr/share/nginx/html;
index  index.html index.htm index.php;
} 

添加

   location ~ \.php$ {
root           /usr/share/nginx/html;
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html/$fastcgi_script_name;
include        fastcgi_params;
} 

# vim /usr/share/nginx/html/index.php 
<h1>www.rj.com NODE2</h1>
<?php
$link=mysql_connect("localhost","root","centos.123");
if(!$link)echo"CNONNECT FILED!";
else echo "CAN CNONNECT !";
?>

访问http://172.16.23.10/index.php后可以看到CAN CNONNECT字样时,表示php可以正常解析,并能够连接到mysql

Nginx lnmp环境及https的实现

下载wordpress-4.3.1-zh_CN.zip
# cp wordpress-4.3.1-zh_CN.zip  /usr/share/nginx/html/
# cd /usr/share/nginx/html/
# unzip wordpress-4.3.1-zh_CN.zip 
# cp -a ./wordpress/* . 
# cp wp-config-sample.php wp-config.php -a
mysql>  CREATE DATABASE word;
mysql>  GRANT ALL ON word.* TO 'rj'@'localhost' IDENTIFIED BY 'centos';
mysql>  GRANT ALL ON word.* TO 'rj'@'127.0.0.1' IDENTIFIED BY 'centos';
# vim wp-config.php 修改以下字段
define('DB_NAME', 'word');
/** MySQL数据库用户名 */
define('DB_USER', 'rj');

/** MySQL数据库密码 */
define('DB_PASSWORD', 'centos');

/** MySQL主机 */
define('DB_HOST', 'localhost');

/** 创建数据表时默认的文字编码 */
define('DB_CHARSET', 'utf8');

/** 数据库整理类型。如不确定请勿更改 */
define('DB_COLLATE', '');

而后输入以下地址进行安装http://172.16.23.10/wp-admin/ 

安装完之后,访问可得到以下结果

Nginx lnmp环境及https的实现

这样wordpress就可以安装成功了; 

四、nginx https的实现,并为之提供phpmyadmin 

生成自签证明证书 

# touch /etc/pki/CA/index.txt 
# echo 01 > /etc/pki/CA/serial 
# cd /etc/pki/CA/ 
# (umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048) 
# cd /etc/pki/ca/private/ 
注:此处的国家为CN 、省份为BJ 、 城市为BJ 公司为rj  部门为rj 主机名为www.rj.com 
# opessl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem 
生成证明请求 
# mkdir /etc/nginx/ca
# (umaask 066;openssl genrsa -out /etc/nginx/ca/nginx.key 1024)
注:此处所要填写的内容前四项要与之对应一致,主机名要与使用的主机名一致 
# openssl -req -new -key /etc/nginx/ca/nginx.key -out nginx.csr -days 3650 
自签名 
# openssl -ca in /etc/nginx/ca/nginx.csr -out /etc/nginx/ca/nginx.crt -days 3650

如以下所示便生成了自签名的证书

Nginx lnmp环境及https的实现

在windows中测试时需要导入证书 

Nginx lnmp环境及https的实现

# sz /etc/pki/CA/cacert.pem 
在windows将cacert.pem重命名为cacert.crt 
配置nginx 

vim /etc/nginx/conf.d/openssl.conf 
server {
listen       443 ssl;
server_name  www.rj.com:441;
ssl on ;
ssl_certificate /etc/nginx/ca/nginx.crt;
ssl_certificate_key /etc/nginx/ca/nginx.key;
location / {
root   /usr/share/nginx/ssl;
index  index.html index.htm index.php;
}
error_page   500 502 503 504  /50x.html;
location = /50x.html {
root   /usr/share/nginx/ssl;
}
location ~ \.php$ {
root           /usr/share/nginx/ssl;
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/ssl/$fastcgi_script_name;
include        fastcgi_params;
}
}
# ssl -tnl 查看443端口是否启用 
开始初装phpmyadmin 
# cp phpMyAdmin-4.0.5-all-languages.zip /usr/share/nginx/ssl/ 
# unzip phpMyAdmin-4.0.5-all-languages.zip 
# cp config.sample.inc.php  config.inc.php -a
此时直接访问会报错的
vim /etc/php.ini进行配置 
修改以下字段
session.save_path = "/var/lib/php/session"
session.auto_start = 1
# chmod 0777 /var/lib/php/session/
# chown nginx:nginx /var/lib/php/session 

此时访问http://www.rj.com 时为wordpress

Nginx lnmp环境及https的实现 

当访问https://www.rj.com时为phpmyadmin 

Nginx lnmp环境及https的实现


原创文章,作者:kang,如若转载,请注明出处:http://www.178linux.com/79178

(0)
kangkang
上一篇 2016-07-27
下一篇 2016-07-27

相关推荐

  • N27_第六周作业

    请详细总结vim编辑器的使用并完成以下练习题 基本模式:编辑模式(命令模式),输入模式,末行模式 模式转换: 编辑模式–输入模式: i:insert,在光标所在处前方输入 a:append,在光标所在处后方输入 o:在光标所在处的下方新建一行 I:在光标所在行行首输入 A:在光标所在处行尾输入 O:在光标所在处的上方打开一个新行 输入模式&#82…

    Linux干货 2017-10-26
  • 用户和组的四大配置文件简介

    一. 用户的由来 linux系统拥有的就是资源,最重要的事就是对资源的分配,资源分给谁?在linux上资源的访问是对用户赋予不同的权限实现,也就是说能访问资源的单位是用户。那用户在获取资源之前要实现证明自己是本用户,这个过程称为认证,他通过密码和用户名实现。在用户登录时会将用户输入的用户名和密码进行校验,校验过程就是将输入的用户名和密码与linux系统上记录…

    Linux干货 2016-10-24
  • Linux文件查找工具之find “大宝剑”

    一、文件查找工具常用软件 locate:     locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令…

    Linux干货 2016-03-12
  • Linux系统自动化安装基础

    Linux系统自动化安装基础 安装程序CentOS系统安装系统启动流程:bootloader–>kernel(initramfs)–>rootfs–>/sbin/init注意:安装过程中与启动过程中的文件不同 anaconda系统安装程序tui: 基于图形库curses的文本窗口gui:图形窗口 安装程序…

    Linux干货 2016-10-08
  • 马哥教育网络21期+第十二周练习博客上

    1、请描述一次完整的http请求处理过程; (1)建立或处理连接:接受请求或拒绝请求 (2)如果接受请求:     并发访问响应模型:         单进程I/O结构:启动一个进程处理用户请求,而且一次只处理一个,多个请求被串行响应; &…

    Linux干货 2016-10-17
  • Linux上文件管理命令、元素据及时间戳、bash的工作特性回显和命令展开、定义别名,命令引用。

    文件管理命令: mkdir 创建空目录 语法: mkdir [选项]…目录… 选项: -P:逐层创建目录。 -v:显示过程。 -m:直接给定权限。 注意:路径的基名为命令作用对象。基名路径必须存在。 示例 创建/tmp/x1/a/a1和/tmp/x1/b rmdir 移除空目录 语法 rmdir [选项]…目录&#8230…

    Linux干货 2017-12-10