LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指Perl或Python
首先,浏览器发送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的形式传送给浏览器。浏览器再进行解析与渲染然后进行呈现。
client -> nginx -> php(php-fpm) -> mysql_connect()/mysql_select() -> mysql(redis)
nginx:有缓存功能
php:动态资源交给php
mysql_connect():数据库连接
mysql_select():数据库查询是否存在
mysql:关系型数据库
使用rhel6.5版本虚拟机,虚拟机配置cpu-2个,内存大小-2048,硬盘大小-20G
PHP简单介绍:
一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快
tar jxf php-5.6.35.tar.bz2
cd php-5.6.35
切换目录,进行编译
解决编译时需要的依赖软件,并开始安装(需要libmcrypt两个安装包)
yum install -y gcc pcre-devel zlib-devel libxml2-devel openssl-devel libcurl-devel libjpeg-turbo-devel.x86_64 0:1.2.1-1.el6 libpng-devel-1.2.49-1.el6_2.x86_64 freetype-devel.x86_64 gmp-devel-4.3.1-7.el6_2.2.x86_64 openldap-devel-2.4.23-32.el6_4.1.x86_64 libmcrypt.x86_64 libmcrypt-devel.x86_64 net-snmp-devel
编译
./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
创建用户
useradd nginx
mkdir /usr/local/lnmp #之前以建立过的则不需要再次建立
配置文件的复制
cd /usr/local/lnmp/php/etc/
cp php-fpm.conf.default php-fpm.conf
vim php-fpm.conf #查看用户和用户组是否是nginx
pid = run/php-fpm.pid #取消注释
主配置文件的复制
cd php-5.6.35
cp php.ini-production /usr/local/lnmp/php/etc/php.ini
vim /usr/local/lnmp/php/etc/php.ini #修改时区,主配置文件
date.timezone = Asia/Shanghai
启动脚本的复制
cd /root/php-5.6.35
cd php-5.6.35/sapi/fpm
cp init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
开启php
/etc/init.d/php-fpm start
netstat -tnlp #查看127.0.0.1:9000端口是否打开(回环接口:nginx通过内部接口访问php)< FastCGI = Fast Common Gateway Interface 接口>
为使开启php方便,添加php环境变量
vim ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin:/usr/local/lnmp/php/bin
source ~/.bash_profile
yum install -y cmake-2.8.12.2-4.el6.x86_64.rpm #安装cmake
tar zxf mysql-boost-5.7.27.tar.gz #解压mysql安装包
ls
cd mysql-5.7.27/ #进入解压目录
ls
在编译过程中需要解决依赖性,并且在每次重新编译前都需要删除解压包目录下的CMakeCache.txt文件
yum install -y gcc-c++ ncurses-devel bison #安装软件解决依赖性
#编译方法1:
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/
#编译方法2:
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
make && make install #安装
启动脚本的复制
cd support-files/
cp mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
修改配置文件
cp /etc/my.cnf /etc/my.cnf.bak
cp my-default.cnf /etc/my.cnf
vim /etc/my.cnf
basedir = /usr/local/lnmp/mysql
datadir = /usr/local/lnmp/mysql/data
socket = /usr/local/lnmp/mysql/data/mysql.sock
#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
修改用户和用户组,生成data目录
groupadd -g 27 mysql #当不进行编译,使用yum直接安装mysql时,生成的用户组id就为27
useradd -u 27 -g 27 mysql
chown mysql.mysql /usr/local/lnmp/mysql -R
修改环境配置
vim ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin
source ~/.bash_profile #使修改生效
数据库初始化
mysqld --user=mysql --initialize
(会生成一个密码)
将安装目录的所有人改回为root(安全),将data目录的所有人改为mysql
chown root /usr/local/lnmp/mysql -R
chown mysql /usr/local/lnmp/mysql/data -R
开启mysql,进行安全初始化
/etc/init.d/mysqld start
netstat -tnlp #3306端口开启
mysql_secure_installation #两次n,四次y(初始化时,data目录下必须为空)
tar zxf nginx-1.16.0.tar.gz
cd nginx-1.16.0
vim src/core/nginx.h
#define NGINX_VER "nginx" #取消版本显示
vim auto/cc/gcc
#CFLAGS="$CFLAGS -g" #编译安装后的nginx内存占有量较小
./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio --user=nginx --group=nginx #编译(提前应安装pcre-devel---yum install -y pcre-devel)
make && make install #安装
修改配置文件
cd /usr/local/lnmp/nginx/
vim conf/nginx.conf
写入:
user nginx nginx;
location / {
root html;
index index.php index.html index.htm; #添加php默认发布页面
}
location ~ \.php$ { #打开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;
}
建立软连接
ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin
echo $PATH #查看是否软链接添加成功
编辑php默认发布文件
cd html/
vim index.php #写入php页面
开启nginx
/etc/init.d/mysqld start #开启mysq
netstat -tnlp #80端口,3306端口开启
测试
浏览器输入:172.25.18.1
出现php页面