企业WEB服务器LNMP详解

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
全局流量管理 GTM,标准版 1个月
简介:

 部署LNMP和部署LAMP方法是一样的,只不过是WEB服务器软件换了而已,这里使用的WEB服务器软件就是一篇文章中所部署的Nginx,所谓的LNMP也就是Linux+Nginx+Mysql+PHP。之所以使用LNMP是因为它是一个高性能的动态网站平台,在某些领域比LAMP还要出色,那么接下来我们就来部署一下LNMP环境吧。

部署环境:

操作系统:rhel6.0_x64

Nginx:nginx-1.0.8.tar.gz

Mysql:mysql-5.1.55.tar.gz

PHP:php-5.3.6.tar.gz


部署LNMP一共分为以下几个步骤:

一、安装Linux

这个大家都会,就不啰嗦了,不会的可以参考作者相关文章,有详细介绍。


二、安装Nginx

作者上一篇文章就详细介绍了如何安装Nginx,大家如果不会的可以参考作者上一篇文章,作者这里就不在详细叙述了。


三、安装Mysql数据库

1、编译安装Mysql

1
2
3
4
[root@web /]#tar zxf /usr/src/mysql- 5.1 . 55 .tar.gz
[root@web /]#cd /usr/src/mysql- 5.1 . 55
[root@web mysql- 5.1 . 55 ]#./configure --prefix=/usr/src/mysql -- with -charset=utf8 -- with -collation_general_ci -- with -extra-charsets=gbk,gb2312
[root@web mysql- 5.1 . 55 ]#make && make install

注意:上述配置参数解释如下:

--with-charset:指定默认使用的字符集编码;

--with-collation:指定默认使用的字符集校对规则,utf8_general_ci是适用于UTF-8字符集的通用规则;

--with-extra-charsets:指定额外支持的其他字符集编码。

2、优化调整Mysql服务:

1
2
3
4
5
6
[root@web mysql- 5.1 . 55 ]#cp -p support-files/my-medium.cnf /etc/my.cnf
[root@web mysql- 5.1 . 55 ]#cp support-files/my-server /etc/init.d/mysqld
[root@web mysql- 5.1 . 55 ]#chmod a+x /etc/init.d/mysqld
[root@web mysql- 5.1 . 55 ]#ln -s /usr/local/mysql/bin/* /usr/local/bin/
[root@web mysql- 5.1 . 55 ]#ln -s /usr/local/mysql/lib/mysql/* /usr/lib/
[root@web mysql- 5.1 . 55 ]#ln -s /usr/local/mysql/ include /mysql/* /usr/ include /

3、创建Mysql用户以及初始化Mysql数据库:

1
2
3
4
5
[root@web mysql- 5.1 . 55 ]#useradd -M -u  27  -s /sbin/nologin mysql
[root@web mysql- 5.1 . 55 ]#cd /usr/local/mysql/bin
[root@web bin]#./mysql_install_db --user=mysql
[root@web bin]#chown -R root:mysql /usr/local/mysql/
[root@web bin]#chown -R mysql /usr/local/mysql/ var /


4、启动Mysql服务,并为root用户设置密码

1
2
[root@web bin]#service mysqld start
[root@web bin]#mysqladmin -u root -p password ‘pwd@ 123


四、安装PHP解析环境

   较新版本(如5.3)的PHP已经自带FPM(fastCGI  process  manager,FastCGI进程管理器)模块,用来对PHP解析实例进行管理,优化解析效率,因此在配置PHP编译选项时应添加”--enable-fpm”以启用此模块。为了提高PHP解析效率,建议将相应版本的ZendGuardLander也装上。

1、解压并配置PHP

1
2
3
[root@web /]#tar zxf /usr/src/php- 5.3 . 6 .tar.gz
[root@web /]#cd /usr/src/php- 5.3 . 6
[root@web php- 5.3 . 6 ]#./configure --prefix=/usr/local/php5 -- with -gd -- with -zlib - with -mysql=/usr/local/mysql -- with -config-file=/usr/local/php5 --enable-mbstring --enable-fpm

