前言

本文将介绍LNMP架构中Mysql、PHP、Nginx的源码编译过程;这时有人不仅会问:在我们使用的Linux系统中,可以从yum源中获得mysql、php,为什么要进行如此漫长复杂的过程进行编译呢? 这是因为官方为我们提供的mysql、php等其功能有限,我们自行编译,是为了定制化,可以在编译过程中添加需要的功能模块。

实验前准备工作:

(1)为了编译完成后的其它服务的配置,我选择创建一台虚拟机,IP:172.25.6.1
(2)虚拟机相关细节

mysql源码编译时要求虚拟机的硬盘大小不能小于20G,否则后边的编译过程可能会出问题,而且会很漫长,为了提升速度我们增加CPU核数和内存大小

很难过,假如你的内存像我这般大小,在你编译后,内存的使用率会达到100%,为了解决这个问题,我们可以进行扩容 ?(如果内存够可以跳过这些操作,当然以下操作也可以作为编译后的补救措施)

<1>添加磁盘


<2>查看新增的硬盘,/dev/sdb,进行分区

fdisk -l

<3>更改新增磁盘的标签为8e

fdisk /dev/sdb

<4>将新增的磁盘扩充到磁盘的逻辑卷dev/mapper/VolGroup中

pvcreate /dev/sdb1


vgextend VolGroup /dev/sdb1

lvextend -l +5118 /dev/mapper/VolGroup-lv_root

<5>再次查看磁盘的大小发生变化

fdsik -l

<6>查看挂载情况,发现没有变化

<7>重新加载后查看发生变化,扩容成功

resize2fs /dev/mapper/VolGroup-lv_root

一.Msyql编译详解

1.下载安装包,解压

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

2.新建一个目录,作为mysql的目录

 mkdir /usr/local/lnmp/

3.安装必要的软件

yum install cmake-2.8.12.2-4.el6.x86_64.rpm -y               ##选择合适的版本,编译需要的软件
yum install -y ncurses-devel                    ##安装依赖性
yum install gcc gcc-c++ -y
yum install -y bison

cmake跨平台工具时用来编译mysql源码的,用于设置mysql的编译参数,如安装目录,数据存放目录,字符编码,排序规则等

4.开始编译

参数详解

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql \    ##这里mysql上级目录是上面我们建立的/usr/local/lnmp/-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

一定要在解压后的目录中进行编译

注意:如果编译有报错,按照报错提示解决问题后,删除编译产生的目录,重新编译即可

[root@server1 mysql-5.7.17]# rm -fr CMakeCache.txt

5.make

make


**6.make install**

7.安装之后可以看到/usr/local/lnmp目录下生成了mysql目录,而mysql目录下有一些子目录和文件

8.将mysql的配置文件复制到etc下

养成好习惯,次类操作前先备份:备份/etc/my.cnf文件为/etc/my.cnf.bak

cp /etc/my.cnf /etc/my.cnf.bak

9.编辑mysql的配置文件,内容如下:

vim my-default.cnf


10.创建mysql组和用户

11.新建一个data目录作为数据存放目录,修改目录的属性,让mysql用户对这个目录有操作的权限

chgrp mysql /usr/local/lnmp/mysql -R
chown mysql /usr/local/lnmp/mysql/data/ -R


12.将编译生成的mysql二进制命令放进系统环境变量的文件中,保证可以直接使用二进制命令(配置完之后mysql命令可以自动补齐)

vim ~/.bash_profile

source ~/.bash_profile

13.将编辑生成的mysql启动脚本复制到系统服务的目录中,保证脚本有可执行权限

14.将mysql初始化,这时data目录下不能有任何文件,如果有的话删除

mysqld --user=mysql --initialize            ##下图高亮部分是初始化生成的临时密码

/etc/init.d/mysqld  start

15.初始化文成后会生成一个临时密码,用这个密码登陆数据库

mysql -p

SHOW DATABASES;

查看数据失败,这是因为没有进行安全初始化

16.对mysql进行安全初始化

mysql_secure_installation

17.再次进入数据库查看,可以查看

顺便说一句:虽然数据库中的操作语句大小写是通用的,但是养成好习惯,使用大写看起来更专业一点

二、源码安装php

1.下载php及需要的安装包,解压

