lnmp架构(二)——搭建lnmp环境(php、nginx、mysql源码编译)

从yum源中获得官方为我们提供的mysql、php等其功能有限,而我们自行编译,是为了定制化,可以在编译过程中添加我们需要的功能模块,需要什么服务就安装什么,这样系统就比较纯净。

实验环境

主机(版本:ip) 功用
虚拟机server1(rhel6.5:172.25.2.1) 搭建lnmp
真机(rhel7.3:172.25.2.250) 测试机

首先,封装一个rhel6.5的母盘,然后快照一个镜像

一、源码编译MySQL

1、解压安装mysql:tar zxf mysql-boost-5.7.17.tar.gz
2、安装cmake,cmake相当于configure,用来编译yum install -y cmake-2.8.12.2-4.el6.x86_64.rpm

在这里插入图片描述在这里插入图片描述
3、进入解压目录,编译:

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 \  #Unix socket 文件路径
	 -DWITH_MYISAM_STORAGE_ENGINE=1 \                     #安装 myisam 存储引擎
	 -DWITH_INNOBASE_STORAGE_ENGINE=1 \                   #安装 innodb 存储引擎
	 -DDEFAULT_CHARSET=utf8 \                             #使用 utf8 字符
	 -DDEFAULT_COLLATION=utf8_general_ci \                #校验字符
	 -DEXTRA_CHARSETS=all \                               #安装所有扩展字符集
	 -DWITH_BOOST=boost/boost_1_59_0/                     

在这里插入图片描述在这里插入图片描述

  • 当报错:
CMake Error at cmake/boost.cmake:81 (MESSAGE):
  You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=<directory>

  This CMake script will look for boost in <directory>.  If it is not there,
  it will download and unpack it (in that directory) for you.

  If you are inside a firewall, you may need to use an http proxy:

  export http_proxy=http://example.com:80

解决:缺少 -DWITH_BOOST= 参数 编译时添加-DWITH_BOOST=boost/boost_1_59_0/

4、发现报错,根据提示解决依赖性问题,需要安装:yum install -y gcc gcc-c++ ncurses-devel

在这里插入图片描述在这里插入图片描述
5、再次重新编译:

  • 重新编译时,需要清除原来的对象文件和缓存信息:make clean;rm -fr CmakeCache.txt

在这里插入图片描述

6、发现有一个警告:

CMake Warning at cmake/bison.cmake:20 (MESSAGE):
  Bison executable not found in PATH
Call Stack (most recent call first):
  sql/CMakeLists.txt:549 (INCLUDE)

在这里插入图片描述

解决:yum install -y bison,再次重新编译。
在这里插入图片描述在这里插入图片描述
7、make && make install 过程时间较长,如果make还有问题,删除原来的目录,重新解压编译

在这里插入图片描述
8、复制启动脚本/root/mysql-5.7.17/support-files/mysql.server/etc/init.d/mysqld,并给可执行权限chmod +x /etc/init.d/mysqld

在这里插入图片描述
9、将原来的/etc/my.cnf备份,重新拷贝安装包里的到/etc

[root@server1 support-files]# cp my.cnf my.cnf.bak
[root@server1 support-files]# cp my-default.cnf /etc/my.cnf

在这里插入图片描述

10、编辑/etc/my.cnf

修改配置:
basedir = /usr/local/lnmp/mysql
datadir = /usr/local/lnmp/mysql/data
socket = /usr/local/lnmp/mysql/data/mysql.sock

在这里插入图片描述
在这里插入图片描述

11、添加用户和组,指定id为27,因为rpm默认安装时mysql用户的id为27,并非强制

[root@server1 support-files]# groupadd -g 27 mysql
[root@server1 support-files]# useradd -u 27 -g 27 mysql 
[root@server1 support-files]# chown mysql.mysql /usr/local/lnmp/mysql -R 
	# 修改/usr/local/lnmp/mysql目录的权限,使其对mysql用户可写

在这里插入图片描述
在这里插入图片描述

12、将mysql命令添加到环境变量

[root@server1 support-files]# vim ~/.bash_profile
	添加:PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin
[root@server1 support-files]# source ~/.bash_profile

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

13、初始化mysql,会生成一个临时密码,用于登录mysql(要记住此密码)

在这里插入图片描述

14、为了安全,再将mysql目录的所有者改为root,但是 数据目录所有者必须是mysql,不然mysql用户不能写

[root@server1 support-files]# chown root /usr/local/lnmp/mysql -R
[root@server1 support-files]# chown mysql /usr/local/lnmp/mysql/data -R 

在这里插入图片描述
15、启动mysql:/etc/init.d/mysqld start,使用初始化密码登录mysql
16、执行show databases;会出现报错,这是因为没有进行安全初始化
17、执行:mysql_secure_installation,然后会提示是否启用密码检测插件,直接回车不启用,否则会要求密码有大小写和特殊字符等要求,剩余全部选 y

在这里插入图片描述在这里插入图片描述
此时,再次登录数据库,可以查看数据库了。

在这里插入图片描述
可以看到数据目录下生成了套节字文件

在这里插入图片描述

最后,可以看到mysql服务已开启。

在这里插入图片描述

二、源码编译安装PHP

1、解压php的tar包tar jxf php-5.6.35.tar.bz2

在这里插入图片描述
2、进入解压后的目录/root/php-5.6.35,开始编译