注意:配置如果“configure:error: libpng.(a|so) not found.”错误。

解决方法:

根据报错发现是因为libpng.solibpng.a找不到,检查libpng的相关软件是否已经安装,如果已安装,需要将“/usr/lib64/libpng*”库文件拷贝到“/usr/lib”下。执行如下命令:

1
[root@web /]#cp -frp /usr/lib64/libpng* /usr/libyuanyi

原因:因为configure一般的搜索编译路径为/usr/lib/下,而x64位的系统默认在“/usr/lib64”下,因此需要拷贝到“/usr/lib”目录下。

如果报configure: error: libjpeg.(a|so) not found错误解决方法和上面的解决方法类似。

2、编译安装PHP,并配置安装后的调整

1
2
3
4
[root@web php- 5.3 . 6 ]#make && make install
[root@web php- 5.3 . 6 ]#cp php.ini-development /usr/local/php5/php.ini
[root@web php- 5.3 . 6 ]#ln -s /usr/local/php5/bin/* /usr/loacl/bin
[root@web php- 5.3 . 6 ]#ln -s /usr/local/php5/sbin/* /usr/local/sbin

3、安装ZendGuardLander

注:若RHEL664位系统,该软件得到其官网下载64位的相应软件包,若用32位的就会报错。下载地址:http://www.zend.com/en/products/guard/downloads

1
2
3
[root@web /]#tar zxf /usr/src/ZendGuardLoader-php- 5.3 -linux-glibc23-i386.tar.gz
[root@web /]#cd ZendGuardLoader-php- 5.3 -linux-glibc23-i386/php- 5.3 .x/
[root@web /]#cp ZendGuardLoader.so /usr/local/php5/lib/php/

修改php.ini文件,添加如下内容

1
2
3
4
[root@web /]#vim /usr/local/php5/php.ini
... //省略部分内容
zend_extension=/usr/local/php5/lib/php/ZendGuarLoader.so
zend_loader.enable= 1

4、配置Nginx支持PHP环境

   若要让Nginx能够解析PHP网页,有两种方法可以选择;其一,充当中介,将访问PHP页面的WEB请求转交给其他服务器(LAMP)去处理;其二,通过使用PHPFPM模块来调用本机的PHP环境,在此作者选择后者。

   如果选用FPM方式,则需要先启动php-fpm进程,以便监听PHP解析请求。参考范例建立php-fpm.conf配置文件,并修改其中的PID文件、运行用户、服务数(进程数量)等相关设置,然后启动php-fpm程序即可(默认监听本机的9000端口)

1
2
3
4
5
6
7
8
9
10
[root@web /]#cd /usr/local/php5/etc/
[root@web etc]#cp php-fpm.conf. default  php-fpm.conf
[root@web etc]#vim php-fpm.conf
... //省略部分内容                 #修改如下内容
pid = run/php-fpm.pid
user = nginx
group = nginx
pm.start_servers =  20
pm.min_spare_servers =  5
pm.max_spare_servers =  35

修改完成后,启动php-fpm,并查看地址监听。

1
2
[root@web /]#/usr/local/sbin/php-fpm
[root@web /]#netstat -anpt | grep php-fpm

5、修改nginx启动脚本,使php-fpm随nginx启动而启动


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[root@web /]#vim /etc/init.d/nginx
#!/bin/bash
# chkconfig:  2345  99  20
# description: Nginx service Control Script
cmd= "/usr/local/naginx/sbin/nginx"
pid= "/usr/local/nginx/logs/nginx.pid"
fpm_cmd= "/usr/local/sbin/php-fpm"       #添加php-fpm
fpm_pid= "/usr/local/php5/var/run/php-fpm.pid"     #添加php-fpm.pid
case  "$1"  in
start)
     $cmd
     $fpm_cmd      #添加fpm_cmd
     ;;
