LEMP架构及应用部署

LEMP架构及应用部署

LAMPLinux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,PerlPHP或者Python编程语言,所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构,和 Java/J2EE架构相比,LAMP具有Web资源丰富、轻量、快速开发等特点,与微软的.NET架构相比,LAMP具有通用、跨平台、高性能、低价格的优势,因此LAMP无论是性能、质量还是价格都是企业搭建网站的首选平台。

适用环境

系统支持:CentOS-5 (32bit/64bit)、CentOS-6 (32bit/64bit)等linux系统

内存要求:≥256M

  • 构建LEMP网站平台
  • 以编译的方式安装nginx

(1)、使用yum安装nginx所需要支持的软件,分别是pcre-devel和zlib-devel。

[[email protected] ~]# yum -y  install  pcre-devel zlib-devel

(2)、创建运行用户和组

[[email protected] ~]# useradd  -M  -s  /sbin/nologin  nginx

(3)、编译安装nginx

[[email protected] ~]# tar zxf  nginx-1.0.8.tar.gz

[[email protected] ~]# cd nginx-1.0.8

[[email protected] nginx]# ./configure  --prefix=/usr/local/nginx  --user=nginx --group=nginx  --with-http_status_modult

[[email protected] ~]#make &&  make  install

为了使nginx服务器运行方便,可以为主程序nginx创建链接文件。

[[email protected] ~]# ln -s /usr/local/nginx/sbin/nginx /usr/login/sbin

附加:

如有想让对nginx服务启动、关闭方便的话,建议编写下面的脚本。

[[email protected] ~]#vim /etc/init.d/nginx

#!/bin/bash

# chkconfig: - 9920

# description:Nginx Service Control Script

PROG=“/usr/local/nginx/sbin/nginx”

PIDF= “/usr/local/nginx/logs/nginx.pid”

case “$1” in

start)

$PROG

;;

stop)

kill  -s  QUIT$(cat  $PIDF)

;;

restart)

$0 stop

$0 start

;;

reload)

kill -s  HUP $(cat  $PIDF)

;;

*)

echo “Usage: $0 {start|stop|restart|reload}”

exit 1

esac

exit  0

[[email protected] ~]# chmod  +x  /etc/init.d/nginx

[[email protected] ~]# chkconfig  --add nginx

  1. 2.    安装MySQL数据库

(1)、编译安装MySQL数据库

可以从官方网站www.mysql.com下载,以5.1版本为例

[[email protected] ~]# tar zxf mysql-5.1.55.tar.gz

[[email protected] ~]# cd  mysql-5.1.55

[[email protected]]# ./configure --prefix=/usr/local/mysql --with-charset=utf8   --with-collation=utf8_general_ci  --with-extra-charsets=gbk,gb2312

注解:

--with-charset   //默认使用的字符集编码

--with-collation  //指定默认使用字符集校对规则

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

Utf8_general_ci     //适用于UTF-8字符集的通用原则

[[email protected] ~]# make  && make  install

(2)、优化调整

[[email protected] mysql-1.5.55]# cp  support-files/my-medium.cnf  /etc/my.conf

[[email protected] mysql-1.5.55]# cp  support-files/mysql.server  /etc/init.d/mysqld

[[email protected] mysql-1.5.55]# chmod  a+x  /etc/rc.d/init.d/mysqld

[[email protected]  mysql-1.5.55]# chkconfig  --add mysqld

[[email protected] mysql-1.5.55]# ln  -s /usr/local/mysql/sbin/* /usr/local/bin/

[[email protected] mysql-1.5.55]#  ln -s  /usr/local/mysql/lib/mysql/*  /usr/lib/

[[email protected]]#ln  -s /usr/local/mysql/include/mysql/*  /usr/include

(3)、初始化数据库

[[email protected]~]# useradd  -M  -u 27  -s  /sbin/nologin mysql

[[email protected]~]# cd  /usr/local/mysql/bin

[[email protected]]# ./mysql_install_db  --user=mysql

[[email protected]]# chown  -R  root:mysql /usr/local/mysql

[[email protected]]# chown  -R  mysql /usr/local/mysql/var

(4)、初始化数据库

[[email protected]~]# service  mysqld  start

[[email protected]~]# mysqladmin  -u  root password “[email protected]”

  1. 3.    安装PHP环境

较新版本(如5.3)的PHP已经自带FPM(FastCGI Process  Manager,FastCGI进程管理器)模块,用来对php解析实例进行管理、优化解析效率。单服务器的LEMP架构经常使用这种方式,因此在编译PHP的时候应添加“—enable-fpm”以启用此模块。

以源码包php-5.3.6为例:

(1)、编译安装PHP

[[email protected] ~]# tar  zxf php-5.3.6.tar.gz

[[email protected] ~]#cd  php-5.3.6/

[[email protected] php-5.3.6]# ./configure  --prefix=/usr/local/php5  --with-gd --with-zlib --with-mysql=/usr/local/mysql  --with-config-file-path=/usr/local/php5  --enable-mbstring  --enable-fpm

注解:

--prefix=/usr/local/php5  指定PHP安装目录

