从零搭建LNMP环境
Posted だā简ゑ箪ャ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从零搭建LNMP环境相关的知识,希望对你有一定的参考价值。
- Linux就是环境所在的操作系统;
- Nginx则是一个「高性能的HTTP和反向代理服务器」,官网地址:http://nginx.org/;
- MySQL则是一个方便地对数据进行增删改查的数据库管理系统,官网地址:http://www.mysql.com/;
- PHP则是用来处理具体请求的脚本语言,官网地址:http://www.php.net/
运用这4件工具,最简单直接的一个用途就是搭建一个网站,例如现在我的个人网站就是在「LNMP」上面跑的
其实在nginx开始受到关注之前,「LAMP」是搭建网站比较流行的选择,即Linux,Apache,MySQL,PHP。
这里我们使用的不是LNMP的一键安装包,而是难度稍微高「一点」的逐个安装,这样做或许能让你对这个环境的细节有更好的理解,而且对各部分的定制程度可以达到最高。
- 要安装什么程序?——php,NGINX,mysql;
- 安装的这个程序,在编译时需要哪些扩展或者哪些库?(例如PHP安装OpenSSL,NGINX安装openssl);
- 下载这些扩展和库,下载完压缩包后解压缩得到这些库的代码,或者进一步地编译这些库并安装到一个指定的路径下;
- 编译程序,将需要的库、扩展添加到编译选项中,指定程序的安装路径;
- 安装完成,测试。
因此下面的内容就是上面这5步的循环。那么,开始吧。
在开始前,先安装一些通常来说应该已经有的组件,不过以防没有可以检查并安装一下。对于使用CentOS的用户在root权限下输入命令:
yum -y install gcc automake autoconf libtool make gcc-c++ glibc
安装PHP
为了开启PHP的一些功能(例如对png格式的支持等),首先需要安装一些库,CentOS命令如下:
yum -y install libmcrypt-devel mhash-devel libxslt-devel \\ libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel \\ zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel \\ ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel \\ krb5 krb5-devel libidn libidn-devel openssl openssl-devel
#错误:
yum [Errno 256] No more mirrors to try 解决方法
- 输入下面的命令即可解决问题:
- yum clean all
库已经安装好了,要注意的是在编译PHP时可能会说缺少其中的几个库,到时候请各位在百度(或者谷歌)搜一下这个库的官网,使用wget下载然后解压然后安装到你指定的一个目录,最后在编译PHP时指定这个库安装后的路径即可。为了方便演示,接下来碰到这个问题时,我默认使用以下的几个路径:
所有下载的压缩包放在「/home/download/」这个文件夹下;
所有的压缩包解压后的路径也是「/home/download/」,即如果压缩包名字是「openssl-1.0.1e.tar.gz」,那么解压后「/home/download/」下会有一个名字为「openssl-1.0.1e」的文件夹;
所有的库安装路径都是「/home/reetsee/environment/lib/」,指定安装路径的方法下面会有。
要注意的是:如果你也使用「/home/xxx/…」 这样的格式,最好保证这个「xxx」不是用户名,或者说「/home/xxx」不是用户目录。比较好的做法是你在/home下创建一个目录并使用这个目 录,例如在/home下使用mkdir xxx。具体原因会在Nginx的安装部分会提到403 Forbidden的时候讲解。
现在可以开始尝试安装PHP了,首先我下载了PHP 5.4.29,不下载最新版的原因是我担心它和某些库会有兼容性问题(但我没有查证过这种问题是否存在)。在命令行下我先把当前目录切换到「/home/download/」,然后输入下面的命令进行下载:
wget http://cn2.php.net/get/php-5.4.29.tar.gz/from/this/mirror
下载后执行解压操作,并切换到PHP的代码目录:
tar zxvf mirror
cd php-5.4.29
执行以下命令对PHP的安装进行设置:
./configure --prefix=/home/reetsee/environment/php --enable-fpm --with-mcrypt \\ --enable-mbstring --disable-pdo --with-curl --disable-debug --disable-rpath \\ --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets \\ --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex \\ --with-mhash --enable-zip --with-pcre-regex --with-mysql --with-mysqli \\ --with-gd --with-jpeg-dir --with-openssl
对上面的命令作一下简单的说明:
从总体来看就是设置安装的PHP需要或不需要哪些功能,安装目录是什么, 需要哪些库 –prefix=/home/reetsee/environment/php :把PHP安装在「/home/reetsee/environment/php」目录下 –enable-fpm :为了让Nginx和PHP能够互相「交谈」,需要一个叫做FastCGI的工具,因此PHP需要使用PHP-FPM来管理FastCGI。 –with-openssl :安装OpenSSL库 其它的「–with-xxx」即需要xxx库,「–enable-yyy」即开启yyy的支持,「–disable-zzz」即禁用zzz。
在这一步,Ubuntu或者CentOS的用户十有八九会出现类似 「configure: error: mcrypt.h not found. Please reinstall libmcrypt.」的问题,这是因为缺少了mcrypt这个库(对于Ubuntu用户缺少的可能是其它库),那么接下来就把它下载并安装。
下载并安装缺失的库——以mcrypt为例:
在搜索引擎得知mcrypt的官网,进入源码下载的页面,复制「libmcrypt-2.5.7.tar.gz」的下载地址,切换到目录「/home/reetsee/download/」执行下载并安装的操作:
wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz tar zxvf libmcrypt-2.5.7.tar.gz cd libmcrypt-2.5.7 ./configure --prefix=/home/reetsee/environment/lib/mcrypt make && make install
这样就把mcrypt安装到「/home/reetsee/environment/lib/mcrypt」下了
在PHP的源码目录进行「./configure …」时,将原本的「–with-mcrypt」更改为「–with-mcrypt=/home/reetsee/environment/lib/mcrypt」,粗体部分就是你安装mcrypt的目录
———— mcrypt安装结束 ————
回到PHP源码的目录重新configure,这次输入的命令要将mcrypt的安装路径添加进去,具体命令变为:
./configure --prefix=/home/reetsee/environment/php --enable-fpm --with-mcrypt=/home/reetsee/environment/lib/mcrypt \\ --enable-mbstring --disable-pdo --with-curl --disable-debug --disable-rpath \\ --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets \\ --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex \\ --with-mhash --enable-zip --with-pcre-regex --with-mysql --with-mysqli \\ --with-gd --with-jpeg-dir --with-openssl
最后配置成功会出现「Thank you for using PHP.」
+--------------------------------------------------------------------+ | License: | | This software is subject to the PHP License, available in this | | distribution in the file LICENSE. By continuing this installation | | process, you are bound by the terms of this license agreement. | | If you do not agree with the terms of this license, you must abort | | the installation process at this point. | +--------------------------------------------------------------------+ Thank you for using PHP. config.status: creating php5.spec config.status: creating main/build-defs.h config.status: creating scripts/phpize config.status: creating scripts/man1/phpize.1 config.status: creating scripts/php-config config.status: creating scripts/man1/php-config.1 config.status: creating sapi/cli/php.1 config.status: creating sapi/fpm/php-fpm.conf config.status: creating sapi/fpm/init.d.php-fpm config.status: creating sapi/fpm/php-fpm.service config.status: creating sapi/fpm/php-fpm.8 config.status: creating sapi/fpm/status.html config.status: creating sapi/cgi/php-cgi.1 config.status: creating ext/phar/phar.1 config.status: creating ext/phar/phar.phar.1 config.status: creating main/php_config.h config.status: executing default commands
如果你是用Ubuntu,会遇到很多编译依赖问题,例如上面的mcrypt的缺失,可以参考这篇博客:http://www.cnblogs.com/alexqdh/archive/2012/11/20/2776017.html
配置完就输入以下命令进行安装:
make && make install
安装需要一段时间,可以喝杯茶~
安装完后还有一点收尾工作,首先是配置php-fpm,首先是切换到php的安装目录下的etc文件夹:
cd /home/reetsee/environment/php/etc/
然后执行下面的命令:
cp php-fpm.conf.default php-fpm.conf
再对php-fpm.conf的内容进行修改,将「user = nobody」,「group = nobody」分别改为「user = www-data」,「group = www-data」,即如下图所示:
保存后需要保证名为「www-data」的用户以及组存在,因此在命令行执行下列语句:
groupadd www-data
useradd -g www-data www-data
这样PHP的安装配置工作就大体完成了 max php环境搭建