LNMP:是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指Perl或Python。
lnmp的定义:指的是一个基于CentOS/Debian编写的Nginx、PHP、MySQL、phpMyAdmin、eAccelerator一键安装包。
lnmp的作用:是用来在Linux系统下Nginx+MySQL+PHP这种网站中搭建服务器架构。
lnmp:lnmp搭建的Linux系统,是目前最流行的免费操作系统。
lnmp的软件组建:Nginx、MySQL、PHP、PHPMyAdmin、Apache(可选)、Zend Optimizer(可选)、eAccelerator(可选)、ionCube(可选)、PureFTPd(可选)、VsFTPd(可选)
- 和LAMP不同的是,LNMP中提供web服务的是Nginx。
- 在LNMP架构中PHP是作为一个独立的服务存在的,这个服务叫做php-fpm。
- Nginx直接处理静态请求(支持的并发更高,速度比Apache快),动态请求转发给php-fpm处理
- LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。Nginx中的PHP是以fastcgi的方式结合Nginx的,可以理解为Nginx代理了PHP的fastcgi。
简介:
LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。
Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntu、fedora、gentoo等。
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
Mysql是一个小型关系型数据库管理系统。
这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统
特点:
Nginx是一个小巧而高效的Linux下的Web服务器软件,是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler 站点开发的,已经在一些俄罗斯的大型网站上运行多年,相当的稳定。
Nginx性能稳定、功能丰富、运维简单、处理静态文件速度快且消耗系统资源极少。
优点:
作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率。
作为负载均衡服务器:Nginx 既可以在内部直接支持Rails和PHP,也可以支持作为 HTTP代理服务器对外进行服务。Nginx 用C编写,不论是系统资源开销还是CPU使用效率都比Perlbal要好的多。
作为邮件代理服务器:Nginx同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last/fm 描述了成功并且美妙的使用经验。
Nginx 安装非常的简单,配置文件非常简洁(还能够支持perl语法)。Nginx支持平滑加载新的配置,还能够在不间断服务的情况下进行软件版本的升级。
一:mysql:
1:新建/usr/local/lnmp 目录,lnmp所需的服务文件都放与该目录下
2::安装需要的插件
[root@server1 ~]# tar zxf mysql-boost-5.7.17.tar.gz //解压mysql压缩包
[root@server1 ~]# yum install cmake-2.8.12.2-4.el6.x86_64.rpm -y //安装cmake
[root@server1 ~]# yum install -y gcc gcc-c++ ncurses-devel //安装gcc c++ ncurses-devel
[root@server1 ~]# cd mysql-5.7.17/
常用插件的说明:
-DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql \#安装目录
-DMYSQL_DATADIR=/usr/local/lnmp/mysql/data \#数据库存放目录
-DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock \ #Unix socket 文件路径
-DWITH_MYISAM_STORAGE_ENGINE=1 \#安装 myisam 存储引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 \#安装 innodb 存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \#安装 archive 存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \#安装 blackhole 存储引擎
-DWITH_PARTITION_STORAGE_ENGINE=1 \#安装数据库分区
-DENABLED_LOCAL_INFILE=1 \#允许从本地导入数据
-DWITH_READLINE=1 \#快捷键功能
-DWITH_SSL=yes \#支持 SSL
-DDEFAULT_CHARSET=utf8 \#使用 utf8 字符
-DDEFAULT_COLLATION=utf8_general_ci \#校验字符
-DEXTRA_CHARSETS=all \#安装所有扩展字符集
-DMYSQL_TCP_PORT=3306 #MySQL 监听端口
3:安装所需要的模块:
[root@server1 mysql-5.7.17]# 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
注意:如果在cmake时报错,缺什么,补什么,但是在重新cmaek之前要删掉缓存,之前的缓存保存在CMakeCache.txt文件中
[root@server1 mysql-5.7.17]# rm CMakeCache.txt
bison可以安装,也可以不安装,不安装的话会有警告,安装后删掉缓存要重新cmake
[root@server1 mysql-5.7.17]# yum install bison -y
4:make 和 make install
[root@server1 mysql-5.7.17]# make
[root@server1 mysql-5.7.17]# make install
5:设置启动脚本:
[root@server1 mysql-5.7.17]# cd /usr/local/lnmp/mysql/support-files
[root@server1 support-files]# cp mysql.server /etc/init.d/mysqld #启动脚本
6:给服务增加执行权限:
cd /etc/init.d/
chmod +x mysqld ##增加执行权限
7:备份配置文件,并复制一份新的配置文件
[root@server1 support-files]# cd /etc/
[root@server1 etc]# cp my.cnf my.cnf.bak
[root@server1 etc]# cd -
/usr/local/lnmp/mysql/support-files
[root@server1 support-files]# cp my-default.cnf /etc/my.cnf
cp: overwrite `/etc/my.cnf'? y
8:修改配置文件:在文件最后处添加:
[root@server1 support-files]# vim /etc/my.cnf
basedir = /usr/local/lnmp/mysql
datadir = /usr/local/lnmp/mysql/data
socket = /usr/local/lnmp/mysql/data/mysql.sock
9:创立mysql用户和组,并修改权限
[root@server1 support-files]# cd ..
[root@server1 mysql]# groupadd -g 27 mysql
[root@server1 mysql]# useradd -u 27 -g 27 mysql
[root@server1 mysql]# id mysql
uid=27(mysql) gid=27(mysql) groups=27(mysql)
[root@server1 mysql]# chown mysql.mysql . -R
10:设置环境变量并加载环境变量
[root@server1 mysql]# cd bin/
[root@server1 bin]# vim ~/.bash_profile
ATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin
[root@server1 bin]# source ~/.bash_profile
11:初始化mysql,会在最后得到一串密码,第一次登陆是要用
[root@server1 bin]# mysqld --user=mysql --initialize
2018-05-05T06:09:55.497845Z 1 [Note] A temporary password is generated for root@localhost: a/30?u:rIhsp
12:修改权限并且启动mysqld服务:
[root@server1 bin]# cd ..
[root@server1 mysql]# chown root . -R
[root@server1 mysql]# chown mysql data/ -R
[root@server1 mysql]# /etc/init.d/mysqld start
13:第二次初始化(会设置新密码)
[root@server1 mysql]# mysql_secure_installation
前两个直接回车,后面的yes
14:可以登陆mysql数据库
[root@server1 mysql]# mysql -uroot -predhat
二:php:
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
FastCGI FastCGI = Fast Common Gateway Interface(FastCGI 是由 fpm管理)
FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最 为人诟病的fork-and-execute 模式)。它还支持分布式的运算,即FastCGI程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。
FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。众所周知,CGI解释器的 反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail- Over特性等等
PHP-FPM
PHP-FPM是一个PHP FastCGI管理器,是只用于PHP的,可以在 http://php-fpm.org/download 下载。
PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中。必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。
PHP5.3.3已经集成php-fpm了,不再是第三方的包了。PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载 PHP配置,比spawn-fcgi具有更多有点,所以被PHP官方收录了。在./configure的时候带 –enable-fpm参数即可开启PHP-FPM
1:解压压缩包:
[root@server1 ~]# tar jxf php-5.6.35.tar.bz2
2:查看编译环境,编译,安装
[root@server1 php-5.6.35]# ./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-gettext --without-pear --enable-mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-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
3:此时发现编译是不能通过的,根据报错,缺什么补什么
yum whatprovides */不知道的包(用于查找不知道的安装包)
4:根据提示,大致要安装的php所依赖的软件
yum install libxml2-devel -y
yum install -y openssl-devel
yum install -y libcurl-devel
yum install -y libjpeg-turbo-devel-1.2.2-1.el6.x86_64
yum whatprovides */jpeglib.h ##查看jpeglib.h文件所在的包
yum install libjpeg-turbo-devel-1.2.1-1.el6.x86_64 -y
yum whatprovides */png.h
yum install libpng-devel-1.2.49-1.el6_2.x86_64 -y
yum install -y freetype-devel -y
yum whatprovides */gmp.h
yum install gmp-devel-4.3.1-7.el6_2.2.x86_64 -y
yum whatprovides */mcrypt.h
yum install -y libmcrypt-* ##不再镜像包,是单独的包
yum install -y net-snmp
yum install -y net-snmp-devel
5:安装
[root@server1 ~]# make
[root@server1 ~]# make install
6:创立nginx的用户和组
[root@server1 ~]# cd /usr/local/lnmp/php/
[root@server1 php]# useradd nginx
7:复制配置文件,并编译配置文件。配置文件已.conf结尾,也是为了安全起见,复制一份配置文件。
[root@server1 php]# cd etc/
[root@server1 etc]# cp php-fpm.conf.default php-fpm.conf
[root@server1 etc]# vim php-fpm.conf
pid = run/php-fpm.pid #将此处的注释取消
149 user = nginx 修改为nginx用户和nginx组
150 group = nginx
8:复制主配置文件和启动文件。在主配置文件中修改时区,给启动文件增加执行权限
[root@server1 etc]# cd
[root@server1 ~]# cd php-5.6.35
[root@server1 php-5.6.35]# cp php.ini-production /usr/local/lnmp/php/etc/php.in
[root@server1 ~]# cd sapi/fpm/
[root@server1 fpm]# cp init.d.php-fpm /etc/init.d/php-fpm
[root@server1 fpm]# chmod +x /etc/init.d/php-fpm
[root@server1 fpm]# cd /usr/local/lnmp/php/etc/
[root@server1 etc]# vim php.ini
date.timezone = Asia/Shanghai
9:开启php-fpm服务,并查看是否存在9000端口,判断是否开启成功
[root@server1 etc]# /etc/init.d/php-fpm start
[root@server1 etc]# netstat -antlp ##php-fpm服务占据的是9000端口
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 5858/php-fpm
三:nginx
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
Nginx 是一个很强大的高性能Web和反向代理服务,它具有很多非常优越的特性:
在连接高并发的情况下,Nginx是Apache服务不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应,感谢Nginx为我们选择了 epoll and kqueue作为开发模型
服务器:
Nginx作为负载均衡服务:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务对外进行服务。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。
处理静态文件,索引文件以及自动索引;打开文件描述符缓冲。
无缓存的反向代理加速,简单的负载均衡和容错。
FastCGI,简单的负载均衡和容错。
模块化的结构。包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等 filter。如果由 FastCG或其它代理服务器处理单页中存在的多个 SSI,则这项处理可以并行运行,而不需要相互等待。
支持 SSL 和 TLSSNI
1:解压nginx安装包
[root@server1 ~]# tar zxf nginx-1.14.0.tar.gz
2:修改文件
[root@server1 ~]# cd nginx-1.14.0
[root@server1 nginx-1.14.0]# vim src/core/nginx.h
#define NGINX_VER "nginx" (将后面的版本号隐藏)
[root@server1 nginx-1.14.0]# vim auto/cc/gcc
# debug
#CFLAGS="$CFLAGS -g" (关闭degug日至,一般用不到debug日至,它记录的东西非常详细,不关闭的化,几天bedug日至就把硬盘跑满了)
3:安装依赖文件,编译,安装
yum install pcre-devel -y
cd nginx-1.14.0
./configure --help ##查看编译帮抓
[root@server1 nginx-1.14.0]# ./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio --user=nginx --group=nginx
[root@server1 nginx-1.14.0]# make && make install
4:修改配置文件
[root@server1 nginx-1.14.0]# cd /usr/local/lnmp/nginx/
[root@server1 nginx]# cd conf/
[root@server1 conf]# vim nginx.conf
修改如下:
[root@server1 conf]# vim nginx.conf
#access_log logs/host.access.log main;
location / {
root html;
index index.php index.html index.htm;
}
#error_page 404 /404.html;
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;
}
5:做软连接,方便开启nginx服务:
[root@server1 sbin]# ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin/
[root@server1 sbin]# cd
[root@server1 ~]# nginx -t #查看nginx服务是否能够正常开启
[root@server1 ~]# nginx #开启nginx服务
[root@server1 ~]# netstat -antlp ##查看端口,80端口开启成功(nginx服务和apache服务一样,占用的是80端口)
6:访问网页,编写php访问网页
没写index.php之前:访问是显示:
[root@server1 ~]# vim /usr/local/lnmp/nginx/html/index.php
<?php
phpinfo()
?>
写了index.php之后,访问的是php动态页面,浏览器访问172.25.60.1:
四:lnmp的整合----论坛的搭建以及使用
1:安装解压工具unzip:
[root@server1 ~]# yum install -y unzip
2:下载论坛的安装包,并解压到nginx的默认发布目录
[root@server1 ~]# unzip Discuz_X3.2_SC_UTF8.zip -d /usr/local/lnmp/nginx/html/
3:修改论坛的名字为bbs----upload为论坛的包
[root@server1 ~]# cd /usr/local/lnmp/nginx/html
[root@server1 html]# mv upload/ bbs
4:登陆论坛
访问172.25.60.1/bbs(此时发现进不去,缺少权限)
5:修改相关文件的权限:
[root@server1 html]# cd bbs/
[root@server1 bbs]# chmod 777 config/ -R
[root@server1 bbs]# chmod 777 data/ -R
[root@server1 bbs]# chmod 777 uc_server/ uc_client/ -R
6:创建数据库
安装的时候发现,数据库链接错误,没有文件或者目录
作出以下修改:
[root@server1 etc]# vim php.ini
mysql.default_socket = /usr/local/lnmp/mysql/data/mysql.sock
mysqli.default_socket = /usr/local/lnmp/mysql/data/mysql.sock
pdo_mysql.default_socket= /usr/local/lnmp/myql/data/mysql.sock
7:重新加载php服务:
[root@server1 etc]# /etc/init.d/php-fpm reload
8:此时可能会出现无法登陆的情况(连接被拒绝)
可能因为是mysql数据库下data目录的权限不足:
[root@server1 etc]# cd /usr/local/lnmp/mysql/
[root@server1 mysql]# chmod 755 data/
9:登陆论坛,管理员登陆(会提示删除下面的目录)
输入管理员帐号密码 --> 管理中心 --> 删除文件,过程如下
cd /usr/local/lnmp/nginx/html/bbs/install/
m -rf index.php
10:用户 --> 添加用户,可以通过数据库产看用户的信息
mysql -uroot -predhat
进入数据库之后:
show databases;
use discuz;
show tables;
select * from pre_ucenter_memebers; #可以查看到之前在网页中添加的用户