如何搭建LNMP环境(Linux+Nginx+MySql+Php)来运行wordpress

Android技术篇 尼古拉斯.赵四 9986℃ 0评论

一、前言

今天是周六,积累了很多天的内容都要在今天来释放了,因为最近想弄一个自己的主页,查看网上之后,都说wordpress很不错,他是一个开源的后台程序,可以用来搭建自己的博客,论坛等功能。但是有一个蛋疼的地方,他是php写的,之前只弄过JavaWeb相关的后台程序,php不太熟呢,以前也是搭建过Linux+Apache+Tomcat+JavaWeb+MySql,那么这次也正好是一个机会学习一下如何搭建后台PHP系统,这里也是网上比较流行的后台系统组合:Linux+Nginx+MySql+Php。下面我们就先来看看这个如何搭建,以及搭建完成之后,如何把wordpress程序部署到服务器上,然后运行。

二、工具

我们在搭建系统的时候可以选择在本地,也可以选择在服务器上弄,因为我之前买了一个服务器,所以就没有在本地折腾了,就直接在服务器上开搞了。本地的话其实操作方便点。如果在服务器上直接操刀的话,还需要借助两个工具:

SecureCRT,SecureFX。这两个工具主要用于和服务器进行交互的,其中SecureCRT主要是连接服务器终端,执行命令的,SecureFX主要是连接服务端进行文件传输的。但是可惜的是,这两个软件是要收费的,所以需要去弄一个破解版的,其实这个网上有很多了,这里还是贴出来我用的吧:http://pan.baidu.com/s/1ge1JY3h

安装了这两个软件之后,我们可以进行连接服务器了,如下图:

那么接下来我们就来一一安装所需要的软件(这里统一将所有的软件包放到服务器上的/usr/local/work目录下面,其中work目录是我新建的,你们可以随意起名称,然后将所有的软件都安装在/usr/local/XXX目录中,XXX代表软件目录):

三、安装Nginx

1、安装openssl软件

下载地址,后面给出

使用SecureFX软件将下载下来的tar.gz包传到服务器上的/usr/local/work下面


这时候使用SecureCRT输入命令行进行解压tar.gz包:

>cd /usr/local/work

>tar -zxvf openssl-1.0.2a.tar.gz

解压完成之后,进入解压目录,进行安装:

>cd openssl-1.0.2a

>./config –prefix=/usr/local/openssl –openssldir=/usr/local/openssl/conf

这里./config是设置安装前的配置信息,后面都是用这个命令的,其中:–prefix是用来配置安装目录的

运行之后,在执行编译和安装操作

>make && make install

这里make是编译,make install是安装,我们这里都是用源码来安装软件的,所以需要释放源码,编译,安装这三个步骤。

安装完成之后,需要检验一下安装释放成功:

>cd /usr/local/openssl/bin

>./openssl version -a 


注意,Linux中一般安装软件之后,都会在指定目录下的bin或者sbin等目录下有对应的执行命令,一定要注意前面有一个点号,在运行命令的时候。

2、安装pcre软件

下载地址,后面给出

下载完成之后,使用SecureFX将文件传递到服务端的:/usr/local/work目录下

这时候使用SecureCRT输入命令行进行解压tar.gz包:

>cd /usr/local/work

>tar -zxvf pcre-8.34.tar.gz

解压完成之后,进入解压目录,进行安装:

>cd pcre-8.34

>./configure –prefix=/usr/local/pcre/

>make && make install

3、安装zlib软件

下载地址,后面给出

下载完成之后,使用SecureFX将文件传递到服务端的:/usr/local/work目录下

这时候使用SecureCRT输入命令行解压tar.gz包:

> /usr/local/work

>tar -zxvf zlib-1.2.8.tar.gz

解压完成之后,进入解压目录,进行安装:

>cd zlib-1.2.8

>./configure –prefix=/usr/local/zlib/

>make && make install

4、安装nginx软件

上面三个软件其实都是为nginx安装做好准备条件的,所以上面的三个软件一定要安装成功,不然下面的安装就不能进行了。

下载地址,后面给出

下载完成之后,使用SecureFX将文件传递到服务端的:/usr/local/work目录下

知识后使用SecureCRT输入命令行解压tar.gz包:

>/usr/local/work

>tar -zxvf nginx-1.8.0.tar.gz

