LNMP环境搭建整理

起因:最近比较上瘾Linux系统,虽然很久之前租了个服务器,借用PHPSTORM的Deployment实时上传代码,xshell连接使用命令调试,也挺方便的,但是总觉得不得劲,毕竟用的多,就意味着会使用的深入,掌握一些平时不了解的特性。

无意间发现有Bash On Ubuntu On Windows这么个东西,可以内置安装一个Linux系统,立马装好后,开始准备lamp环境建设。由于WSL是ubuntu系统,一些库平时能直接yum install安装现在不能用,不仅仅更换apt-get就能安装,总出现各种意外。

引起思考的是,要编译PHP等软件时,需要预先安装各类的库,以往都是出现什么问题,将问题描述一搜,该yum install就装,该下载源码就编译,对一些库,为什么要装,用处是啥不太了解。

 

这次特意将服务器初始化,开始新的一轮LNMP的搭建。

  • nginx的搭建

执行:wget http://nginx.org/download/nginx-1.9.9.tar.gz

下载1.9.9版本的nginx源码,解压后,进入目录后预备执行:

./configure --prefix=/usr/local/Software/nginx --with-http_ssl_module

configure命令是为了配置安装选项,会生成Makefile,里面包含了操作人员手动设置的配置项,会检查相关的依赖库是否存在、可用等,会比较依赖库的版本信息。

 

解释下携带配置参数的作用

nginx源码目录结构

LNMP环境搭建整理_第1张图片

执行./configure

截取部分输出

LNMP环境搭建整理_第2张图片

会检查操作系统、编译器、依赖文件等。

报错:

提示HTTP的rewrite模块需要PCRE库,那么PCRE是什么呢?

查阅可知,PCRE全写(Perl Compatible Regular Expressions),是一个用C语言编写的正则表达式函数库,确实在nginx.conf里的location、rewrite等处,都使用了正则。

执行命令安装

yum -y install pcre pcre-devel

现在发现只安装pcre-devel库就行,devel和非devel的区别在于,devel包含了普通包,但比普通包多了头文件,编译的时候如果需要这个库,那么安装devel包即可,会用到头文件。

 

configure成功后会提示

LNMP环境搭建整理_第3张图片

提示使用了PCRE库、crypto库、zlib库

crypto库是加密库,md5和sha1是两种加密方式,基于该系统默认库

zlib 是通用的压缩库,提供了一套 in-memory 压缩和解压函数,并能检测解压出来的数据的完整性。

软件默认安装在/usr/local/nginx内

 

将当前目录与处理前比较,发现多了一个Makefile文件,前面提到包含操作人员手动设置的配置项。

LNMP环境搭建整理_第4张图片

 

携带了两个参数,prefix和with-http_ssl_module

prefix是常用选项,指定安装路径。如果我们不设置这个参数,系统会将软件安装了默认位置处,比如nginx是/usr/local/nginx,其他软件不同类型的文件可能位置还不一样,会比较分散,这样要执行或删除并不方便。若设置了参数,软件相关文件都会在一个目录,维护十分便捷。

重新执行:./configure –prefix=/usr/local/Software/nginx

LNMP环境搭建整理_第5张图片

软件已经指定安装到我们设置的目录,同时想说下,prefix携带路径最后一个加了/不会错,但是存储的路径都会存在两个/,很惊讶。

 

--with-http_ssl_module是为了支持https

执行完整命令:./configure --prefix=/usr/local/Software/nginx --with-http_ssl_module

报错:

openssl是加密相关的库

执行命令安装

yum -y install openssl openssl-devel

 

这下configure操作正常

LNMP环境搭建整理_第6张图片

使用了openssl库,md5和sha1也更换了依赖库。

分别执行编译、安装命令

make

make install

make实际含义是编译(compile),能够生成可执行文件,依赖于Makefile文件的内容。

make install执行安装操作

 

安装完成启动nginx后,访问主页显示欢迎界面如下

LNMP环境搭建整理_第7张图片

不得不说,会了点nginx后,发现负载均衡,以及各种情况下的请求控制,比如指定类型文件限制访问、请求在不同网络内转发等都变得非常方便。

在当前LNMP环境越来越流行的情况下,PHPer深入学习nginx是理所当然的事情。

 

  • Mysql搭建

