LNMP环境应用

LNMP环境应用

标签(空格分隔): 企业架构应用基础


常见的Web框架结构
比如:LNMP和LAMP
L=Linux N=Nginx A=Apache P=PHP T=Tomcat
Nginx和Apache都是Web应用服务器
Nginx处理静态数据快,Apache处理动态数据快
Nginx对系统资源占用小,Apache资源占用高
Nginx用的是epoll(异步非阻塞I/O),Apache用的select(同步阻塞I/O)

LNMP组合工作流程

LNMP的部署方式

LNMP的部署方式分两种

  1. 全部部署在一台上。
  2. 全都不在一台上,N+P+M
    只分离MySQL。NP+M

HTTP数据包和fastcgi数据包

http数据包特点,格式很松散,因此解析的速度慢,但是数据包比fastcgi格式数据包小。
fastcgi数据包,这种规则的数据包格式非常严谨,因此,PHP解析的速度非常快。但是越严谨的数据包越大。所以fastcgi数据包大小要绝对大于HTTP数据包。

软件的设计架构分为C/S和B/S
作为客户端Client的fastcgi_pass和作为Server端的PHP-fpm。
因为经常用所以,fastcgi_pass和Nginx合并,而PHP-fpm和PHP合并。

流程

用户的请求一定是遵循HTTP协议的,因为是通过浏览器过来的。
Nginx和Apache其实一样,如果没有PHP支持,那么都处理不了动态请求。他们自身其实都只能处理静态。只是Apache转发动态数据包的速度快,但是只是单个包速度。Apache并发低。
如果是静态请求,则由Nginx解析返回给用户。
如果是动态请求(.php结尾),那么Nginx就会把它通过fastcgi接口发送给PHP引擎服务(fastcgi进程PHP-fpm)进行解析,如果这个动态请求要读取数据库数据,那么PHP就会继续向后请求MySQL数据库,以读取需要的数据,并最终通过Nginx服务把获取的数据返回给用户,这就是LNMP环境的基本请求流程。

部署LNMP

(一)先下载需要的软件包

wget http://cn2.php.net/get/php-5.3.28.tar.gz
wget http://nginx.org/download/nginx-1.10.2.tar.gz
wget https://wordpress.org/latest.tar.gz
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz

(二)安装Nginx数据库

  1. 解包
    tar xf nginx-1.10.2.tar.gz -C /usr/src/
    cd /usr/src/nginx-1.10.2
  2. 下载支持包
    yum -y install pcre-devel openssl-devel
  3. 创建Nginx用户
    useradd -s /sbin/nologin -M www
  4. 编译安装Nginx
    ./configure --user=www --group=www --prefix=/usr/local/nginx/ --with-http_stub_status_module --with-http_ssl_module
    make && make install
  5. 软链接
    ln -s /usr/local/nginx/sbin/* /usr/local/sbin/
  6. 修改配置文件
    cd /usr/local/nginx/conf
    egrep -v “#|^$” nginx.con.default > nginx.conf

(三)安装MySQL

PHP安装需要先有MySQL的环境。不然PHP编译报错。

  1. 二进制软件包直接解压即可
    tar xf mysql-5.5.32-linux2.6-x86_64.tar.gz -C /usr/local/

  2. 创建MySQL程序用户
    useradd -s /sbin/nologin -M mysql

  3. 移动配置文件
    cd /usr/local/mysql-5.5.32-linux2.6-x86_64/
    /bin/cp support-files/my-small.cnf /etc/my.cnf

  4. 映射本地ip
    echo “192.168.200.135 LNMP” >> /e tc/hosts

  5. 软链接
    ln -s /usr/local/mysql-5.5.32-linux2.6-x86_64/ /usr/local/mysql

  6. 目录权限
    chown -R mysql.mysql /usr/local/mysql

  7. 安装支持包
    yum -y install libaio

  8. 初始化MySQL
    /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

  9. 启动MySQL
    cp support-files/mysql.server /etc/init.d/mysqld
    chmod +x /etc/init.d/mysqld
    /etc/init.d/mysqld start

  10. 软链接
    ln -s /usr/local/mysql/bin/* /usr/local/bin/

  11. 设置MySQL密码
    mysqladmin -uroot password “102846”

(四)安装PHP

  1. 安装支持包
    yum -y install freetype-devel libpng-devel gd libcurl-devel libxslt-devel
    yum -y install zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel
    #这里仅缺少libiconv-devel包
    在上面下载的软件包已经包含
    cd ~
    tar xf libiconv-1.14.tar.gz -C /usr/src/
    ./configure --prefix=/usr/local/libiconv && make && make install
    还需要安装libmcrypt库、mhash加密扩展库、mcrvpt加密扩展库
    需要epel.reop源wget -O /etc/yum.repos.d/epel.repo
    yum -y install libmcrypt-devel mhash mcrypt
  2. 解压php
    cd ~
    tar xf php-5.3.28.tar.gz -C /usr/src/
  3. 配置php
./configure \
    --prefix=/usr/local/php5.3.28 \
    --with-mysql=/usr/local/mysql \
    --with-iconv-dir=/usr/local/libiconv \
    --with-freetype-dir \
    --with-jpeg-dir \
    --with-png-dir \
    --with-zlib \
    --with-libxml-dir=/usr \
    --enable-xml \
    --disable-rpath \
    --enable-safe-mode \
    --enable-bcmath \
    --enable-shmop \
    --enable-sysvsem \
    --enable-inline-optimization \ 
    --with-curl \
    --with-curlwrappers \
    --enable-mbregex \
    --enable-fpm \
    --enable-mbstring \
    --with-mcrypt \
    --with-gd \
    --enable-gd-native-ttf \
    --with-openssl \
    --with-mhash \
    --enable-pcntl \
    --enable-sockets \
    --with-xmlrpc \
    --enable-zip \
    --enable-soap \
    --enable-short-tags \
    --enable-zend-multibyte \
    --enable-static \
    --with-xsl \
    --with-fpm-user=www \
    --with-fpm-group=www \
    --enable-ftp

表示需要指定MySQL的安装路径,安装PHP需要的MySQL相关内容。当然,如果没有MySQL软件包,也可以不单独安装,这样的情况可使用–with-mysql=mysqlnd替代–with-mysql=/usr/local/mysql,因为PHP软件里已经自带了连接MySQL的客户端工具。

  1. 编译php
    ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/
    touch ext/phar/phar.phar
    make && make install
  2. 软链接
    ln -s /usr/local/php5.3.28/ /usr/local/php
  3. 复制php配置文件模板
    cd /usr/src/php-5.3.28
    cp php.ini-production /usr/local/php/lib/php.ini
    cd /usr/local/php/etc/
    cp php-fpm.conf.default php-fpm.conf
    关于php-fpm.conf 暂时可用默认的配置,先把服务搭好,以后在进行优化
  4. 启动php服务
    /usr/local/php/sbin/php-fpm

(五)配置Nginx支持PHP程序请求访问

  1. 修改Nginx配置文件
    cd /usr/local/nginx/conf
    vim nginx.conf
worker_processes  1;
error_log  logs/error.log;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    include extra/www.conf;
    include extra/mail.conf;
    include extra/status.conf;
    include extra/blog.conf;
    
}

这里以blog为例

[root@localhost conf]# cat extra/blog.conf 
    server {
        listen       80;
        server_name  blog.yunjisuan.com;
        location / {
            root   /var/www/html/blogcom;
            index  index.html index.htm;
        }
        location ~ .*\.(php|php5)?$ {
            root    /var/www/html/blogcom;
            fastcgi_pass    127.0.0.1:9000;
            fastcgi_index   index.php;
            include     fastcgi.conf;
        }
    }
  1. 检查并启动Nginx
root@localhost conf]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx-1.10.2//conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx-1.10.2//conf/nginx.conf test is successful
[root@localhost conf]# /usr/local/nginx/sbin/nginx -s reload
  1. 测试PHP解析请求
[root@localhost conf]# cd /usr/local/nginx/html/blog/
[root@localhost blogcom]# echo "<?php phpinfo(); ?>" >test_info.php
[root@localhost blogcom]# cat test_info.php 
<?php phpinfo(); ?>

调整Windows下的host解析
打开浏览器,输入blog.yunjisuan.com 即可

  1. 针对Nginx请求访问PHP,然后对PHP连接MySQL的情况进行测试
[root@localhost blogcom]# cat test_mysql.php 
<?php
    //$link_id=mysql_connect('主机名','用户','密码');
    $link_id=mysql_connect('localhost','root','123123');
    if($link_id){
        echo "mysql successful by Mr.chen !";
    }else{
        echo mysql_error();
    }
?>

给PHP做软链接
ln -s /usr/local/php/bin/* /usr/local/bin/
测试PHP连接MySQL情况
php test_mysql.php
如果出现successful说明和MySQL连接成功

部署一个blog程序服务

(一)MySQL数据库配置准备

  1. 创建一个专用的数据库WordPress,用于存放blog数据
    create database wordpress;
  2. 创建一个专用的WordPress管理用户
    grant all on wordpress.* to wordpress@‘localhost’ identified by ‘123123’;
    flush privileges;

(二)Nginx及PHP环境配置准备

  1. 选择之前配置好的支持LNMP的blog配置文件,补充一个首页文件index.php
[root@localhost extra]# cat blog.conf 
    server {
        listen       80;
        server_name  blog.yunjisuan.com;
        location / {
            root   /var/www/html/blogcom;
            index  index.php index.html index.htm;  #补充一个首页文件index.php
        }
        location ~ .*\.(php|php5)?$ {
            root    /var/www/html/blogcom;
            fastcgi_pass    127.0.0.1:9000;
            fastcgi_index   index.php;
            include     fastcgi.conf;
        }
    }

nginx -s reload

  1. 获取WordPress博客程序,并放置到blog域名对应虚拟主机的站点目录下
    浏览www.wordpress.org下载博客程序
    删除之前测试用的网页
    cd /usr/local/nginx/html/blog
    rm -f *
    解包wordpress
    cd ~
    tar xf latest.tar.gz
    mv wordpress/* /usr/local/nginx/html/blog
    授权用户访问
    chown -R www.www /usr/local/nginx/html/blog

(三)安装workpress

  1. 打开浏览器输入blog.yunjisuan.com(提前做好hosts)
    6.在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值