–with-config-file-path=/usr/local/php/etc     指定php.ini位置

–with-mysql=/usr/local/mysql          mysql安装目录,打开对mysql的支持

–with-gd                                   打开gd库的支持

–enable-mbstring                 多字节,字符串的支持

–enable-fpm                    打上php-fpm 补丁后才有这个参数,cgi方式安装的启动程序

–with-zlib-dir                                打开zlib库的支持

[[email protected] php-5.3.6]#make  && make  intall

  (2)、安装后的调整

[[email protected]  php5-3.6]# cp php.ini-development /usr/local/php5/php.ini

[[email protected]  php5-3.6]#ln -s  /usr/local/php5/bin/*  /usr/local/bin/

[[email protected]  php5-3.6]#ln -s  /usr/local/php5/sbin/*  /usr/local/sbin/

(3)、安装ZendGuardLoader

[[email protected] ~]#tar  zxf ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz

[[email protected] ~]#  cd  ZendGuardLoader-php-5.3-linux-glibc23-i386/php-5.3.x

[[email protected] php-5.3.x]#cp  ZendGuardLoader.so  /usr/local/php5/lib/php.ini

[[email protected] php-5.3.x]#  vi /usr/local/php5/php.ini

添加内容:

zend_extension=/usr/local/php5/lib/php/ZenGuardLoader.so

zend_loader.enable=1

  1. 4.    配置nginx支持PHP环境

如果让nginx能够解析PHP网页,有两种方法可以选择:一种是让nginx充当中介,将访问PHP页面的web请求交给其他LEMP去处理;另一种是通过使用PHP的FPM模块来实现。

   (1)、启用php-fpm进程,以便于监听PHP解析请求。建立php-fpm.conf文件,并修改其中的PID文件、运行用户、服务数(进程数量)等相关设置,然后启动php-fpm程序即可。(默认监听本机的9000端口)

[[email protected]  ~]#cd /usr/loca/php5/etc/

[[email protected] etc]# cp php-fpm.conf.default  php-fpm.conf

[[email protected] etc]# vi  php-fpm.conf

…….省略部分信息

pid  =  run/php-fpm.pid      //确认pid文件位置

user  =  nginx              //运行用户

group  =  nginx            //运行组

pm.start_servers =  20     //启动时开启的进程数

pm.min_spare_servers =  5  //最少空闲进程数

pm.max_spare_servers =  35  //最多空闲进程数

[[email protected] etc]# /usr/local/sbin/php-fpm

查看是否被监听,如被监听则会显示

[[email protected] etc]# netstat  -anpt  | grep  php-fpm

(2)、修改nginx服务脚本,以便于在启动/停止nginx服务器时php-fpm进程也会自动启动/停止。

[[email protected] ~]# vi  /etc/init.d/nginx

……省略部分信息

PROG_FPM=“/usr/local/sbin/php-fpm”

PIDF_FPM=“/usr/local/php5/”

case “$1”  in

start)

$PROG -c  $CONF

$PROG_FPM

;;

stop)

kill -s         QUIT  $(can  $PIDF)   //根据PID杀死进程

kill  -s    QUIT $(cat  $PIDF_FPM)    //根据PID终止pid-fpm进程

;;

(3)、配置nginx支持PHP解析

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

[[email protected] ~]#vi  /usr/local/nginx/conf/nginx.conf

server  {

……

location  ~ \.php$  {        //访问.php页面的配置段

proxy_pass   IP地址:80;  //Apache服务器的监听地址

}

}

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

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样本配置

}

}

  1. 5.    PHP页面访问测试

[[email protected] ~]#vi  /var/www/benet/test.php

<?php

$link=mysql_connect(‘localhost’ , ‘root’, ‘pwd123’ );   //连接MySQL数据库

If ($link)  echo “<h1>successful</h1>”;  //连接成功时的反馈消息

Mysql_close( );       //关闭数据库连接

?>

  • LEMP平台部署web应用

LEMP平台与LAMP平台是非常相似的,区别主要在于所用WEB服务软件的不同,   而这与使用PHP开发的WEB应用程序并无太大关系,因此PHP应用的部署方法也是类似的,

下面以“天空网络电影系统(简称SKYUC)”为例介绍在LEMP平台中的部署过程。

释放并部署程序代码:

  1. 1.    下载并部署程序代码

[[email protected] ~]#tar  jxf SKYUC_Free_For_PHP5.3.tar.bz2

[[email protected] ~]#mv  SKYUC_Free_For_PHP5.3/wwwroot  /var/www/benet/skyuc/

[[email protected] ~]#cd  /var/www/benet/skyuc/

[[email protected] ~]#chown  -R nginx:nginx  admincp/  data/ templates/  upload/

  1. 2.    创建数据库

新建数据库skyucdb,授权用户runskyuc。

[[email protected] ~]#mysql  -u root  -p

Enter  password:           //验证root用户密码

mysql>create  database  skyucdb;

mysql>grant  all  on skyucdb.*  to  [email protected]  identified  by  “[email protected]”;

  1. 3.    安装web应用

[[email protected] ~]#cd  /var/www/benet./skync/

