• 源码安装LNMP环境


    1 部署LNMP环境

    1.1 问题

    源码安装Nginx、MySQL、PHP环境,启动Nginx、MySQL服务,并测试LNMP是否工作正常:

    • 源码安装软件时,注意将需要的配套依赖软件包也一同安装

    1.2 方案

    在RHEL6系统中,源码安装PHP时需要注意安装相应配套的扩展依赖软件包,如:mhash、libiconv、libmcrypt。安装MySQL时需要提前安装cmake,MySQL安装完成后还需要使用mysql_install_db对数据库进行初始化。

    操作过程中需要安装的软件列表如下:

    • Linux操作系统
    • nginx
    • cmake
    • mysql
    • mhash、libmcrypt
    • php

    1.3 步骤

    实现此案例需要按照如下步骤进行。

    步骤一:安装软件

    1)使用yum安装基础依赖包

    [root@svr5 ~]# yum -y groupinstall "Development tools"  "Additional Development"
    [root@svr5 ~]# yum -y install gcc openssl-devel pcre-devel zlib-devel ncurses-devel
    .. ..

    2)源码安装Nginx

    [root@svr5 ~]# wget http://nginx.org/download/nginx-1.8.0.tar.gz
    [root@svr5 ~]# useradd –s /sbin/nologin  nginx
    [root@svr5 ~]# tar -zxvf nginx-1.8.0.tar.gz
    [root@svr5 ~]# cd nginx-1.8.0
    [root@svr5 nginx-1.8.0]# ./configure   
    > --prefix=/usr/local/nginx    
    > --user=nginx   --group=nginx 
    > --with-http_ssl_module
    .. ..
    [root@svr5 ~]# make && make install
    .. ..

    3)源码安装cmake

    新版本的MySQL需要使用cmake编译,因此安装MySQL前需要安装cmake:

    [root@svr5 ~]# yum –y install cmake

    4)安装mysql

    [root@svr5 ~]# useradd –s /sbin/nologin mysql
    [root@svr5 ~]# tar -zxvf mysql-5.6.26.tar.gz
    [root@svr5 ~]# cd mysql-5.6.26
    [root@svr5 mysql-5.6.26]# cmake   
    > -DCMAKE_INSTALL_PREFIX=/usr/local/mysql   
    > -DSYSCONFDIR=/etc   -DMYSQL_DATADIR=/usr/local/mysql/data 
    > -DMYSQL_TCP_PORT=3306  
    > -DMYSQL_USER=mysql   -DEXTRA_CHARSETS=all
    [root@svr5 mysql-5.6.26]# make && make install
    [root@svr5 mysql-5.6.26]# chown  -R mysql.mysql  /usr/local/mysql/
    [root@svr5 mysql-5.6.26]# cd /usr/local/mysql
    [root@svr5 mysql]#./scripts/mysql_install_db 
    >  --user=mysql --datadir=/usr/local/mysql/data
    [root@svr5 mysql]# ls data/
    mysql  performance_schema   test

    5)安装mhash、libmcrypt、php

    [root@svr5 ~]# tar -zxvf mhash-0.9.9.9.tar.gz 
    [root@svr5 ~]# cd mhash-0.9.9.9
    [root@svr5 mhash-0.9.9.9]# ./configure 
    [root@svr5 mhash-0.9.9.9]# make && make install
    [root@svr5 ~]# tar -zxvf  libmcrypt-2.5.8.tar.gz 
    [root@svr5 ~]# cd libmcrypt-2.5.8
    [root@svr5 libmcrypt-2.5.8]# ./configure 
    [root@svr5 libmcrypt-2.5.8]# make && make install
    [root@svr5 ~]# ln -sv /usr/local/lib/libmcrypt*     /usr/lib/
    [root@svr5 ~]# ln -sv /usr/local/lib/libmhash.*    /usr/lib/
    [root@svr5 ~]# ln -sv /usr/local/lib/libicon*      /usr/lib/
    [root@svr5 libmcrypt-2.5.8]# ldconfig -v 
    [root@svr5 ~]# tar -zxvf php-5.4.9.tar.gz
    [root@svr5 ~]# cd php-5.4.9
    [root@svr5 php-5.4.9]# ./configure 
    > --prefix=/usr/local/php5 
    > --with-config-file-path=/usr/local/php5/etc  
    > --with-mysql=/usr/local/mysql  
    > --with-mysqli=/usr/local/mysql/bin/mysql_config 
    > --enable-fpm  --enable-mbstring
    [root@svr5 php-5.4.9]# make
    [root@svr5 php-5.4.9]# make install
    [root@svr5 php-5.4.9]# cp  php.ini-production /usr/local/php5/etc/php.ini

    步骤二:启动服务

    1)启动Nginx服务

    这里需要注意的是,如果服务器上已经启动了其他监听80端口的服务软件(如httpd),则需要先关闭该服务,否则会出现冲突。

    [root@svr5 ~]# service httpd stop                //如果该服务存在则关闭该服务
    [root@svr5 ~]# chkconfig httpd off
    [root@svr5 ~]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
    [root@svr5 ~]# netstat -utnlp | grep :80
    tcp    0    0 0.0.0.0:80        0.0.0.0:*        LISTEN        32428/nginx         

    2)启动MySQL服务

    [root@svr5 ~]# echo “/usr/local/mysql/lib/” >> /etc/ld.so.conf
    [root@svr5 ~]# ldconfig
    [root@svr5 ~]# vim /etc/profile
    .. ..
    PATH=$PATH:$HOME/bin:/usr/local/mysql/bin/
    export PATH
    [root@svr5 ~]# source /etc/profile
    [root@svr5 mysql]# cp /usr/local/mysql/my.cnf  /etc/my.cnf
    [root@svr5 mysql]# cp /usr/local/mysql/support-files/mysql.server 
    > /etc/init.d/mysqld
    [root@svr5 mysql]# chmod +x /etc/init.d/mysqld
    [root@svr5 mysql]# chkconfig add mysqld
    [root@svr5 mysql]# chkconfig mysqld on
    [root@svr5 ~]# service mysqld start

    2 构建LNMP平台

    2.1 问题

    沿用练习一,通过调整Nginx服务端配置,实现以下目标:

    1. 配置Fast-CGI支持PHP网页
    2. 创建PHP测试页面,测试使用PHP连接数据库的效果

    2.2 方案

    使用2台RHEL6虚拟机,其中一台作为LNMP服务器(192.168.10.5)、另外一台作为测试用的Linux客户机(192.168.10.205)

    Nginx结合FastCGI技术即可支持PHP页面架构,因此本案例,需要延续练习一的实验内容,通过修改Nginx及php-fpm配置文件实现对PHP页面的支持。

    php-fpm需要修改的常见配置如下:

    listen = 127.0.0.1:9000

    pm.max_children = 32

    pm.start_servers = 15

    pm.min_spare_servers = 5

    pm.max_spare_servers = 32

    2.3 步骤

    实现此案例需要按照如下步骤进行。

    步骤一:创建并修改php-fpm配置文件

    1)生成php-fpm配置文件

    默认安装完php后,会自动生成一个php-fpm参考模板,我们需要复制该模板,并进行适当修改即可。

    [root@svr5 ~]# cd /usr/local/php5/etc/
    [root@svr5 etc]# cp php-fpm.conf.default  php-fpm.conf

    2)修改php-fpm配置文件,并启动php-fpm服务

    [root@svr5 etc]# vim /usr/local/php5/etc/php-fpm.conf
    [global]
    pid = run/php-fpm.pid
    error_log = log/php-fpm.log
    log_level = error
    daemonize = yes
    [www]
    user = www
    group = www
    listen = 127.0.0.1:9000
    pm = dynamic
    pm.max_children = 32
    pm.start_servers = 15
    pm.min_spare_servers = 5
    pm.max_spare_servers = 32
    [root@svr5 ~]# cd php-5.4.9/sapi/fpm/                //进入安装包子目录
    [root@svr5 fpm]# cp init.d.php-fpm    /etc/rc.d/init.d/php-fpm
    [root@svr5 fpm]# chmod +x /etc/rc.d/init.d/php-fpm
    [root@svr5 fpm]# chkconfig --add php-fpm
    [root@svr5 fpm]# service php-fpm start
    [root@svr5 fpm]# ps aux | grep php-fpm

    步骤二:修改Nginx配置文件并启动服务

    [root@svr5 ~]# vim /usr/local/nginx/conf/nginx.conf
    location / {
                root   html;
                index  index.php  index.html   index.htm;
            }
     location  ~  .php$  {
                root           html;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                #fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi.conf;
            }
    [root@svr5 ~]# /usr/local/nginx/sbin/nginx -s reload

    步骤三:创建PHP页面,测试LNMP架构能否解析PHP页面

    1)创建PHP首页文档/usr/local/nginx/html/index.php

     [root@svr5 ~]# vim /usr/local/nginx/html/index.php
    <?php
    $links=mysql_connect("localhost","root","密码");        //root为mysql账户名称,密码需要修改为实际mysql密码,无密码则留空即可
    if($links){
            echo "link db ok!!!";
    }
    else{
            echo "link db no!!!";
    }
    ?>

    2)客户端使用浏览器访问服务器PHP首页文档,检验是否成功:

    [root@client ~]# firefox http://192.168.10.5

    3 地址重写

    3.1 问题

    沿用练习一,通过调整Nginx服务端配置,实现以下目标:

    1. 所有访问www.aaaaa.com的访问重定向至bbs.aaaaa.com
    2. 所有访问/image目录下资源的请求,重定向至/picture目录
    3. 实现IE浏览器和火狐浏览器访问不同的页面

    3.2 方案

    关于Nginx服务器的地址重写,主要用到的配置参数是rewrite:

    • rewrite regex replacement flag

    3.3 步骤

    实现此案例需要按照如下步骤进行。

    步骤一:修改配置文件

    修改Nginx服务配置:

    [root@svr5 ~]# vim /usr/local/nginx/conf/nginx.conf
    .. ..
    server {
            listen       80;
            server_name  www.aaaaa.com;
    location / {
        root   html;
    index  index.html index.htm;
    rewrite ^/ http://bbs.aaaaa.com/;            //地址重写,访问www.aaaaa.com将被重定向至bbs.aaaaa.com
    rewrite ^/image/(.*)$ /picture/$1 break;    //所有访问/image目录下资源的请求,重定向至/picture目录
    if ($http_user_agent ~ MSIE) {                //识别客户端IE浏览器
    rewrite ^(.*)$ /nginx-ie/$1 break;
    }
    if ($http_user_agent ~ Firefox) {                //识别客户端firefox浏览器
    rewrite ^(.*)$ /nginx-firefox/$1 break;
    }
    }
    }

    步骤二:客户端测试

    客户端使用浏览器测试各个页面的访问是否被重定向。

  • 相关阅读:
    PHP中的traits
    MySQL规范与疑难杂症
    从关系型数据库到非关系型数据库
    putty详细使用说明
    MySQL时间相关处理
    sendmail
    MongoDB简明教程
    assert()和eval()
    在NS3下如何用Python脚本,以及PyViz可视化
    八卦一下模型检验(二) (转自g9老大的博文)
  • 原文地址:https://www.cnblogs.com/linyouyi/p/9830851.html
Copyright © 2020-2023  润新知