LNMP架构搭建-----源码编译(MYSQL,PHP,nginx)

LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。
(1) Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntu、fedora、gentoo等。
(2)Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
(3)Mysql是一个小型关系型数据库管理系统。 PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。
(4)这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。

一.MYSQL数据库的源码编译

(一)编译源码
1.得到mysql数据库的源码包(建议一般去官网下载)并进行解压

tar zxf mysql-boost-5.7.17.tar.gz 
cd mysql-5.7.17/

2.安装源码编译工具cmake(支持编译C++语言)
cmake跨平台工具是用来预编译mysql源码的,用于设置mysql的编译参数。如:安装目录、数据存放目录、字符编码、排序规则等

yum install cmake-2.8.12.2-4.el6.x86_64.rpm

3.创建预编译环境,可以定制即加上自己所需的安装条件(比如安装位置等等)

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql   \指定mysql的安装位置
          -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data   \数据库中数据存放的目录
          -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock  \链接数据库的SOCKET文件
          -DWITH_MYISAM_STORAGE_ENGINE=1   \ 安装MYISAM存储引擎
          -DENABLED_LOCAL_INFILE=1   \ 允许从本地导入数据
          -DWITH_PARTITION_STORAGE_ENGINE=1   \ 安装分区存储引擎
          -DWITH_SSL=yes   \ 支持SSL加密
          -DDEFAULT_CHARSET=utf8   \  使用UTF-8字符编码
          -DDEFAULT_COLLATION=utf8_general_ci   \  校验字符
          -DEXTRA_CHARSETS=all   \ 安装所有扩展字符集
          -DMYSQL_TCP_PORT=3306   \ MYSQL监听端口

3.在初次编译后,我们会发现有许多依赖性未安装,一个一个解决依赖项,预编译环境配置完成

yum install gcc-c++ -y
yum install bison -y
yum install ncurses-devel -y
rm -fr CMakeCache.txt   
# 一次编译完成后,会提示我们删除所在目录下的CMakeCache.txt文件,才能清除上次编译的缓存,从而开始新的编译
yum install openssl-devel -y

LNMP架构搭建-----源码编译(MYSQL,PHP,nginx)_第1张图片
4.编译汇编
make & make install
(二)配置MYSQL
1.进入源码编译目录,再进入mysql安装的位置,将编译完成的默认配置文件放在/etc下

  cd /usr/local/lnmp/mysql/  # mysql的安装位置
  cd support-files/          # 配置文件所在位置
  cp my-default.cnf /etc/my.cnf   # 将配置文件拷贝到/etc(系统默认配置文件目录)

LNMP架构搭建-----源码编译(MYSQL,PHP,nginx)_第2张图片
2.配置mysql服务

# These are commonly set, remove the # and set as required.
basedir = /usr/local/lnmp/mysql          # mysql的安装目录
datadir = /usr/local/lnmp/mysql/data     # mysql数据存放位置
port = 3306                              # mysql服务对外端口
# server_id = .....
socket = /usr/local/lnmp/mysql/data/mysql.sock  # mysql与外界联系的套接字文件位置

LNMP架构搭建-----源码编译(MYSQL,PHP,nginx)_第3张图片
3.将编译完成的mysql启动脚本复制到系统启动服务的默认目录中

cp mysql.server /etc/init.d/mysqld

4.对mysql服务进行限制(利用mysql用户),将mysql服务的工作空间局限在mysql用户的家目录中,创建mysql组和mysql用户

  groupadd -g 27 mysql
  useradd -u 27 -g 27 -M -d /usr/local/lnmp/mysql/data -s /sbin/nologin mysql
  # 指定mysql用户的家目录为/usr/local/lnmp/mysql/data
  #   (-M表示不创建其家目录)。为了系统安全,MYSQL默认使用mysql用户来运行相关程序。

5.将mysql目录下的data目录的所属组修改为mysql,因为mysql服务将要往这个目录中写数据,保证其有执行权限
6.将编译生成的mysql二进制命令放进系统的环境变量文件中,保证可以直接调用该二进制命令

vim /root/.bash_profile
source .bash_profile   加载.bash_profile文件
# 把mysql的对应的命令脚本添加到环境变量中。也可以在root的path中,使用软链接添加进来。(ln -s /usr/local/lnmp/mysql/bin/* /usr/local/sbin/)

LNMP架构搭建-----源码编译(MYSQL,PHP,nginx)_第4张图片
7.执行mysql的配置初始化文件

mysqld --initialize --user=mysql
# 注意生成的初始化密码在最底下(注意不要冒号后边的空格)

LNMP架构搭建-----源码编译(MYSQL,PHP,nginx)_第5张图片
(三).mysql的安全初始化
1.打开mysql服务
2.执行安全初始化脚本mysql_secure_installation
LNMP架构搭建-----源码编译(MYSQL,PHP,nginx)_第6张图片
LNMP架构搭建-----源码编译(MYSQL,PHP,nginx)_第7张图片
LNMP架构搭建-----源码编译(MYSQL,PHP,nginx)_第8张图片
LNMP架构搭建-----源码编译(MYSQL,PHP,nginx)_第9张图片
LNMP架构搭建-----源码编译(MYSQL,PHP,nginx)_第10张图片
LNMP架构搭建-----源码编译(MYSQL,PHP,nginx)_第11张图片
3.登陆mysql数据库测试
LNMP架构搭建-----源码编译(MYSQL,PHP,nginx)_第12张图片
这样,LNMP架构中的MYSQL数据库源码编译完成….