./configure --prefix=/usr/local/lnmp/php \
	--with-config-file-path=/usr/local/lnmp/php/etc \  #指定php.ini位置   
	--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-freetype-dir  打开对freetype字体库的支持 
	--with-gettext --with-pear --enable-mysqlnd  \
	--with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd \
		# --with-MySQL=mysql安装目录,对mysql的支持 ;--with-MySQLi=mysqli文件目录,优化支持
	--enable-inline-optimization --enable-soap --enable-ftp \ 
	--enable-sockets --enable-mbstring --enable-fpm  \ #--enable-fpm参数即可开启PHP-FPM
	--with-fpm-user=nginx --with-fpm-group=nginx  \
		# 编译的时候指定了php的用户是nginx用户,故要建立nginx用户
	--with-mcrypt --with-mhash

在这里插入图片描述
3、出现报错:

  • 报错1:

在这里插入图片描述

解决:yum install -y libxml2-devel,再次编译

在这里插入图片描述

  • 报错2:
    在这里插入图片描述
    解决:yum install -y openssl-devel,再次编译

在这里插入图片描述

  • 报错3:

在这里插入图片描述
解决:yum install -y libcurl-devel,再次编译

在这里插入图片描述

  • 报错4:
    在这里插入图片描述解决:yum install -y libjpeg-turbo-devel-1.2.1-1.el6.x86_64,再次编译
    在这里插入图片描述
  • 报错5:
    在这里插入图片描述
    解决:yum install -y libpng-devel-1.2.49-1.el6_2.x86_64,再次编译
    在这里插入图片描述
  • 报错6,及解决:
    在这里插入图片描述
  • 报错7:

在这里插入图片描述

解决:
在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 报错8,及解决:

在这里插入图片描述
4、再次编译,成功。

在这里插入图片描述

5、安装make && make install

在这里插入图片描述
在这里插入图片描述
6、编辑配置文件php-fpm.conf

[root@server1 php-5.6.35]# cd /usr/local/lnmp/php/etc
[root@server1 etc]# ls
pear.conf  php-fpm.conf.default
[root@server1 etc]#  cp php-fpm.conf.default php-fpm.conf  
	# 复制一份配置文件模版
[root@server1 etc]# vim php-fpm.conf  # 编辑fastcgi的进程管理文件
25 pid = run/php-fpm.pid
149 user = nginx
150 group = nginx


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7、拷贝更改php主配置文件/usr/local/lnmp/php/etc/php.ini,修改时区

[root@server1 ~]# cd /root/php-5.6.35
[root@server1 php-5.6.35]# cp php.ini-production /usr/local/lnmp/php/etc/php.ini 
[root@server1 php-5.6.35]# vim /usr/local/lnmp/php/etc/php.ini
date.timezone = Asia/Shanghai

在这里插入图片描述在这里插入图片描述

8、拷贝php启动脚本至/etc/init.d/

[root@server1 php-5.6.35]# cd /root/php-5.6.35/sapi/fpm
[root@server1 fpm]# ls
config.m4       init.d.php-fpm.in  php-fpm.8        php-fpm.service     tests
CREDITS         LICENSE            php-fpm.8.in     php-fpm.service.in  www.conf.in
fpm             Makefile.frag      php-fpm.conf     status.html
init.d.php-fpm  php-fpm            php-fpm.conf.in  status.html.in
[root@server1 fpm]# cp init.d.php-fpm /etc/init.d/php-fpm 
[root@server1 fpm]# chmod +x /etc/init.d/php-fpm 
[root@server1 fpm]# useradd nginx
[root@server1 fpm]# id nginx
uid=500(nginx) gid=500(nginx) groups=500(nginx)
[root@server1 fpm]# /etc/init.d/php-fpm start
Starting php-fpm  done

在这里插入图片描述

9、此时,netstat -tlnp可以看到php已经启动,默认php服务开启9000端口。

在这里插入图片描述

三、源码编译nginx

1、解压nginx的tar包:tar zxf nginx-1.17.4.tar.gz

在这里插入图片描述
2、进入nginx解压后的目录,修改src/core/nginx.h文件,删除nginx版本号

在这里插入图片描述

在这里插入图片描述

3、编辑auto/cc/gcc文件,关闭debug模式

在这里插入图片描述

在这里插入图片描述

4、开始编译安装

./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio --user=nginx --group=nginx

在这里插入图片描述
5、出现报错,安装yum install pcre-devel -y,然后再次编译。

在这里插入图片描述
在这里插入图片描述
6、编译成功,安装make && make install

在这里插入图片描述

7、编辑nginx配置文件/usr/local/lnmp/nginx/conf/nginx.conf,开启php模块

[root@server1 nginx-1.17.4]# vim /usr/local/lnmp/nginx/conf/nginx.conf

43  location / {
44             root   html;
45             index  index.php index.html index.htm; (添加php页面)
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         }

在这里插入图片描述

在这里插入图片描述

8、创建软链接,将nginx启动脚本链接到/usr/local/sbin/,然后启动nginx。

[root@server1 nginx-1.17.4]# ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin/
[root@server1 nginx-1.17.4]# nginx -t
[root@server1 nginx-1.17.4]# nginx 

在这里插入图片描述
9、此时,可以看到php、nginx、mysql服务全部开启
在这里插入图片描述
测试:

1、访问:http://172.25.2.1 ,可以看到nginx默认发布页面
在这里插入图片描述
2、在nginx默认发布目录添加 index.php

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

在这里插入图片描述

在这里插入图片描述

访问:http://172.25.2.1/index.php ,可以看到php默认发布页面

在这里插入图片描述
至此,lnmp环境就已经搭建完成了。

发布了125 篇原创文章 · 获赞 25 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ranrancc_/article/details/103113015