环境介绍:

selinux and iptables is disable

  • 系统版本:rhel6.5
  • ip : 172.25.14.1
    client –> nginx –> php-fpm(应用,实现fastcgI程序) –>php –> mysql
    注:关于php-fpm更进一步的了解,可以参考如下文档:

一、lnmp架构

lnmp架构:Linux+Nginx+MySQL+PHP的网站服务器架构

Linux:计算机操作系统

Nginx:是一个高性能的HTTP和反向代理服务器,Nginx性能稳定、功能丰富、运维简单、处理静态文件速度快且消耗系统资源极少

Mysql:一个小型关系型数据库管理系统

PHP:是一种在服务器端执行的嵌入HTML文档的脚本语言

这四种免费的开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。

二、mysql编译

1.获得 解压 mysql-boost-5.7.11.tar.gz
tar zxf mysql-boost-5.7.11.tar.gz

lnmp安全架构图 lnmp架构能实现什么功能_mysql

2.进入解压后的目录中,开始源码编译三部曲

lnmp安全架构图 lnmp架构能实现什么功能_lnmp安全架构图_02

3.安装工具包和依赖包
yum install -y gcc gcc-c++  ncurses-devel bison openssl-devel zlib-devel
4.获取安装cmake工具,系统带的版本太低,cmake-2.8.12.2-4.el6.x86_64.rpm
yum install cmake-2.8.12.2-4.el6.x86_64.rpm
5.编译
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data  -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_BOOST=./boost/boost_1_59_0/

参数解释:

#安装目录  
    -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data \  
    #数据库存放目录  
    -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock \
    #Unix socket 文件路径  
    -DWITH_MYISAM_STORAGE_ENGINE=1 \  
    #安装 myisam 存储引擎  
    -DWITH_INNOBASE_STORAGE_ENGINE=1 \  
    #安装 innodb 存储引擎  
    -DWITH_ARCHIVE_STORAGE_ENGINE=1 \  
    #安装 archive 存储引擎  
    -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \  
    #安装 blackhole 存储引擎  
    -DWITH_PARTITION_STORAGE_ENGINE=1 \  
    #安装数据库分区  
    -DENABLED_LOCAL_INFILE=1 \  
    #允许从本地导入数据  
    -DWITH_READLINE=1 \  
    #快捷键功能  
    -DWITH_SSL=yes \  
    #支持 SSL  
    -DDEFAULT_CHARSET=utf8 \  
    #使用 utf8 字符  
    -DDEFAULT_COLLATION=utf8_general_ci \  
    #校验字符  
    -DEXTRA_CHARSETS=all \  
    #安装所有扩展字符集  
    -DMYSQL_TCP_PORT=3306 \  
    #MySQL 监听端口
6.编译完成后安装,时间较长,耐心等待

ps:如果是虚拟机的话,可以增加内存和磁盘容量,尤其是磁盘容量,如果不够后期会报错。这里,小编给的内存4G,磁盘容量20G呢,还有硬盘为512固态硬盘,速度可能会快些。小编本次编译用时:17分钟左右

make && make install

编译完成时如下所示

lnmp安全架构图 lnmp架构能实现什么功能_php_03

7.保留原配置文件
mv /etc/my.cnf /etc/my.cnf.bak

lnmp安全架构图 lnmp架构能实现什么功能_php_04

8.把启动脚本放到正常位置/etc/init.d/
cd /usr/local/lnmp/mysql/support-files
  cp mysql.server /etc/init.d/mysqld -p

lnmp安全架构图 lnmp架构能实现什么功能_lnmp安全架构图_05

9.新建mysql用户
useradd mysql
10.设置环境变量
[root@server1 ~]# vim ~/.bash_profile
          --PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin
[root@server1 ~]# source  ~/.bash_profile

lnmp安全架构图 lnmp架构能实现什么功能_mysql_06

11.初始化
mysqld --initialize  --user=mysql --basedir=/usr/local/lnmp/mysql/ --datadir=/usr/local/lnmp/mysql/data

lnmp安全架构图 lnmp架构能实现什么功能_php_07


(初始化密码:qB-3qK4+=Dh-),这个要记录下来,因为后面改密码的时候需要用到

12.权限问题

除了date其他所有人应该是root