解压完成之后,进入解压目录,进行安装:

>cd nginx-1.8.0.tar.gz

这里还需要建立一个用户组和用户:

>groupadd jiangwei
>useradd -g jiangwei jiangwei

>./configure –user=jiangwei –group=jiangwei –prefix=/usr/local/nginx –with-http_ssl_module –with-openssl=/usr/local/openssl –with-pcre=/usr/local/pcre –with-zlib=/usr/local/zlib –with-http_stub_status_module –with-threads

这里我们看到:–with-openssl,–with-pcre,–with-zlib 这三个参数是依赖关系,指定的是上面三个软件安装之后的目录,编译nginx的时候,需要这三个依赖,我们运行,出现了如下错误:

/bin/sh: ./configure: No such file or directory
make[1]: *** [/usr/local/services/lib/pcre/Makefile] Error 127

说找不到pcre的.configure文件,然后我仔细查看错误信息,之后发现./configure 没有找到,这时候我们意识到了,nginx在安装的时候需要自己从新编译pcre,所以这里–with-pcre 应该指定的是pcre的源码目录,为了防止后面两个依赖包出现类似错误,我们都将使用源码目录:

./configure –user=www –group=www –prefix=/usr/local/nginx –with-http_ssl_module –with-openssl=/usr/local/work/openssl-1.0.2a –with-pcre=/usr/local/work/pcre-8.34 –with-zlib=/usr/local/work/zlib-1.2.8 –with-http_stub_status_module –with-threads

再次运行,OK了,然后在编译安装:

>make && make install

好了,这里nginx就安装成功了,这里遇到问题需要注意的是,nginx编译安装的时候会自己去编译依赖包,所以需要指定依赖包的源码目录,不是安装目录,这里我们发现,上面三个软件其实只要解压即可,都不需要安装了。

安装之后,我们可以检验一下:

>cd /usr/local/nginx/sbin

>./nginx -V

运行结果:


当然nginx作为一个http服务器,他肯定有相应的配置信息,那么下面我们就来看看配置信息文件:

/usr/local/nginx/conf/nginx.conf


我们这里主要看两个信息,

1> 一个是端口和host

这里我们将端口改成8888,因为之前弄的是apache+tomcat,80这个默认端口被占用了,现在又不想全部使用nginx,所以只好想用8888这个端口来操作了。

2>一个就是后台程序的根目录和首页信息,这个和当初配置tomcat都是类似的。

其中location是表示后台程序的配置信息:

root:表示项目的路径

index:表示项目的默认首页

include:表示可以包含的其他配置信息

看完配置信息之后,我们就可以运行我们的nginx了,进入sbin目录下,运行nginx命令即可

>cd /usr/local/nginx/sbin

>./nginx

运行完毕,这时候我们可以使用ps命令查看nginx是否启动成功:

>ps -ef |grep nginx


这里看到有两个进程,一个是master,一个是worker,我们后面想停止nginx的话,就是用:

kill -QUIT master进程号

来停止nginx的。

nginx运行成功之后,我们可以输入网址:http://www.wjdiankong.cn:8888

其中www.wjdiankong.cn是我的域名:


好了,到此,nginx就配置成功啦啦啦。

四、安装PHP

下面我们还需要在安装php

1、安装libmcrypt

下载地址,后面给出

下载完成之后,使用SecureFX传输到服务器上的:/usr/local/work 目录中

然后进行解压:

>cd /usr/local/work

>tar -zxvf libmcrypt-2.5.8.tar.gz

解压完成之后,进入目录进行安装:

>cd /usr/local/work/libmcrypt-2.5.8

>./configure –prefix=/usr/local/libmcrypt

>make && make install

2、安装mhash

下载地址,后面给出

下载完成之后,使用SecureFX传输到服务器上的:/usr/local/work 目录中

然后进行解压:

>cd /usr/local/work

>tar -zxvf mhash-0.9.9.9.tar.gz

解压完成之后,进入目录进行安装:

>cd /usr/local/work/mhash-0.9.9.9

>./configure –prefix=/usr/local/mhash

>make && make install

3、安装libxml2

下载地址,后面给出

下载完成之后,使用SecureFX传输到服务器上的:/usr/local/work 目录中

然后进行解压:

>cd /usr/local/work