stop)
     kill -s QUIT $(cat $pid)
     kill -s QUIT $(more $fpm_pid)   #添加fpm_pid
     ;;
restart)
     $ 0  stop
     $ 0  start
     ;;
reload)
     kill -s HUP $(cat $pid)
     ;;
*)
     echo  "Usage: $0 {start|stop|restart|reload}"
     exit  1
esac

这样一来,一旦启动或关闭nginx服务,php-fpm程序也会随之启动或关闭,不需要额外再启动或关闭php-fpm。

6、配置Nginx支持PHP解析

   无论是将PHP页面交给LAMP服务器去解析,还是调用本机的php-fpm进程进行解析,都需要在”server{}”配置段中添加location设置,以便指定当访问.php面页时采取何种操作。

方法一:转交给其他WEB服务器处理,例如:交给IP地址为192.168.0.200LAMP服务器处理,从而实现由Nginx负责静态页面,LAMP负责动态页面的分离效果。

1
2
3
4
5
6
server  {
……  //省略部分信息
     location  ~  \.php$  {                        //访问.php页面的配置段
           proxy_pass   http: //192.168.0.200:80;  //APACHE服务器的监听地址
           }
     }

上面这种写法只是发送以.php为后缀的页面访问请求给其他WEB服务器,如果有其格式的文件访问(如:htmljpg等)就会出问题。访问不了了。

方法二:调用本机的php-fpm进程,使用的配置语句如下所示。在conf/目录下的fastcgi.conf文件中已经包含必需的宏设置,可通过include语句添加进来。

1
2
3
4
5
6
7
8
9
server  {
……  //省略部分信息
     location  ~  \.php$ {                 //访问php页面的配置段
           root    / var /www/benet;         //PHP网页文档根目录
           fastcgi_pass   127.0 . 0.1 : 9000 ;   //php-fpm的监听地址
           fastcgi_index  index.php;       //PHP首页文件
           include    fastcgi.conf;         //包括fastcgi.conf样本配置
   }
}

本文档中作者选择的是第二种方法,完成修改后重新加载nginx服务即可生效。

作者Nginx配置文中整个server段的配置内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
     listen  80 ;
     server_name www.benet.com;
     charset utf- 8 ;
     access_log logs/benet.access.log main;
     location /{
         root / var /www/benet/;
         index index.html index.php;
         }
     location ~ \.php$ {
         root / var /www/benet;
         fastcgi_pass  127.0 . 0.1 : 9000 ;
         fastcgi_index index.php;
         include  fastcgi.conf;
         }
     }
[root@web /]service nginx restart

7、添加一个测试网页,检测是否支持PHP解析

   在PHP文档根目录下创建一个测试网页,以便测试PHP语名能否正常解析,以及能否访问MYSQL数据库。测试页内容如下

1
2
3
4
5
6
[root@web /]vim / var /www/benet/index.php
<?php
$link=mysql_connect( 'localhost' , 'root' , 'pwd@123' );
if ($link) echo  "sucess!!!" ;
mysql_close();
?>

8、访问测试网页,看看是否连接成功。

005924444.jpg

   至此LNMP换机已经搭建完成了,现在还流行一种WEB平台的搭建方法,叫做LNMMP。它是结合Memcached缓存系统实现高效的用户访问效率的WEB服务器解决方案。大家有兴趣可以自己去研究研究。



