源码安装LNMP环境

时间:2021-03-19 18:17:58

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;
}
}
}

步骤二:客户端测试

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