运城网站建设-运城app开发-运城微信公众平台开发

运城网站建设
网站首页 > 新闻资讯 > 网站建设

从1搭建LNMP环境

「LNMP」即Linux,Nginx,MySQL,PHP。我个人的理解是:

  • Linux就是环境所在的操作系统;

  • Nginx则是一个「高性能的HTTP和反向代理服务器」,官网地址:http://nginx.org/;

  • MySQL则是一个方便地对数据进行增删改查的数据库管理系统,官网地址:http://www.mysql.com/;

  • PHP则是用来处理具体请求的脚本语言,官网地址:http://www.php.net/。

运用这4件工具,最简单直接的一个用途就是搭建一个网站,例如现在我的个人网站就是在「LNMP」上面跑的,然后博客(我使用WordPress)、新闻等其它内容也可以放到网站中。

其实在Nginx开始受到关注之前,「LAMP」是搭建网站比较流行的选择,即LinuxApacheMySQLPHP

本文的目的就是介绍一下如何从零开始搭建一个LNMP环境,然后初步让一个网页能够通过浏览器走HTTP请求访问。

这里我们使用的不是LNMP的一键安装包,而是难度稍微高「一点」的逐个安装,这样做或许能让你对这个环境的细节有更好的理解,而且对各部分的定制程度可以达到最高。

1 开始前的一些Tips

下面给出的操作步骤对于Linux来说是通用的,缺什么就安装什么,只是不同的Linux所输入的内容可能有些不同而已。

我是直接在阿里云ECS上面操作的,Linux的版本是CentOS 6.3 64位,各位可以直接在阿里云的首页点击右上角的「免费试用」,选择CentOS 6.3 64位系统,然后通过SSH直接登陆到主机进行操作,这样是最方便的。

另外一个选择是自己安装一个Linux然后在上面进行操作,这种方法也可以。现在我也下载了一个CentOS 6.5 64位把下面的步骤走一遍。在自己的系统上操作有个麻烦的地方:

  1. 如果你把系统搞坏了那么恢复起来可能要费点事,直接重装也需要一些时间,哪怕是在虚拟机上面操作,但是ECS上面直接点击重置就可以了;

  2. 在下载一些系统的依赖包时(例如使用wget命令下载MySQL)如果你的网速比较慢那么下载会比较久,但是阿里云ECS下载这些资源的速度嗖嗖地,非常快就下载完了。

有不少人会使用Ubuntu,我之前也使用过Ubuntu搭建LNMP,最终搭建成功了,只是安装依赖时有一些些麻烦,下面会讲到。

在文中我会在必要地方添加图片,但是会以文字为主,因为实在没有太多图片好添加。其实下面的所有内容都是按照这个这几个流程写的:

  1. 要安装什么程序?——PHP,NGINX,MYSQL;

  2. 安装的这个程序,在编译时需要哪些扩展或者哪些库?(例如PHP安装OpenSSL,NGINX安装openssl);

  3. 下载这些扩展和库,下载完压缩包后解压缩得到这些库的代码,或者进一步地编译这些库并安装到一个指定的路径下;

  4. 编译程序,将需要的库、扩展添加到编译选项中,指定程序的安装路径;

  5. 安装完成,测试。

因此下面的内容就是上面这5步的循环。那么,开始吧。

2 安装Linux

首先最基本的自然是你需要安装了Linux的操作系统,如果你只是尝试一下,可以安装在虚拟机里面,或者如果你已经在使用阿里云ECS那么系统就已经安装好了。

为了重新走一次所有的步骤, 我下载并在虚拟机安装了CentOS 6.5 64位的系统。当然你也可以使用其它的Linux发行版例如Ubuntu等,在接下来要输入命令的地方不同的Linux按需进行修改即可。

在开始前,先安装一些通常来说应该已经有的组件,不过以防没有可以检查并安装一下。对于使用CentOS的用户在root权限下输入命令:

1yum -y install gcc automake autoconf libtool make gcc-c++ glibc

