• LNMP分离式部署搭建


    一、前期准备

    1、准备三台虚拟机,分别为: 
    Nginx Web:192.168.200.142 
    PHP:192.168.200.128 
    Mysql:192.168.200.143

     

    二、服务搭建

     

    一、Nginx Web搭建

     
    1. yum install -y pcre-devel openssl-devel #用本地yum仓库安装依赖包
    2. wget -q http://nginx.org/download/nginx-1.10.2.tar.gz #下载软件源码包
    3. useradd -s /sbin/nologin -M www #创建程序用户
    4. tar xf nginx-1.10.2.tar.gz -C /usr/src/ #解压缩
    5. cd /usr/src/nginx-1.10.2
    6. ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module #预配置
    7. make && make install #编译和安装
    8. ln -s /usr/local/nginx/sbin/* /usr/local/sbin/ #给命令做软连接,以便PATH能找到
    9. /usr/local/nginx/sbin/nginx #启动nginx

    特别提示: /usr/local/nginx/sbin/nginx -s reload nginx平滑重启命令 
    /usr/local/nginx/sbin/nginx -s stop nginx停止服务命令

    (2)、加工Nginx配置文件

     
    1. cd /usr/local/nginx/conf
    2. egrep -v "#|^$" nginx.conf.default > nginx.conf

    2、安装二进制MySQL数据库

    (1)、创建mysql用户的账号

     
    1. groupadd mysql
    2. useradd -s /sbin/nologin -g mysql -M mysql

    (2)、获取MySQL二进制软件包 
    百度云盘:http://pan.baidu.com/s/1hrBCzsC 提取码:4yjf

    (3)、采用二进制方式安装MySQL

     
    1. tar xf mysql-5.5.32-linux2.6-x86_64.tar.gz -C /usr/local/
    2. cd /usr/local/
    3. mv mysql-5.5.32-linux2.6-x86_64 mysql-5.5.32
    4. ln -s mysql-5.5.32 mysql

    (4)、初始化MySQL配置文件my.cnf

     
    1. cd /usr/local/mysql
    2. ls -l support-files/*.cnf
    3. /bin/cp support-files/my-small.cnf /etc/my.cnf

    image_1ct4iv3e88mg2va910i87l7h1g.png-86kB

    (5)、初始化MySQL数据库文件

     
    1. mkdir -p /usr/local/mysql/data #建立MySQL数据文件目录
    2. chown -R mysql.mysql /usr/local/mysql #授权mysql用户管理MySQL的安装目录
    3. yum -y install libaio #光盘源安装依赖包,否则下一步的编译会报错
    4. /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
    5. #初始化MySQL数据库文件,会有很多信息提示,如果没有ERROR级别的错误,会有两个OK的字样,表示初始化成功,否则就要解决初始化的问题

    image_1ct4j1ad4195ggkp1prqapb1l4n1t.png-37.9kB

    以上的命令主要作用是生成如下数据库文件 
    image_1ct4j1s0a1s0hm4pae9i9b11372a.png-58.2kB 
    这些MySQL数据文件是MySQL正确运行所必需的基本数据库文件,其功能是对MySQL权限,状态等进行管理。

    (6)、配置并启动MySQL数据库 
    image_1ct4j5b5e1ir912gj1fgv15ts1jol2n.png-8.4kB

    启动MySQL数据库 
    image_1ct4j6kng14g213fofp9105d1adm34.png-8.4kB

    设置MySQL开机自启动 
    image_1ct4j9ldgd7f6ij41q1n196k23h.png-12.5kB

    (7)配置mysql命令的全局使用路径

    image_1ct4jb4qp1nqe17g63jhhg8ir94o.png-9.6kB

    (8)登陆MySQL测试 
    image_1ct4jcmqbg0i14v08ieehi1vap55.png-33.2kB

    image_1ct4jcu5a1ead1s25158e8gu1f65i.png-33kB

    (9)、MySQL安全配置、为MySQL的root用户设置密码

     
    1. mysqladmin -u root password '123123' #设置root用户密码
    2. mysql -uroot -p123123 #用root用户登录数据库

    image_1ct4jf3fr416svhjd1u5ribi5v.png-56.7kB

     

    二、安装Nginx

    1、安装解压

     
    1. yum install -y pcre-devel openssl-devel #用本地yum仓库安装依赖包
    2. #wget -q http://nginx.org/download/nginx-1.10.2.tar.gz #下载软件源码包
    3. tar xf nginx-1.10.2.tar.gz -C /usr/src/ #解压缩
    4. cd /usr/src/nginx-1.10.2
    5. ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module #预配置,命令说明:--with-http_stub_status_module 要运用的模块名,--with指定模块
    6. make && make install #编译和安装
    7. ln -s /usr/local/nginx/sbin/* /usr/local/sbin/ #给命令做软连接,以便PATH能找到

    2、创建一个程序用户

     
    1. useradd -M -s /sbin/nologin nginx #创建程序用户
    2. /usr/local/nginx/sbin/nginx #启动nginx
    3. 特别提示: /usr/local/nginx/sbin/nginx -s reload nginx平滑重启命令
    4. /usr/local/nginx/sbin/nginx -s stop nginx停止服务命令
    5. web排错三部曲下面介绍客户端排查的思路
    6. 第一步,在客户端上ping服务器端IP,命令如下:
    7. ping 10.0.0.8排除物理线路问题影响
    8. 第二步,在客户端上telnet服务器端IP,端口,命令如下:
    9. telnet 10.0.0.8 80排除防火墙等得影响
    10. 第三步,在客户端使用wget命令检测,如下:
    11. wget 10.0.0.8(curl -I 10.0.0.8)模拟用户访问,排除http服务自身问题,根据输出在排错

    3、安装完成后进入配置文件目录加工下配置文件

     
    1. Nginx主配置文件nginx.conf,路径:/usr/local/nginx/conf/nginx.conf
    2. egrep -v "#|^$" nginx.conf.default > nginx.conf #去掉包含#号和空行的内容

    4、配置Nginx支持PHP程序请求访问

     
    1. 1)查看nginx当前的配置
    2. [root@LNMP conf]# vim nginx.conf
    3. worker_processes 1;
    4. events {
    5. worker_connections 1024;
    6. }
    7. http {
    8. include mime.types;
    9. default_type application/octet-stream;
    10. sendfile on;
    11. keepalive_timeout 65;
    12. include extra/www.conf;
    13. include extra/mail.conf;
    14. include extra/blog.conf;
    15. }
    16. 2PHP解析,这里以blog为例讲解,内容如下:
    17. [root@LNMP extra]# cat blog.conf
    18. server {
    19. listen 80;
    20. server_name blog.shidu.com;
    21. location / {
    22. root html/blog;
    23. index index.html index.htm;
    24. }
    25. }
    26. 最终blog虚拟机的完整配置如下:
    27. [root@LNMP extra]# cat blog.conf
    28. server {
    29. listen 80;
    30. server_name blog.shidu.com;
    31. location / {
    32. root html/blog;
    33. index index.html index.htm;
    34. }
    35. location ~ .*.(php|php5)?$ {
    36. root html/blog;
    37. fastcgi_pass 127.0.0.1:9000;
    38. fastcgi_index index.php;
    39. include fastcgi.conf;
    40. }
    41. }

    5、检查并启动Nginx 
    image_1ct4jq3a61jjh40l1nuh1757ve36c.png-19.8kB

     

    三、PHP安装

    1 检查Nginx及MySQL的安装情况

    (1)检查确认Nginx及MySQL的安装路径

     
    1. [root@LNMP ~]# ls -ld /usr/local/nginx
    2. drwxr-xr-x. 11 root root 4096 Nov 9 00:42 /usr/local/nginx
    3. [root@LNMP ~]# ls -ld /usr/local/mysql
    4. lrwxrwxrwx. 1 mysql mysql 12 Nov 9 01:00 /usr/local/mysql -> mysql-5.5.32

    (2)检查端口及启动情况 
    image_1ct4k1d2e44h1971pag1c1nhp57c.png-16.4kB

    (3)测试访问Nginx及MySQL是否OK 
    image_1ct4k1vff1pa817uo1vf316vhbb77p.png-69.5kB

    2 安装相关的lib软件包

     
    1. yum -y install zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd libcurl-devel libxslt-devel

    安装后的结果如下: 
    image_1ct4k4d2b16041q8v5cis6vvu086.png-39.3kB
    从上图结果看出,仅有libiconv-devel这个包没有安装,因为默认的yum源没有此包,后面会编译安装。

    3、安装yum无法安装的libiconv库

    image_1ct4k63n91bislbuo0s2sd17o693.png-109.5kB

    ./configure --prefix=/usr/local/libiconv && make && make install #开始编译安装

    4、安装libmcrypt库mhash加密扩展库mcrvpt加密扩展库

     
    1. wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo #推荐使用简单的在线yum的方式安装
    2. cd /etc/yum.repos.d/
    3. yum -y install libmcrypt-devel #安装libmcrypt库
    4. yum -y install mhash #安装mhash加密扩展库
    5. yum -y install mcrypt #mcrvpt加密扩展库

    5、开始安装PHP(FastCGI方式)服务 
    获取PHP软件包 
    链接:https://pan.baidu.com/s/1RXk-DcujpOWkbe6f9ql1ng 
    提取码:c970

    6、解压配置PHP

     
    1. tar xf php-5.3.28.tar.gz -C /usr/src/
    2. cd /usr/src/php-5.3.28/
    3. ./configure
    4. > --prefix=/usr/local/php5.3.28
    5. > --with-mysql=mysqlnd
    6. > --with-iconv-dir=/usr/local/libiconv
    7. > --with-freetype-dir
    8. > --with-jpeg-dir
    9. > --with-png-dir
    10. > --with-zlib
    11. > --with-libxml-dir=/usr
    12. > --enable-xml
    13. > --disable-rpath
    14. > --enable-safe-mode
    15. > --enable-bcmath
    16. > --enable-shmop
    17. > --enable-sysvsem
    18. > --enable-inline-optimization
    19. > --with-curl
    20. > --with-curlwrappers
    21. > --enable-mbregex
    22. > --enable-fpm
    23. > --enable-mbstring
    24. > --with-mcrypt
    25. > --with-gd
    26. > --enable-gd-native-ttf
    27. > --with-openssl
    28. > --with-mhash
    29. > --enable-pcntl
    30. > --enable-sockets
    31. > --with-xmlrpc
    32. > --enable-zip
    33. > --enable-soap
    34. > --enable-short-tags
    35. > --enable-zend-multibyte
    36. > --enable-static
    37. > --with-xsl
    38. > --with-fpm-user=www
    39. > --with-fpm-group=www
    40. > --enable-ftp

    image_1ct4kdre8ct2141i1btf1haau4f9g.png-24.7kB

    7、编译安装:make && make install

    8、 配置PHP引擎配置文件php.ini 
    (1)设置软链接以方便访问

     
    1. [root@LNMP ~]# ln -s /usr/local/php5.3.28/ /usr/local/php
    2. [root@LNMP ~]# ls -l /usr/local/php
    3. lrwxrwxrwx. 1 root root 21 Nov 9 05:30 /usr/local/php -> /usr/local/php5.3.28/

    (2)查看PHP配置默认模版文件

     
    1. [root@LNMP ~]# cd /usr/src/php-5.3.28/
    2. [root@LNMP php-5.3.28]# ls php.ini*
    3. php.ini-development php.ini-production

    请注意以上两文件的异同之处,可通过diff或vimdiff命令比较,如下图所示

    image_1ct4khqaj1e619t71uu5109j1epd9t.png-374.8kB

    (3)拷贝PHP配置文件到PHP默认目录,并更改文件名称为php.ini 
    cp php.ini-production /usr/local/php/lib/php.ini

    10、配置PHP(FastCGI方式)的配置文件php-fpm.conf

     
    1. [root@LNMP etc]# ls
    2. pear.conf php-fpm.conf.default
    3. [root@LNMP etc]# cp php-fpm.conf.default php-fpm.conf
    4. [root@LNMP etc]# ls
    5. pear.conf php-fpm.conf php-fpm.conf.default

    11、启动PHP服务(FastCGI方式) 
    (1)启动PHP服务php-fpm

     
    1. /usr/local/php/sbin/php-fpm

    (2)检查PHP服务php-fpm的进程及启动端口的情况

     
    1. ps -ef | grep php-fpm
    2. lsof -i:9000 #默认9000端口提供服务
     

    三、测试

    1、测试LNMP环境生效情况 
    (1)进入指定的默认站点目录后,编辑index.php,添加如下内容:


    [root@LNMP blog]# pwd 
    /usr/local/nginx/html/blog 
    [root@LNMP blog]# echo "<?php phpinfo(); ?>" >test_info.php 
    [root@LNMP blog]# cat test_info.php 
    <?php phpinfo(); ?> 

    以上代码为显示PHP配置信息的简单PHP文件代码

    (2)调整Windows下的host解析 
    192.168.200.128 www.shidu.com blog.shidu.com mail.shidu.com

    image_1ct4koamhfq318ujrjvod41qmtaa.png-43.1kB

    (3) 打开浏览器输入 http://blog.shidu.com/test_info.php 即可进入下图界面 
    出现此界面,表示Nginx配合PHP解析已经正常。 
    image_1ct4kot1e4hp12va7sf1jvgeean.png-130.3kB

  • 相关阅读:
    Thinkphp 5.0.15 设计缺陷导致Insert/update-SQL注入 分析
    Thinkphp 3.2.3 parseWhere设计缺陷导致update/delete注入 分析
    Thinkphp <= 5.0.10 缓存getshell复现
    Typecho-反序列化漏洞学习
    Discuz3.4-SSRF-从触发点到构造payload
    php session序列化攻击面浅析
    浅析一款扫描dom-xss的浏览器插件
    sqlmap Bool型&延时型 检测策略分析
    SpringSecurityOauth RCE (CVE-2016-4977) 分析与复现
    k8s之statefulSet-有状态应用副本集控制器
  • 原文地址:https://www.cnblogs.com/mendermi/p/10015353.html
Copyright © 2020-2023  润新知