二.PHP源码编译

1.得到PHP的源码包并解压

tar jxf php-5.6.35.tar.bz2

2进入解压目录创造预编译环境

.cd php-5.6.35
./configure --prefix=/usr/local/lnmp/php   # php安装的位置
--with-config-file-path=/usr/local/lnmp/php/etc    # php配置文件所在的位置
--with-mysql=mysqlnd 
--enable-mysqlnd 
--with-mysqli=mysqlnd 
--with-pdo-mysql=mysqlnd    # 支持与mysql数据库之间建立联系
--with-openssl     # 支持openssl加密
--with-snmp 
--with-gd 
--with-zlib 
--with-curl 
--with-libxml-dir      #支持 libxml 函数
--with-png-dir --with-jpeg-dir --with-freetype-dir   # php处理图片的格式
 --with-pear -
--with-gmp 
--enable-inline-optimization 
--enable-soap 
--enable-ftp 
--enable-sockets 
--enable-mbstring 
--enable-fpm              # 开启fpm模式(nginx等服务用的)
--with-fpm-user=nginx     # 对PHP服务的限制通过nginx用户来实现
--with-fpm-group=nginx    # PHP以nginx用户组身份运行
--with-mcrypt             # 提供了对多种块算法的支持 主要用来实现加密等算法
--with-mhash              # 加密算法

3.解决依赖性

yum install libxml2-devel openssl-devel -y gd-devel-2.0.35-11.el6.x86_64.rpm curl-devel gmp-devel
yum install libmcrypt-2.5.8-9.el6.x86_64.rpm yum install libmcrypt-devel-2.5.8-9.el6.x86_64.rpm  net-snmp-devel  

4.编译和安装

make && make install 

5.将配置文件拷贝到

cd /usr/local/lnmp/php/etc/   
cp php-fpm.conf.default   php-fpm.conf
cp php-5.6.35/php.ini-production /usr/local/lnmp/php/etc/php.ini

7.做php服务的简单配置(配置pid和时区)

cd /usr/local/lnmp/php/etc
  vim php.ini          
  vim php-fpm.conf     # 打开 pid,添加时区Asia/Shanghai 
useradd -M -d /usr/local/lnmp/nginx -s /sbin/nologin nginx

8.将php启动的脚本复制到系统启动脚本的默认目录下,并测试php是否可以启动

cd php-5.6.35/sapi/fpm/    
cp init.d.php-fpm /etc/init.d/php-fpm    # init.d.php-fpm是编译完成的启动脚本
chmod +x /etc/init.d/php-fpm             #给脚本加上可执行权限
/etc/init.d/php-fpm start                #打开php服务
netstat -antlp                           # 查看php服务的监听端口

LNMP架构搭建-----源码编译(MYSQL,PHP,nginx)_第13张图片

三.nginx的源码编译

1.得到nginx的源码包并解压

tar zxf nginx-1.10.1.tar.gz   
tar zxf nginx-sticky-module-ng.tar.gz   # 带有sticky模块的nginx包

2.去掉nginx的版本号

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

3.注释debug

cd nginx-1.10.1/auto/cc   
vim gcc  

4.创造预编译环境

./configure --prefix=/usr/local/lnmp/nginx    # nginx的安装路径
--with-http_ssl_module                        # 支持https
--with-http_stub_status_module 
--with-threads    # 支持线程并发
--user=nginx 
--group=nginx     # 运行在nginx用户和nginx组
--with-file-aio

5.解决源编译中的依赖性问题

  yum install pcre-devel -y

LNMP架构搭建-----源码编译(MYSQL,PHP,nginx)_第14张图片
6.编译汇编

make 
make install

5.配置nginx服务

cd /usr/local/lnmp/nginx/conf/
vim nginx.conf
   第一行加上运行用户,第13行加上最大文件数
   第65---71行,去掉注释   # 将nginx与php结合起来

LNMP架构搭建-----源码编译(MYSQL,PHP,nginx)_第15张图片
6.对nginx用户做限制

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

7.将编译生成的mysql二进制命令放进系统的环境变量文件中,保证可以直接调用该二进制命令

vim /root/.bash_profile
  PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin:/usr/local/lnmp/nginx/sbin
source /root/.bash_profile   # 重新加载/root/.bash_profile文件

8.检测nginx服务是否可用并打开nginx服务

nginx -t   # 检测配置文件是否有错
nginx      # 打开nginx服务

LNMP架构搭建-----源码编译(MYSQL,PHP,nginx)_第16张图片
9.访问测试

cd /usr/local/lnmp/nginx/html/
  vim index.php
   
    phpinfo()
    ?>
在浏览器处输入nginx和php所在主机ip/地址:172.25.1.5/index.php

LNMP架构搭建-----源码编译(MYSQL,PHP,nginx)_第17张图片
11.修改php的默认访问(将php后缀文件作为默认发布文件):

cd /usr/local/lnmp/nginx/conf  
vim nginx.conf
location / {
            root   html;
            index  index.php(放在第一个) index.html index.htm;
        }

LNMP架构搭建-----源码编译(MYSQL,PHP,nginx)_第18张图片
LNMP架构搭建-----源码编译(MYSQL,PHP,nginx)_第19张图片

nginx的源码编译结束…..

你可能感兴趣的:(LNMP架构搭建-----源码编译(MYSQL,PHP,nginx))