>tar -zxvf libxml2-2.6.32.tar.gz

解压完成之后,进入目录进行安装:

>cd /usr/local/work/libxml2-2.6.32

>./configure –prefix=/usr/local/libxml2

>make && make install

4、安装php5

上面三个软件安装完成之后,下面就来安装一下php了,

下载地址,后面给出

下载完成之后,使用SecureFX传输到服务器上的:/usr/local/work 目录中

然后进行解压:

>cd /usr/local/work

>tar -zxvf php-5.5.33.tar.gz

解压完成之后,进入目录进行安装:

>cd /usr/local/work/php-5.5.33

>./configure –prefix=/usr/local/php –with-mysql=/usr –enable-fpm –enable-fastcgi –with-libxml-dir=/usr/local/libxml2 –disable-fileinfo –with-zlib-dir=/usr/local/work/zlib-1.2.8

这里的配置信息还是需要解释一下的:

1>、–with-mysql

这个一定要带上,因为后面php需要扩展mysql,因为wordpress程序需要,如果没有的话,后面会出现这样的错误:

所以,我当时忘记加上这个参数,结果从新安装的,网上有人说可以后续添加扩展,但是我尝试了好几次失败了,最后无奈从新安装php的。

2>、–enable-fpm和–enable-fastcgi

这个参数也很重要,如果没有开启的话,后面nginx是不能搭建php的,访问也是失败的,具体fpm是干啥的,下面就简单解释一下说白了,就是nginx解析php的一个中间程序。

Nginx是个轻量级的HTTP server,必须借助第三方的FastCGI处理器才可以对PHP进行解析,因此Nginx+spawn-fcgi的组合也可以实现对PHP的解析,这里不过多讲述。PHP-FPM也是一个第三方的FastCGI进程管理器,它是作为PHP的一个补丁来开发的,在安装的时候也需要和PHP源码一起编译,也就是说PHP-FPM被编译到PHP内核中,因此在处理性能方面更加优秀;同时它在处理高并发方面也比spawn-fcgi引擎好很多,因此,推荐Nginx+PHP/PHP-FPM这个组合对PHP进行解析。

3>、–disable-fileinfo

这个参数也是很重要的,如果没有添加的话,我们在编译的时候会出现如下错误:

virtual memory exhausted Cannot allocate memory

make:*** [ext/fileinfo/libmagic/apprentice.lo] Error 1

编译这个fileinfo扩展至少要700M内存。这个也算是php的一个bug了,就是你在编译的时候,感觉php会提示内存不足的情况,官方也给出了详细解释:https://bugs.php.net/bug.php?id=48809

4>、–with-libxml-dir

这个是依赖libxml安装包目录

5>、–with-zlib-dir

这个是依赖zlib的源码包目录

好了,我们开始执行命令,但是事情总不是那么顺利的,我们还是遇到了错误:

configure: error: Cannot find MySQL header files under yes.Note that the MySQL client library is not bundled anymore.

这是由于安装mysql时没有安装mysql头文件,或者是路径指定不正确,php找不到mysql的头文件引起的错误提示。
解决方法:
1>查看你的系统有没有安装mysql header
find / -name mysql.h
如果有。请指定–with-mysql=/跟你的正常路径。
如果没有。请看下一步。
2>安装mysqlicient
apt-get install libmysqlclient15-dev

这时候我们可以进行编译安装了:

>make && make install

到这里我们的php就安装完成了,但是我们还需要做两件事才能运行php

1、拷贝php.ini配置文件

我们需要手动将php的源码目录中的php.ini-production拷贝到php的安装目录lib下,并且修改名称为:php.ini

>cd /usr/local/work/php-5.5.33

>cp php.ini-production /usr/local/php/lib/php.ini

这个配置文件很重要,后面就是用来配置php的各种参数信息的

2、修改php-fpm-default.conf文件名

在php的安装目录下的etc目录中,将php-fpm-default.conf改成php-fpm.conf


上面的工作都做好了,这时候我们可以启动php了,进入sbin目录下,执行php-fpm命令即可

>cd /usr/local/php/sbin

>./php-fpm

运行完之后,我们也是通过ps命令查看是否启动成功:


这里我们看到了有一个master进程,启动成功了,后面在停止php的时候我们也是用同样命令停止:

kill -QUIT php进程号

五、运行

