一,LNMP
LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指Perl或Python。
LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。
- Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntu、fedora、gentoo等。
- Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
- Mysql是一个小型关系型数据库管理系统。
- PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。
这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。
二,LNMP实现原理(工作流程)
第一步,浏览器发送http request请求到服务器(Nginx),服务器响应并处理web请求,将一些静态资源(CSS,图片,视频等)保存服务器上。
第二步,将php脚本通过接口传输协议(网关协议)PHP-FCGI(fast-cgi)传输给PHP-FPM(进程管理程序),PHP-FPM不做处理,然后PHP-FPM调用PHP解析器进程,PHP解析器解析php脚本信息。PHP解析器进程可以启动多个,进行并发执行。
第三步,将解析后的脚本返回到PHP-FPM,PHP-FPM再通过fast-cgi的形式将脚本信息传送给Nginx。
第四步,服务器再通过Http response的形式传送给浏览器。浏览器再进行解析与渲染然后进行呈现。
三,LNMP架构的优点
- 作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率。
- 作为负载均衡服务器:Nginx 既可以在内部直接支持Rails和PHP,也可以支持作为 HTTP代理服务器对外进行服务。Nginx 用C编写,不论是系统资源开销还是CPU使用效率都比Perlbal要好的多。
- 作为邮件代理服务器:Nginx同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last/fm 描述了成功并且美妙的使用经验。
- Nginx 安装非常的简单,配置文件非常简洁(还能够支持perl语法)。Nginx支持平滑加载新的配置,还能够在不间断服务的情况下进行软件版本的升级。
四,MYSQL的源码安装
1.虚拟机设置
推荐使用20G硬盘,2048Mb内存,2核CPU,这样安装起来稍微快一点
2.官网下载安装包
安装包我们可以去官网下载安装包,而我们在这里选择比较稳定的mysql5.7版本的安装包
3.创建lnmp架构的目录,并解压mysql安装包
4.下载安装时需要的依赖性与安装包
yum install gcc gcc-c++ ncurses-devel bison -y
yum install cmake-2.8.12.2-4.el6.x86_64.rpm -y
注意,下载cmake时我们需要有它的安装包
5.编译
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_BOOST=boost/boost_1_59_0/
6.安装
make && make install
7.添加mysql用户及用户组
8.配置mysql环境变量
vim ~/.bash_profile
9.配置mysql配置文件
注意:这里的三行分别是mysql的目录,数据目录和套接字
10.制作mysql服务的启动脚本
11.初始化
这里的生成的初始密码一定要保存好,因为等下重置密码还要用
12.mysql安全初始化
我们的安全初始化只用修改密码即可,其他的全部回车默认就好
13.尝试登陆mysql
5.PHP源码安装
1.获取php源码安装包
大家可以选择在官网下载正规的源码安装包,我在这里已经有下载好的安装包
2.下载安装php所需要的依赖性
yum install -y net-snmp-devel libmcrypt-* gmp-devel-4.3.1-7.el6_2.2.x86_64 freetype-devel 2:libpng-devel-1.2.49-1.el6_2.x86_64 libjpeg-turbo-devel-1.2.1-1.el6.x86_64 libcurl-devel openssl-devel libxml2-devel
3.解压安装包
4.编译
./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --with-openssl --with-snmp --with-gd --with-zlib --with-curl --with-libxml-dir --with-png-dir --with-jpeg-dir --with-freetype-dir --with-gmp --with-gettext --with-pear --enable-mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-inline-optimization --enable-soap --enable-ftp --enable-sockets --enable-mbstring --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-mcrypt --with-mhash
5.安装make && make install
6.复制php配置文件模版,并配置,添加nginx用户
修改配置文件,删除其25行的分号
7.复制php主配置文件模版,修改时区
8.配置php服务启动脚本
9.启动php
六,nginx源码安装
1.下载所需的安装包
需要注意的是小编这里的版本比较低,大家可以选择高版本的进行安装
2.解压安装包
4.安装依赖性
5.编译的两个配置修改
关掉调试
关闭nginx的版本号显示
6.编译
./configure --prefix=/usr/local/lnmp/nginx --with-threads --with-file-aio --with-http_ssl_module --with-http_stub_status_module --user=nginx --group=nginx
编译时的三数我们可以根据我们所需要的功能来添加即可,若要查看功能模块则./configure --help查看
7.安装make && make install
8.编辑nginx的配置文件
我们在前两行修改了用户和nginx工作的进程数,它核cpu的核数是相同的,我们可以设置为auto(直接同步cpu核数)
让nginx可以处理.php文件
开启php
9,制作nginx的开启快捷方式(软连接)
nginx -t nginx语法检测
nginx -V nginx的配置模块查看
nginx -s stop 停止nginx
nginx -s reload 重新加在nginx
nginx 启动nginx
10.测试nginx
书写一个php默认发布界面
浏览器测试