对于使用Ubuntu的用户,如果没记错则是将「yum -y install」替换为「sudo apt-get install」就可以了,原则就是把上面列出来的「gcc automake autoconf libtool make gcc-c++ glibc」这几个东西安装一下。

3 安装PHP

为了开启PHP的一些功能(例如对png格式的支持等),首先需要安装一些库,CentOS命令如下:

1yum -y install libmcrypt-devel mhash-devel libxslt-devel \
2libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel \
3zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel \
4ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel \
5krb5 krb5-devel libidn libidn-devel openssl openssl-devel

Ubuntu 12.04(其它版本我没有测试过)用户在这里可以先不行动,因为我试过即便在这里使用「sudo apt-get install …」,后面在编译PHP的时候还是会提示找不到对应的库,原因可能是编译时的默认查找路径不正确。解决办法从理论上来说有2个:

  • 找到PHP编译时查找库的路径,然后修改为「sudo apt-get install …」安装后的路径;

  • 手动下载其中缺少的库,然后你自己安装到自己知道的一个目录,在编译PHP时手动指定这个库的路径(我当时用的就是这种方法,累死不偿命啊,建议能折腾的研究一下第一个方法,然后把解决方案共享出来)。

库已经安装好了,要注意的是在编译PHP时可能会说缺少其中的几个库,到时候请各位在百度(或者谷歌)搜一下这个库的官网,使用wget下载然后解压然后安装到你指定的一个目录,最后在编译PHP时指定这个库安装后的路径即可。为了方便演示,接下来碰到这个问题时,我默认使用以下的几个路径:

  • 所有下载的压缩包放在「/home/reetsee/download/」这个文件夹下;

  • 所有的压缩包解压后的路径也是「/home/reetsee/download/」,即如果压缩包名字是「openssl-1.0.1e.tar.gz」,那么解压后「/home/reetsee/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/reetsee/download/」,然后输入下面的命令进行下载:

1wget http://cn2.php.net/get/php-5.4.29.tar.gz/from/this/mirror

下载的场面大概是这样的:

下载PHP

 

 

下载后执行解压操作,并切换到PHP的代码目录:

1tar zxvf php-5.4.29.tar.gz
2cd php-5.4.29

执行以下命令对PHP的安装进行设置:

1./configure --prefix=/home/reetsee/environment/php  --enable-fpm --with-mcrypt \
2--enable-mbstring --disable-pdo --with-curl --disable-debug  --disable-rpath \
3--enable-inline-optimization --with-bz2  --with-zlib --enable-sockets \
4--enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex \
5--with-mhash --enable-zip --with-pcre-regex --with-mysql --with-mysqli \
6--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/」执行下载并安装的操作:

1wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz
2tar zxvf libmcrypt-2.5.7.tar.gz
3cd libmcrypt-2.5.7
4./configure --prefix=/home/reetsee/environment/lib/mcrypt
5make && make install

这样就把mcrypt安装到「/home/reetsee/environment/lib/mcrypt」下了。

在PHP的源码目录进行「./configure …」时,将原本的「–with-mcrypt」更改为「–with-mcrypt=/home/reetsee/environment/lib/mcrypt」,粗体部分就是你安装mcrypt的目录。

———— mcrypt安装结束 ————

回到PHP源码的目录重新configure,这次输入的命令要将mcrypt的安装路径添加进去,具体命令变为:

1./configure --prefix=/home/reetsee/environment/php  --enable-fpm --with-mcrypt=/home/reetsee/environment/lib/mcrypt \
2--enable-mbstring --disable-pdo --with-curl --disable-debug  --disable-rpath \
3--enable-inline-optimization --with-bz2  --with-zlib --enable-sockets \
4--enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex \
5--with-mhash --enable-zip --with-pcre-regex --with-mysql --with-mysqli \
6--with-gd --with-jpeg-dir --with-openssl

最后配置成功会出现「Thank you for using PHP.」,如下图:

configure_php


Powered by 山西博鳌软件开发有限公司 地址:运城郡都大厦 电话18035935052 ©2013-2016