上面安装了nginx+php之后,下面我们就将他们两个关联起来,然后用一个测试的php页面来跑一下:

首先我们还是需要打开nginx的配置文件:


把这部分注释打开,参数信息如下:

root:php的工程目录

fastcgi_pass:fgi的地址,就是我们的php-fpm进程的地址,我们可以查看一下php-fpm.conf文件:


fastcig_index:php项目的默认首页

include:包含的配置信息文件

这时候我们用一个php测试页面来跑一下:

在project中新建一个test.php文件:

>cd /usr/local/nginx/project

>echo “<?php phpinfo();” > test.php


这时候,我们访问一下:http://www.wjdiankong.cn:8888/test.php


这里我们看到了我们安装的php信息,都可以看到,而且这个页面我们最好在每个项目中都保留一下,后面我们在修改php的配置信息的时候,可以从这里来查看一下,后面会使用到这个功能。

六、安装wordpress

好了,到这里我们就搭建好了LNMP后台了,因为本生买了服务器,可以选择Linux系统,所以这里就不会再介绍如何安装Linux系统了,因为之前在弄Apache+tomcat+JavaWeb+mysql的时候,服务器上已经安装了mysql了,所以这里也没有介绍了,安装mysql还是很简单的。

那么下面我们就来搭建一下wordpress程序了,我们可以去wordpress官网去下载这个程序,后面我会给出下载地址的,

使用SecureFX将程序上传到:/usr/local/nginx/project中

解压:

>cd /usr/local/nginx/project

>tar -zxvf wordpress-4.4.2-zh_CN.tar.gz

这时候,我们就可以直接访问:http://www.wjdiankong.cn:8888/wordpress


出现了wordpress的安装界面,这个安装也是很简单的,直接点击就可以了,但是这里需要注意的一个问题就是:

我们需要手动的去创建一个数据库:wordpress,不然后面wordpress程序会提示连接不到这个数据库。

这里我们可以使用navicat客户端快速的创建一个数据库即可。当然这里的数据库名称和下面图片中的数据库名称要一致呀,然后就是连接mysql的用户名和密码了


wordpress程序会连接这个数据库,创建对应的表。我们写的文章,用户信息都会存在这个数据库中的对应表中。

当我们设置完成之后,就可以进入wordpress系统了:


这里看到这个页面还是很兴奋的,当然我们第一步是要定制自己喜欢的样式了,wordpress还是很强大的,可以选择主题和各种插件,具体什么功能网上都是有的,这里就不做太多的解释了:

下面在说一下我在使用的过程中遇到的两个问题:

1、wordpress搭建成功登陆出现403和404
403的问题:

我直接修改了整个wordpress项目的权限:

chmod 777 -R wordpress

404的问题:
修改nginx.conf配置文件信息,将下面的代码粘贴进去:
location / {
try_files $uri $uri/ /index.php?$args;
}
rewrite /wp-admin$ $scheme://$host$uri/ permanent;

2、在写大文本的博客的时候,出现内存不足

Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 72 bytes)
网上有很多人说修改php.ini中的memory_limit参数,但是我发现不管怎么修改 php.ini 里的memory_limit 都无法修改成功,phpinfo() 里显示还是原来的数值。今天早上随手vim一下 php-fpm.conf 文件,发现 php_admin_value[memory_limit] = 64M,修改为128M,从新运行php-fpm程序,修改成功!可以使用phpinfo函数查看php配置信息。

所有的安装软件下载地址:http://download.csdn.net/detail/jiangwei0910410003/9466460


七、总结

好了,到这里,我们就说完了如何搭建LNMP环境来运行wordpress程序,开发一个属于自己的网站,成为一名小小的站长,因为这篇文章是属于工具类的文章,所以各个人的环境不一样,所以遇到的问题肯定也是不一样的,所以遇到什么问题最后自己去搜索解决即可。最后在给出我的网站:http://www.wjdiankong.cn:8888/blog

我的个人主页也顺便搭建完成:http://www.wjdiankong.cn

首页用的是html5+css3,后面会写一些关于前端技术开发的文章

 

关注微信公众号,最新Android技术实时推送

 

 

转载请注明:尼古拉斯.赵四 » 如何搭建LNMP环境(Linux+Nginx+MySql+Php)来运行wordpress

喜欢 (3)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址