因为本地已经有了mysql5.6版本的源码包,所以就不重新wget了,

解压后进入根目录,执行命令

cmake \

> -DCMAKE_INSTALL_PREFIX=/usr/local/Software/mysql \

> -DMYSQL_DATADIR=/usr/local/Software/mysql/data \

> -DDEFAULT_CHARSET=utf8 \

> -DDEFAULT_COLLATION=utf8_general_ci \

> -DEXTRA_CHARSETS=all \

> -DENABLED_LOCAL_INFILE=1

执行报错:

command not found: cmake

执行安装命令:yum install -y cmake

cmake也是为了Makefile文件交由下一步的make使用的,那么和configure有什么区别呢?暂时还没学习过,目前只知道是cmake是个和make级别相似的库,跨平台生成对应平台能用的Makefile;configure一个shell的脚本文件,只能被sh执行。

 

DCMAKE_INSTALL_PREFIX:mysql的安装目录,类似于configure的—prefix

DMYSQL_DATADIR:mysql数据库文件目录

DDEFAULT_CHARSET:服务器的字符集,如果不设置,使用默认的latin1,会导致中文不支持

DDEFAULT_COLLATION:服务器的排序规则

DEXTRA_CHARSETS:安装所有扩展字符集

DENABLED_LOCAL_INFILE:允许从本地导入数据

 

报错:

Curses library not found.  Please install appropriate package

yum -y install ncurses-devel

ncurses是一个允许用户编写基于文本的用户界面(TUI)的编程库,用来定制界面。

 

rm -f CMakeCache.txt

cmake继续操作

LNMP环境搭建整理_第8张图片

执行安装命令:yum -y install gcc-c++

安装C++库

继续重复,执行make && make install提示安装成功

 

./scripts/mysql_install_db --user=mysql

进行初始化数据库时,报错:FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:

执行安装命令:yum install -y perl perl-devel

Perl是个脚本语言,而mysql_install_db是基于Perl的脚本程序,vim mysql_install_db可以看下头部。

提示相同错误

yum-y install autoconf

autoconf是制作编译、安装、打包软件的配置脚本

重新初始化后,启动mysql成功

 

  • PHP7搭建

./configure --prefix=/usr/local/Software/php7

--with-curl:打开CURL库的支持,能够通过URL与其他服务器通信

--with-freetype-dir:打开freetype字体库的支持

--with-gd:打开gd库的支持,处理图形使用

--with-gettext:打开gnu 的gettext 支持

--with-iconv-dir:使PHP支持iconv函数

--with-mysqli:打开mysqli支持

--with-openssl:打开openssl执行

--with-pdo-mysql:启动pdo

--with-pear:打开pear命令的支持,PHP扩展用的

--with-png-dir:打开对png图片的支持

--with-zlib:打开zlib库的支持

--enable-fpm:PHP-FPM

--enable-bcmath:bcmatch(公元前风格精度数学)

--enable-mbstring:打开多字节字符串的支持

--enable-opcache:打开opcache缓存

--enable-soap:打开SOAP支持

--enable-sockets:打开sockets支持

--enable-zip:打开对zip支持

在网上找到的配置项,其实我感觉吧,经验丰富的人在安装的时候,会预先尽可能的把拓展加上,因为我不太喜欢背是什么用的,自己搭建的环境有些暂时用不到,所以一般都是用到什么加什么。

 

configure: error: libxml2 not found. Please check your libxml2 installation.

yum -y install libxml2-devel

libxml2是个XML库,能对XML文件进行各种操作

 

configure: error: cURL version 7.10.5 or later is required to compile php with cURL support

yum -y install curl-devel

进行服务器通信的库

 

configure: error: png.h not found.

yum -y install libpng-devel

操作PNG文件的库

 

configure: error: freetype-config not found.

yum -y install  freetype-devel

字体引擎库

 

configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution

yum -y install libxslt-devel

libxml2的扩展

 

mak && make install

安装成功

 

流水式的记录此次的过程,很多点深入研究还要花很多时间,后续进行吧。

话说xshell设置透明度,找个好看的背景图片,弄上zsh好看的主题,敲着命令感觉杠杠的。

你可能感兴趣的:(PHP)