700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > LNMP架构详解(2)——Mysql PHP Nginx源码编译过程

LNMP架构详解(2)——Mysql PHP Nginx源码编译过程

时间:2020-12-14 15:55:08

相关推荐

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.gztar 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++ -yyum 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/f文件为/etc/f.bak

cp /etc/f /etc/f.bak

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

vim my-f

10.创建mysql组和用户

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

chgrp mysql /usr/local/lnmp/mysql -Rchown 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.bz2libmcrypt-2.5.8-9.el6.x86_64.rpmlibmcrypt-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 objectmake: *** [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/etccp php-fpm.conf.default php-fpm.confvim php-fpm.conf

25 pid = run/php-fpm.pid ##pid行去掉注释149 user = nginx150 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 startnetstat -tnlp

三、源码安装Nginx

1.获得并解压安装包

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

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

(1)去掉版本号

cd nginx-1.14.0vim 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结合成功

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。