chown root.mysql /usr/local/lnmp/mysql/* -R
chown mysql.mysql /usr/local/lnmp/mysql/data -R

lnmp安全架构图 lnmp架构能实现什么功能_php_08


lnmp安全架构图 lnmp架构能实现什么功能_mysql_09

13.重启数据库服务,登陆,修改密码
/etc/init.d/mysqld start
mysql -p密码   ##登陆
alter user root@localhost identified by 'redhat';

lnmp安全架构图 lnmp架构能实现什么功能_mysql_10


万一把密码给忘记了:

/etc/init.d/mysqld stop
       mysqld_safe --skip-grant-tables &
       mysql

       use mysql;
       select * from user\G;
       update user set authentication_string=password('westos') where user='root';

二.php-fmp

1.获得解压php-5.6.20.tar.bz2
tar jxf php-5.6.20.tar.bz2
2.进入解压后的目录
[root@server1 ~]# cd php-5.6.20

lnmp安全架构图 lnmp架构能实现什么功能_nginx_11

3.解决依赖问题
这些仓库可以提供
yum install libxml2-devel-2.7.6-14.el6.x86_64
    yum install openssl-devel-1.0.1e-15.el6.x86_64
    yum install libcurl-devel.x86_64 
    yum install libjpeg-turbo-devel-1.2.1-1.el6.x86_64
    yum install libpng-devel-1.2.49-1.el6_2.x86_64
    yum install freetype-devel-2.3.11-14.el6_3.1.x86_64
    yum install gmp-devel-4.3.1-7.el6_2.2.x86_64
    yum install net-snmp-devel.x86_64
这几个第三方下载:这里已经下好了再家目录下
    libmcrypt-2.5.8-9.el6.x86_64.rpm  
    libmcrypt-devel-2.5.8-9.el6.x86_64.rpm
    re2c-0.13.5-1.el6.x86_64.rpm
4.解决依赖问题安装

安装3中提到的所有软件

5编译
[root@server1 php-5.6.20]# ./configure --prefix=/usr/local/lnmp/php  --with-config-file-path=/usr/local/lnmp/php/etc --enable-mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --with-snmp --with-gd --with-zlib --with-curl --with-libxml-dir --with-png-dir --with-jpeg-dir --with-freetype-dir --with-pear --with-gettext --with-gmp --enable-inline-optimization --enable-soap --enable-ftp --enable-sockets --enable-mbstring --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-mcrypt --with-mhash

编译成功如下显示:

lnmp安全架构图 lnmp架构能实现什么功能_lnmp安全架构图_12

6.安装
[root@server1 php-5.6.20]# make && make install
7.文件的配置:刚才编译使我们指定路径/usr/local/lnmp/,来看看有没有东西

lnmp安全架构图 lnmp架构能实现什么功能_lnmp安全架构图_13


有新装的php,应该没问题了,我们继续往下走

#7.1新建个nginx用户
useradd nginx
#7.2进入到/usr/local/lnmp/php/etc

复制php-fpm.conf.default 为php-fpm.conf
复制刚才解压的目录/root/php-5.6.20/下的php.ini-production(开发配置文件)到当前目录(/usr/local/lnmp/php/etc)下的php.ini

cd /usr/local/lnmp/php/etc
cp -p php-fpm.conf.default php-fpm.conf
cp /root/php-5.6.20/php.ini-production /usr/local/lnmp/php/etc/php.ini

lnmp安全架构图 lnmp架构能实现什么功能_nginx_14

#7.3修改时区
vim php.ini (/usr/local/lnmp/php/etc)
       ------->>date.timezone =Asia/Shanghai

lnmp安全架构图 lnmp架构能实现什么功能_nginx_15

#7.4配置启动脚本

复制刚解压的目录下的sapi/fpm/init.d.php-fpm到 /etc/init.d/php-fpm,给x权限(看清楚,别复制错了)

cp -p /root/php-5.6.20/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
/etc/init.d/php-fpm start

lnmp安全架构图 lnmp架构能实现什么功能_php_16

三.nginx安装

1.获得解压nginx-1.10.1.tar.gz和nginx-sticky-module-ng.tar.gz(模块)

lnmp安全架构图 lnmp架构能实现什么功能_lnmp安全架构图_17

2.解压两个包
[root@server1 ~]# tar zxf nginx-1.10.1.tar.gz 
[root@server1 ~]# tar zxf nginx-sticky-module-ng.tar.gz

lnmp安全架构图 lnmp架构能实现什么功能_php_18

3.nginx优化

取消bug测试

vim /root/nginx-1.10.1/auto/cc/gcc

lnmp安全架构图 lnmp架构能实现什么功能_php_19


取消版本号(安全考虑)

vim /root/nginx-1.10.1/src/core/nginx.h

lnmp安全架构图 lnmp架构能实现什么功能_lnmp安全架构图_20

4.编译(注意依赖)
[root@server1 nginx-1.10.1]# ./configure --prefix=/usr/local/lnmp/nginx  --with-http_ssl_module --with-http_stub_status_module  --add-module=/root/nginx-sticky-module-ng

如果有依赖性,人家缺什么,给装什么就OK啦~

5.安装
[root@server1 nginx-1.10.1]# make && make install

安装完成如下显示:

lnmp安全架构图 lnmp架构能实现什么功能_lnmp安全架构图_21

6.刚才指定编译路径/usr/local/lnmp/进去看看

lnmp安全架构图 lnmp架构能实现什么功能_lnmp安全架构图_22


编写其新的发布页面内容:

cd /usr/local/lnmp/nginx/html/
vim index.php
    <?php
        phpinfo()   
    ?>

lnmp安全架构图 lnmp架构能实现什么功能_nginx_23

7.配置nginx文件
cd /usr/local/lnmp/nginx/conf
vim nginx.conf
  ---->>
   2 user  nginx;
   3 worker_processes  auto;

   12 events {
   13     worker_connections  65535;
   14 }

   43         location / {
   44             root   html;
   45             index index.php index.html index.htm;
   46         }


   65         location ~ \.php$ {
   66             root           html;
   67             fastcgi_pass   127.0.0.1:9000;
   68             fastcgi_index  index.php;
   69         #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
   70             include        fastcgi.conf;
   71         }

lnmp安全架构图 lnmp架构能实现什么功能_lnmp安全架构图_24


lnmp安全架构图 lnmp架构能实现什么功能_lnmp安全架构图_25


lnmp安全架构图 lnmp架构能实现什么功能_lnmp安全架构图_26


注意点:nginx配置文件第13行1024标示nginx缓存最大文件数,再/etc/security/limits.conf 修改

vim /etc/security/limits.conf 
           -- nginx    -    nofile   65535

lnmp安全架构图 lnmp架构能实现什么功能_lnmp安全架构图_27


保存退出,查看是否有问题,没有问题启动nginx

/usr/local/lnmp/nginx/sbin/nginx -t  //检验语法
/usr/local/lnmp/nginx/sbin/nginx   //启动nginx

lnmp安全架构图 lnmp架构能实现什么功能_php_28

8. 浏览器查看nginx的默认发布目录/usr/local/lnmp/nginx/html

lnmp安全架构图 lnmp架构能实现什么功能_nginx_29

四、论坛为例对数据库进行说明

1.获得论坛模块解压

yum install unzip
unzip Discuz_X3.2_SC_UTF8.zip -d /usr/local/lnmp/nginx/html/  ##解压到nginx默认发布目录
[root@server1 ~]# unzip Discuz_X3.2_SC_UTF8.zip -d /usr/local/lnmp/nginx/html/
2.进入到nginx默认发布目录

这里新建了一个目录bbs,把upload下的所有东西移到了bbs目录下

lnmp安全架构图 lnmp架构能实现什么功能_lnmp安全架构图_30


浏览器前端论坛访问

lnmp安全架构图 lnmp架构能实现什么功能_mysql_31


点击我同意,好多x得解决问题

lnmp安全架构图 lnmp架构能实现什么功能_lnmp安全架构图_32


lnmp安全架构图 lnmp架构能实现什么功能_nginx_33

//加权限注意主目录在哪,这样第归加权限更方便
cd  /usr/local/lnmp/nginx/html/bbs/
         chmod 777config/ -R
     chmod 777 data/ -R
     chmod 777 uc_client/ -R 
     chmod 777 uc_server/ -R

lnmp安全架构图 lnmp架构能实现什么功能_nginx_34


刷新下网页就可以进行下一步了

lnmp安全架构图 lnmp架构能实现什么功能_nginx_35


填写数据库密码,管理员密码等信息,点击下一步

lnmp安全架构图 lnmp架构能实现什么功能_mysql_36


报错,数据库链接错误

lnmp安全架构图 lnmp架构能实现什么功能_php_37

3.数据库配置
#3.1配置/usr/local/lnmp/php/etc/php.ini
vim /usr/local/lnmp/php/etc/php.ini
--->
1001 pdo_mysql.default_socket=/usr/local/lnmp/mysql/data/mysql.sock
1150 mysql.default_socket =/usr/local/lnmp/mysql/data/mysql.sock
1209 mysqli.default_socket =/usr/local/lnmp/mysql/data/mysql.sock
#3.2配置/usr/local/lnmp/mysql/date

chmod 755 /usr/local/lnmp/mysql/data/

lnmp安全架构图 lnmp架构能实现什么功能_nginx_38

#3.3重新加载php服务开启数据库
/etc/init.d/php-fpm reload

lnmp安全架构图 lnmp架构能实现什么功能_mysql_39


刷新网页,ok

lnmp安全架构图 lnmp架构能实现什么功能_mysql_40


lnmp安全架构图 lnmp架构能实现什么功能_mysql_41


数据库查看下

lnmp安全架构图 lnmp架构能实现什么功能_mysql_42


lnmp安全架构图 lnmp架构能实现什么功能_mysql_43


可见论坛的信息已经在数据库中进行了记载。

lnmp架构完结