php-5.6.35.tar.bz2
libmcrypt-2.5.8-9.el6.x86_64.rpm
libmcrypt-devel-2.5.8-9.el6.x86_64.rpm


解压

tar jxf php-5.6.35.tar.bz2

yum install libmcrypt-* -y


2.安装编译php源码时需要的依赖性

直接安装可以从yum源里直接获得

yum install net-snmp-devel curl-devel libxml2-devel libpng-devel libjpeg-devel freetype-devel gmp-devel openldap-devel -y

3.进行编译

所需参数

php-5.6.35
./configure \--prefix=/usr/local/lnmp/php \--with-config-file-path=/usr/local/lnmp/php/etc \--with-openssl --with-snmp --with-gd --with-zlib \--with-curl --with-libxml-dir --with-png-dir --with-jpeg-dir \--with-freetype-dir --with-gmp --with-gettext --with-pear  \--enable-mysqlnd --with-mysql=mysqlnd  \--with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd  \--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


编译成功后:

4.安装

make && make install

很不幸,如果在安装过程中你出现了和我一样的报错,如下:

libtool: link: `ext/opcache/zend_accelerator_blacklist.lo' is not a valid libtool object
make: *** [ext/opcache/opcache.la] Error 1

解决方案:在php解压文件下运行

make distclean

执行完之后重新编译安装

安装成功后如下:

5.安装成功后会看到/usr/local/lnmp下会出先一个php目录

ll /usr/local/lnmp/php/

6.切换到这个目录下,编辑php的默认配置文件

cd /usr/local/lnmp/php/etc
cp php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
25  pid = run/php-fpm.pid  ##pid行去掉注释
149 user = nginx
150 group = niginx      ##保证用户和组都是nginx


7.将源码包中的php.ini文件复制到安装后的目录中


编辑这个文件:更改时区

8.将php的启动文件复制到系统启动脚本的默认目录下


9.创建nginx用户

useradd -M -d /usr/local/lnmp/nginx -s /sbin/nologin nginx

10.启动php服务,启动成功后可以查看到他使用的端口

/etc/init.d/php-fpm start
netstat -tnlp

三、源码安装Nginx

1.获得并解压安装包

nginx-1.14.0.tar.gz
tar zxf nginx-1.14.0.tar.gz


2.切换到解压出的目录,修改下面文件的内容

(1)去掉版本号

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

(2)去掉debug日志(debug日志的级别很低,会产生很多数据,一般不需要开启)

[root@server1 nginx-1.14.0]# vim auto/cc/gcc

3.创建编译环境,添加需要的模块

yum install pcre-devel -y            ##先解决倚赖

编译参数如下:

[root@server1 nginx-1.14.0]# ./configure
--prefix=/usr/local/lnmp/nginx
--with-threads
--with-file-aio
--with-http_ssl_module
--with-http_stub_status_module
--user=nginx
--group=nginx

编译完成如下:

4.安装

make && make install

安装后在/usr/local/lnmp目录下会产生一个nginx子目录

5.配置nginx服务

修改内容如下:

  3 worker_processes  2;             ##2表示cpu内核数43         location / {44             root   html;45             index  index.php index.htm;             ##添加php46         }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;                ##改为fastcgi.conf71         }

切换到nginx/sbin目录下可以进行语法检测,检查配置文件中有没有语法问题

[root@server1 sbin]# ./nginx -v                 ##查看版本号
[root@server1 sbin]# ./nginx -V                    ##查看编译环境

6.创建一个软连接可以直接使用nginx命令

ln -s /usr/local/lnmp/nginx/sbin/nginx  /usr/local/sbin/

7.打开服务查看端口号

[root@server1 sbin]# nginx              ##做完软连接可以用这条命令直接打开服务

打开服务后可以看到生出了几个子目录

8.打开浏览器,访问测试

出现nginx的页面

9.编辑一个php文件,浏览器访问测试

浏览器中刷新后出现php页面,说明nginx和php结合成功

LNMP架构详解(2)——Mysql、PHP、Nginx源码编译过程相关推荐

  1. LNMP架构环境搭建之PHP、Nginx源码编译安装及其简单配置应用

    LNMP架构中的Mysql见上一篇博文"LNMP架构环境搭建之mysql源码编译安装" 一.PHP简介 PHP(外文名:PHP: Hypertext Preprocessor,中文 ...

  2. nginx 源码编译、安装

    nginx 源码编译安装 下载Nginx安装包,Nginx 官网下载,并解压 cd /usr/local/src wget http://nginx.org/download/nginx-1.21.5 ...

  3. nginx源码编译、负载均衡及模块的扩展

    1.nginx源码编译 实验环境: iptables和selinux关闭 redhat6.5 nginx:test1: 172.25.1.11 [root@test1 ~]# ls nginx-1.1 ...

  4. Nginx 源码编译安装

    Nginx 源码编译安装环境 Centos7 Nginx1.8.1    下载地址:http://nginx.org/download/ 选择自己想要的版本 我这边使用1.8.1,下载地址:http: ...

  5. Nginx 源码编译

    1.首先在官网下载Nginx 发布版的源码, Nginx 官网下载的地址是 :http://www.nginx.org/en/download.html 因为Nginx官网支持SVN,可以简单方便的使 ...

  6. Nginx基础篇-Nginx 源码编译安装与平滑升级

    Nginx基础篇-Nginx 源码编译安装与平滑升级 Nginx官网下载地址 http://nginx.org/ 1.安装依赖包 yum -y install pcre-devel zlib-deve ...

  7. nginx(一):nginx源码编译

    nginx源码编译 Nginx服务器编译安装 nginx命令: nginx的./configure预编译参数:https://nginx.org/en/docs/configure.html 1.ng ...

  8. linux中python编译器的配置_方舟编译器环境配置及源码编译过程详解

    1)首先将方舟编译器源代码包下载到本地. https://www.openarkcompiler.cn/download/OpenArkCompiler-0.2.tar.gz 2)Ubuntu系统中方 ...

  9. Linux 利用nginx源码编译安装nginx

    环境 1, CentOS 7 2, nginx 1.13.6 步骤 1,编译前准备 yum install pcre* openssl openssl-devel zlib zlib-devel 2, ...

最新文章

  1. Excel 2007 (Excel.Application) Workbooks.Add 出现内存不够的解决办法
  2. mysql构架,索引,视图,查询语句
  3. 公众号滑动图代码_脱离模板!教你自己动手制作公众号封面图
  4. android 7.0编译报错,编译android7.0 sdk错误解决方法
  5. SSH中为什么action需要用多例而dao层和service层为什么就用单例就可以
  6. Hibernate一对一映射示例注释
  7. 如何使用Node.js和CloudFormation在AWS Lambda中构建和部署GraphQL服务器
  8. Linq To Sql, 为何继承就这么费劲?
  9. OpenCV 使用光流法检测物体运动
  10. 详细解说五个Java项目
  11. 在win7命令行使用ssh通过秘钥登录linux
  12. android Fragment 动画 设置位置
  13. uniapp阿里云图标库如何本地引入
  14. MySQL修改表字段的长度
  15. 2016英语三级分数计算机,公共英语三级考试分数权重计算方法
  16. PB powerbuilder 电子邮件发送
  17. 如何用Java写出热门大鱼吃小鱼游戏
  18. 50个Java精品源码免积分下载
  19. 挖掘长庄股及案例分析
  20. HSC32C1调试记录

热门文章

  1. Python计算医疗数据训练集、测试集的对应的临床特征:训练集(测试集)的阴性和阳性的样本个数、连续变量的均值(标准差)以及训练测试集阳性阴性的p值、离散变量的分类统计、比率、训练测试集阳性阴性的p值
  2. R语言构建xgboost模型:指定特征交互方式、单调性约束的特征、获取模型中的最终特征交互形式(interaction and monotonicity constraints)
  3. 为什么权重初始化要非对称?为什么权重初始化不能全为0?为什么初始化值不能太大或者太小?介绍下He初始化以及Xavier初始化?
  4. Pacbio 纯三代组装复活草基因组
  5. 【Python】Numpy简单入门
  6. cpc卡内计费信息异常包括_抖音信息流落地页直达广告怎么做?
  7. 小米mix2s html,【小米MIX2s评测】性能·骁龙845确实很强 但小米没压住_小米 MIX 2s(6GB RAM/全网通)_手机评测-中关村在线...
  8. webscraper多页爬取_数据收集:web scraper 多页(无规律url)抓取
  9. windows10远程控制 电脑,远程桌面
  10. 利用prototxt文件绘制网络的结构图