LNMP配置(Linux、Nginx、MySQL、PHP)
1、LNMP应用环境
随着 Nginx Web 服务的逐渐流行,慢慢的岀现了新的 Web 服务环境组合—LNMP & LEMP,其中 LNMP为 Linux、Nginx、MySQL、PHP 等首字母的缩写。如今,LNMP 已经逐渐成为国内大中型互联网公司网站的主流组合环境。
2、LNMP组合工作流程
当 LNMP 组合工作时,首先用户会通过在浏览器中输人域名请求 Nginx Web 服务,如果请求的是静态资源,则由 Nginx 解析返回给用户; 如果请求的是动态资源( .php 结尾 ),那么Nginx 就会把它通过 FastCGI 接口( 生产常用方法)发送给 PHP 引擎服务( FastCGI 进程php-fpm ) 进行解析,如果这个动态请求要读取数据库数据,那么 PHP 就会继续向后请求 MySQL 数据库,以读取需要的数据,并最终通过 Nginx 服务把获取的数据返回给用户。
3、FastCGI介绍
1)什么是 CGI
CGI 的全称为 “通用网关接口”( Common Gateway Interface ),为 HTTP 服务器与其他机器上的程序服务通信交流的一种工具,CGI 程序须运行在网络服务器上。传统 CGI 接口方式的主要缺点是性能较差,因为每次 HTTP 服务器遇到动态程序时都需要重新启动解析器来执行解析,之后结果才会被返回给 HTTP 服务器。这在处理高并发访问时几乎是不可用的,因此就诞生了 FastCGI。另外传统的 CGI 接口方式安全性也很差,故而现在已经很少被使用了。
2)什么是 FastCGI
FastCGI 是一个可伸缩地、 高速地在 HTTP 服务器和动态脚本语言间通信的接口(在 Linux 下,FastCGI 接口即为 socket,这个 socket 可以是文件 socket,也可以是 IP socket)主要优点是把动态语言和 HTTP 服务器分离开来。多数流行的 HTTP 服务器都支持 FastCGI,包括 Apache、Nginx 以及 Lighttpd等等。同时,FastCGI 也被许多脚本语言所支持,例如当前比较流行的脚本语言 PHP。FastCGI 接口采用的是 C/S 架构,它可以将 HTTP 服务器和脚本解析服务器分开,同时还能在脚本解析服务器上启动一个或多个脚本来解析守护进程。当 HTTP 服务器遇到动态程序时,可以将其直接交付给 FastCGI 进程来执行,然后将得到的结果返回给浏览器。这种方式可以让 HTTP 服务器专一地处理静态请求,或者将动态脚本服务器的结果返回给客户端,这在很大程度上提高了整个应用系统的性能。
3)FastCGI 的重要特点
HTTP 服务器和动态脚本语言间通信的接口或工具。可把动态语言解析和 HTTP 服务器分离开。Nginx、Apache 、Lighttpd,以及多数动态语言都支持 FastCGI。FastCGI 接口方式采用 C/S 结构, 分为客户端( HTTP 服务器)和服务器端( 动态语言解析服务器)。PHP 动态语言服务器端可以启动多个 FastCGI 的守护进程,例如 php-fpm(fcgi processmangement)。HTTP 服务器通过例如 Nginx fastcgi_pass FastCGI 客户端和动态语言 FastCGI 服务器端通信,例如 php-fpm。
4)Nginx FastCGI 的运行原理
Nginx 不支持对外部动态程序的直接调用或者解析,所有的外部程序(包括 PHP)必须通过 FastCGI 接口来调用。FastCGI 接口在 Linux 下是 socket,为了调用 CGI 程序,还需要一个 FastCGI 的 wrapper(可以理解为用于启动另一个程序的程序),这个 wrapper绑定在某个固定的 socket 上,如端口或文件socket。当 Nginx 将 CGI 请求发送给这个 socket 的时候,通过 FastCGI 接口,wrapper 接收到请求,然后派生岀一个新的线程,这个线程调用解释器或外部程序处理脚本来读取返回的数据;接着,wrapper 再将返回的数据通过 FastCGI 接口,沿着固定的 socket 传递给 Nginx;最后,Nginx 将返回的数据发送给客户端,这就是 Nginx+FastCGI 的整个运作过程。FastCGI 的主要优点是把动态语言和 HTTP 服务器分离开来,使 Nginx 专门处理静态请求及向后转发的动态请求,而 PHP/PHP-FPM 服务器则专门解析 PHP 动态请求。
4、配置LNMP
1)部署LNMP环境
① 安装国内的epel(阿里)
[root@138 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
② 安装LNMP环境所需包
[root@138 ~]# yum install nginx mariadb-server php php-mysql php-gd php-fpm -y
2)配置LNMP环境
① 数据库
[root@138 ~]# systemctl enable mariadb --now
[root@138 ~]# mysqladmin -uroot password '123456'
② php-fpm
[root@138 ~]# vim /etc/nginx/nginx.conf
server {
listen 80;
listen [::]:80;
server_name localhost;
root /usr/share/nginx/html;
index index.php index.html index.htm;
# Load configuration files for the default server block.
include /etc/nginx/default.d/\*.conf;
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
#以上内容根据实际情况对照修改
③ php
[root@138 ~]# vim /etc/php.ini
cgi.fix_pathinfo=0
date.timezone ="Asia/shanghai"
3)启动服务
[root@138 ~]# systemctl start nginx mariadb php-fpm
4)测试协同
① 测试nginx和php协同
[root@138 ~]# echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/phpinfo.php
② 测试mysql和php协同
[root@138 ~]# vim /usr/share/nginx/html/mysql.php
<?php
$con = mysql_connect("localhost","root","123456");
if (!$con) {
die("could not connect to the db:\n" . mysql_error());
}
else { echo "success"; }
mysql_close($con);
?>
③ 删除测试的php文件(极其重要)【涉及安全问题】
[root@138 ~]# rm -rf /usr/share/nginx/html
5)部署应用
① 在wordpress官网下载对应版本
wordpress下载链接:https://cn.wordpress.org/download/releases/
[root@138 html]# pwd
/usr/share/nginx/html
[root@138 html]# wget -c https://cn.wordpress.org/wordpress-4.3.1-zh_CN.tar.gz
[root@138 html]# ll wordpress-4.3.1-zh_CN.tar.gz
-rw-r--r-- 1 root root 6922520 Jun 28 11:26 wordpress-4.3.1-zh_CN.tar.gz
[root@138 html]# tar xf wordpress-4.3.1-zh_CN.tar.gz
② 为wordpress创建对应数据库和用户
[root@138 html]# mysql -uroot -p123456 -e "create database wordpress character set utf8;"
[root@138 html]# mysql -uroot -p123456 -e "grant all on wordpress.* to wordpress@localhost identified by '123456';"
③ 部署网站
URL:192.168.25.138/wordpress/ 填写对应数据库和用户即可提交进行下一步 根据步骤进行即可(显示没有权限)
[root@138 wordpress]# pwd
/usr/share/nginx/html/wordpress
[root@138 wordpress]# vim wp-config.php #将内容复制进来
<?php
define('DB_NAME', 'wordpress');
define('DB_USER', 'wordpress');
define('DB_PASSWORD', '123456');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8mb4');
define('DB_COLLATE', '');
define('AUTH_KEY', 'L.3iqJK[~o/u..Y.v|HU:VzFyC-/u;>$]bg9mhi&=ex2wLVIWh8W6?DFoa~^DAC-');
define('SECURE_AUTH_KEY', '|sy1paQb[rifwRP`VfH<USr=;n].PxJ^-]VJWc/^+X0`J|UZ$x*#A+5vdo!,Z@}>');
define('LOGGED_IN_KEY', '~K{@4d?fDilj*qX)Sdg_oRAUm4F#Zu!EnEjq`gq w<niI 2}TsA5!{K}JLf=O&z]');
define('NONCE_KEY', '@F>h{|O,$_g!(@|ev3pcEEO)#8kHkl+~ym!LVZ>}^HYEGv$;^QT^}L7*|KGrN?V{');
define('AUTH_SALT', 'QZjH.k`GU#LJ+M}.(BTg3Wbgni;h$LU+H[kk|*zKFo7N<6:#|;xU+F(X:q y3cd2');
define('SECURE_AUTH_SALT', 'r&{UX2!68 $1{c@cR|^lE+V@)&K+U>Aw)(O?[Nh VrS]a3|34e<1^i9>agI<9M|5');
define('LOGGED_IN_SALT', '5HJ|TFb4),SMrH6HgtD:uEO.3>[mIR[mZeD/^:wl5x4:}q5!bo2^vug:e8tI25MZ');
define('NONCE_SALT', 'j7^_Q[(<IFd6L%#po+UI+-Ymy+=u4rGN}iA;` 7GaL6-d+2]x|FjF4wh7yU{g`-_');
$table_prefix = 'wp_';
define('WP_DEBUG', false);
define('WP_ZH_CN_ICP_NUM', true);
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
require_once(ABSPATH . 'wp-settings.php');
?>
点击进行安装进入下一步(按照需求填写即可) 看到此界面表示已完成
|