[[email protected]  skync]# mv install  install.lock

[[email protected] ~]#chmod  600  install.lock

  1. 4.    访问web应用系统

访问http://www.benet.com/skyuc,可以看到“天空网络电影系统”站点首页,通过http://www.benet.com/skyuc/admincp以管理员账号登入后台进行管理。

 

时间: 2024-08-11 01:34:58

LEMP架构及应用部署的相关文章

cloudstack4.6 + xenserver架构云环境部署

cloudstack4.6 + xenserver架构云环境部署 一.提供简单类似cloudstack架构如下(仅供简单参考): 二.安装cloudstack4.6+xenserver6.5 系统环境:centos6.5_64 1.修改各主机相应静态ip地址 2.修改hostname vi /etc/sysconfig/network 3.添加dns记录 vi /etc/hosts 192.168.5.8cs01.esc.com 192.168.5.1xen01.esc.com 192.168.

LEMP架构实现

本实验用到的架构图,如下所示: 简单介绍本次实验架构的数据流向: 首先client向A服务器发起网页请求,A接到请求,首先查看memcached是否有请求的内容,如果有就返回给client,如果memcached中没有,则A查询B服务器中client的请求响应缓存到memcached中一份,同时再响应给客户端,如果在一定时长内,client再次发起的同样的请求,A服务器直接将缓存响应给client,简单理解. 环境安装 A服务器安装memcached yum install -y memcach

Hive运行架构及配置部署

Hive 运行架构 由Facebook开源,最初用于解决海量结构化的日志数据统计问题:ETL工具: 构建于Hadoop的HDFS和MapReduce智商,用于管理和查询结构化/非结构化数据的数据仓库: 设计目的是让SQL技能良好,但Java技能较弱的分析师可以查询海量数据: 使用HQL作为查询接口: 使用HDFS作为存储底层: 使用MapReduce作为执行层: 2008年facebook把Hive项目贡献给Apache: 1.Hive的缺点 Hive的HQL表达能力有限:有些复杂运算用HQL不

微服务架构 - CentOS7离线部署docker

原文:微服务架构 - CentOS7离线部署docker 1.环境准备 系统环境为: CentOS Linux release 7.5.1804 (Core) 安装docker版本为: 17.12.0-ce 2.准备部署文件 在http://mirrors.163.com/centos/7/os/x86_64/Packages/中下载如下rpm安装包: audit-2.8.4-4.el7.x86_64.rpm audit-libs-2.8.4-4.el7.x86_64.rpm libselinu

[转载] 对象存储(2):OpenStack Swift——概念、架构与规模部署

原文: http://www.testlab.com.cn/Index/article/id/1085.html#rd?sukey=fc78a68049a14bb228cb2742bdec2b9498806815fcb59399eee501874bb9e9086bce3050baf1438179330d72d2508871 摘要:开源的最大魅力,是能够满足人们的探索欲和求知欲,让我们可以很深入地了解一个系统,如果我们发现它的设计或者实现中有任何不合理的或者错误的地方,我们可以提出自己的想法并且实

MySQL高可用架构-MHA环境部署记录

一.MHA介绍 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是日本的一位 MySQL专家采用Perl语言编写的一个脚本管理工具,该工具仅适用于MySQLReplication(二层)环境,目的在于维持Master主库的高可用性.是一套优秀的作为MySQL高可用性 环境下故障切

Kubernetes 系列第二篇: Kubernetes 架构设计和部署

1. 架构设计和环境设计 1.1. 架构设计 部署 Haproxy 为 Kubernetes 提供 Endpoint 访问入口 使用 Keepalived 将 Endpoint 入口地址设置为 Virtual IP 并通过部署多台节点的方式实现冗余 使用 kubeadm 部署高可用 Kubernetes 集群, 指定 Endpoint IP 为 Keepalived 生成的 Virtual IP 使用 prometheus 作为 Kubernetes 的集群监控系统, 使用 grafana 作为

Ansible架构介绍及部署

Ansible架构模式 Ansible是由控制机和被管理机组成:控制机是用来安装Ansible工具软件和执行指令的服务器,被管理机是指运行业务的服务器,由控制机通过SSH进行管理. Ansible管理方式 Ansible是一个模型驱动管理器,支持多节点发布,远程任务执行,默认使用SSH远程连接,无需在被管理节点上安装附加软件. Ansible系统架构 Ansible集合了许多运维工具,实现了批量系统配置.批量程序部署,批量运行命令等功能,Ansible是基于模块工作的,本身没有批量部署的能力,真

Hbase原理架构与安装部署教程

1. HBase是什么 1.1 HBase的概念 HBase基于Google的BigTable论文,是建立的==HDFS==之上,提供高可靠性.高性能.列存储.可伸缩.实时读写的分布式数据库系统. 在需要==实时读写随机访问==超大规模数据集时,可以使用HBase. 1.2 HBase的特点 ==海量存储== 可以存储大批量的数据 ==列式存储== HBase表的数据是基于列族进行存储的,列族是在列的方向上的划分. ==极易扩展== 底层依赖HDFS,当磁盘空间不足的时候,只需要动态增加data