LNMP架构详解(2)——Mysql、PHP、Nginx源码编译过程
前言
本文将介绍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源码编译过程相关推荐
- LNMP架构环境搭建之PHP、Nginx源码编译安装及其简单配置应用
LNMP架构中的Mysql见上一篇博文"LNMP架构环境搭建之mysql源码编译安装" 一.PHP简介 PHP(外文名:PHP: Hypertext Preprocessor,中文 ...
- nginx 源码编译、安装
nginx 源码编译安装 下载Nginx安装包,Nginx 官网下载,并解压 cd /usr/local/src wget http://nginx.org/download/nginx-1.21.5 ...
- nginx源码编译、负载均衡及模块的扩展
1.nginx源码编译 实验环境: iptables和selinux关闭 redhat6.5 nginx:test1: 172.25.1.11 [root@test1 ~]# ls nginx-1.1 ...
- Nginx 源码编译安装
Nginx 源码编译安装环境 Centos7 Nginx1.8.1 下载地址:http://nginx.org/download/ 选择自己想要的版本 我这边使用1.8.1,下载地址:http: ...
- Nginx 源码编译
1.首先在官网下载Nginx 发布版的源码, Nginx 官网下载的地址是 :http://www.nginx.org/en/download.html 因为Nginx官网支持SVN,可以简单方便的使 ...
- Nginx基础篇-Nginx 源码编译安装与平滑升级
Nginx基础篇-Nginx 源码编译安装与平滑升级 Nginx官网下载地址 http://nginx.org/ 1.安装依赖包 yum -y install pcre-devel zlib-deve ...
- nginx(一):nginx源码编译
nginx源码编译 Nginx服务器编译安装 nginx命令: nginx的./configure预编译参数:https://nginx.org/en/docs/configure.html 1.ng ...
- linux中python编译器的配置_方舟编译器环境配置及源码编译过程详解
1)首先将方舟编译器源代码包下载到本地. https://www.openarkcompiler.cn/download/OpenArkCompiler-0.2.tar.gz 2)Ubuntu系统中方 ...
- Linux 利用nginx源码编译安装nginx
环境 1, CentOS 7 2, nginx 1.13.6 步骤 1,编译前准备 yum install pcre* openssl openssl-devel zlib zlib-devel 2, ...
最新文章
- Excel 2007 (Excel.Application) Workbooks.Add 出现内存不够的解决办法
- mysql构架,索引,视图,查询语句
- 公众号滑动图代码_脱离模板!教你自己动手制作公众号封面图
- android 7.0编译报错,编译android7.0 sdk错误解决方法
- SSH中为什么action需要用多例而dao层和service层为什么就用单例就可以
- Hibernate一对一映射示例注释
- 如何使用Node.js和CloudFormation在AWS Lambda中构建和部署GraphQL服务器
- Linq To Sql, 为何继承就这么费劲?
- OpenCV 使用光流法检测物体运动
- 详细解说五个Java项目
- 在win7命令行使用ssh通过秘钥登录linux
- android Fragment 动画 设置位置
- uniapp阿里云图标库如何本地引入
- MySQL修改表字段的长度
- 2016英语三级分数计算机,公共英语三级考试分数权重计算方法
- PB powerbuilder 电子邮件发送
- 如何用Java写出热门大鱼吃小鱼游戏
- 50个Java精品源码免积分下载
- 挖掘长庄股及案例分析
- HSC32C1调试记录
热门文章
- Python计算医疗数据训练集、测试集的对应的临床特征:训练集(测试集)的阴性和阳性的样本个数、连续变量的均值(标准差)以及训练测试集阳性阴性的p值、离散变量的分类统计、比率、训练测试集阳性阴性的p值
- R语言构建xgboost模型:指定特征交互方式、单调性约束的特征、获取模型中的最终特征交互形式(interaction and monotonicity constraints)
- 为什么权重初始化要非对称?为什么权重初始化不能全为0?为什么初始化值不能太大或者太小?介绍下He初始化以及Xavier初始化?
- Pacbio 纯三代组装复活草基因组
- 【Python】Numpy简单入门
- cpc卡内计费信息异常包括_抖音信息流落地页直达广告怎么做?
- 小米mix2s html,【小米MIX2s评测】性能·骁龙845确实很强 但小米没压住_小米 MIX 2s(6GB RAM/全网通)_手机评测-中关村在线...
- webscraper多页爬取_数据收集:web scraper 多页(无规律url)抓取
- windows10远程控制 电脑,远程桌面
- 利用prototxt文件绘制网络的结构图