本文转自yun5277 51CTO博客,原文链接:http://blog.51cto.com/dengqi/1291010,如需转载请自行联系原作者
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
16天前
|
关系型数据库 应用服务中间件 Linux
Linux云服务器如何搭建LNMP环境
LNMP环境是Linux系统中常用的Web服务架构,由Linux、Nginx、MySQL/MariaDB和PHP组成,适用于高效托管动态网站。本文以CentOS 7为例,详细介绍了LNMP环境的搭建步骤,包括Nginx、MariaDB和PHP的安装与配置,以及最终通过创建`index.php`文件验证环境是否成功部署。具体操作涵盖配置YUM仓库、安装服务、编辑配置文件、启动服务等关键步骤,确保用户能够顺利搭建并运行LNMP环境。
44 1
Linux云服务器如何搭建LNMP环境
|
4月前
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
100 3
|
5月前
|
Kubernetes 安全 应用服务中间件
动态威胁场景下赋能企业安全,F5推出BIG-IP Next Web应用防火墙
动态威胁场景下赋能企业安全,F5推出BIG-IP Next Web应用防火墙
117 3
|
5月前
|
人工智能 搜索推荐 API
用于企业AI搜索的Bocha Web Search API,给LLM提供联网搜索能力和长文本上下文
博查Web Search API是由博查提供的企业级互联网网页搜索API接口,允许开发者通过编程访问博查搜索引擎的搜索结果和相关信息,实现在应用程序或网站中集成搜索功能。该API支持近亿级网页内容搜索,适用于各类AI应用、RAG应用和AI Agent智能体的开发,解决数据安全、价格高昂和内容合规等问题。通过注册博查开发者账户、获取API KEY并调用API,开发者可以轻松集成搜索功能。
|
5月前
|
Java PHP
PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。理解其垃圾回收机制有助于开发高效稳定的PHP应用。
【10月更文挑战第1天】PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。其垃圾回收机制包括引用计数与循环垃圾回收,对提升应用性能和稳定性至关重要。本文通过具体案例分析,详细探讨PHP垃圾回收机制的工作原理,特别是如何解决循环引用问题。在PHP 8中,垃圾回收机制得到进一步优化,提高了效率和准确性。理解这些机制有助于开发高效稳定的PHP应用。
72 3
|
6月前
|
运维 安全 网络安全
Web安全-企业网络架构
Web安全-企业网络架构
58 1
|
7月前
|
API C# 开发框架
WPF与Web服务集成大揭秘:手把手教你调用RESTful API,客户端与服务器端优劣对比全解析!
【8月更文挑战第31天】在现代软件开发中,WPF 和 Web 服务各具特色。WPF 以其出色的界面展示能力受到欢迎,而 Web 服务则凭借跨平台和易维护性在互联网应用中占有一席之地。本文探讨了 WPF 如何通过 HttpClient 类调用 RESTful API,并展示了基于 ASP.NET Core 的 Web 服务如何实现同样的功能。通过对比分析,揭示了两者各自的优缺点:WPF 客户端直接处理数据,减轻服务器负担,但需处理网络异常;Web 服务则能利用服务器端功能如缓存和权限验证,但可能增加服务器负载。希望本文能帮助开发者根据具体需求选择合适的技术方案。
351 0
|
7月前
|
Rust 安全 开发者
惊爆!Xamarin 携手机器学习,开启智能应用新纪元,个性化体验与跨平台优势完美融合大揭秘!
【8月更文挑战第31天】随着互联网的发展,Web应用对性能和安全性要求不断提高。Rust凭借卓越的性能、内存安全及丰富生态,成为构建高性能Web服务器的理想选择。本文通过一个简单示例,展示如何使用Rust和Actix-web框架搭建基本Web服务器,从创建项目到运行服务器全程指导,帮助读者领略Rust在Web后端开发中的强大能力。通过实践,读者可以体验到Rust在性能和安全性方面的优势,以及其在Web开发领域的巨大潜力。
62 0
|
关系型数据库 MySQL 应用服务中间件
手动部署LNMP环境(Alibaba Cloud Linux 2)
本场景带您体验如何在Alibaba Cloud Linux 2.1903 LTS 64位操作系统的云服务器上搭建LNMP环境。
|
10月前
|
关系型数据库 应用服务中间件 nginx
基于Docker的LNMP环境微服务搭建
基于Docker的LNMP环境微服务搭建
基于Docker的LNMP环境微服务搭建