编译安装nginx1.9.7+php7.0.0服务器环境
一直以来我都通过网上的一些材料去搭建lnmp环境,通过直接yum安装nginx mysql php等软件。
但是为了原生态的编译安装最新的软件版本,我决定自己亲手搭建lnmp环境,采用最新的nginx1.9.7
(昨天出了1.9.8)和php7来研究如何搭建起nginx最新版本和php7的环境。
一.NGINX的编译安装
编译环境
在linux使用make方式安装,需要保证linux已经具备比较OK的编译环境,例如gcc等编译工具。
一般而言,服务器提供商在安装的系统中已经默认集成了这些软件,但是为了保险起见,我们还是通过一些较为基础的方式,
把这些依赖包都跑一遍,以防在之后的编译中出差错。
| 12 | $ yum -y install gcc gcc-c++ autoconf automake libtool make cmake |
zlib: 为nginx提供gzip模块,需要zlib库支持
openssl: 为nginx提供ssl功能
pcre: 为支持地址重写rewrite功能
确保pcre已正确安装
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
在上面的基础环境安装中,我们已经yum安装了pcre,但是部分服务器上并没有pcre的安装包,
所以我们可以通过下载tar包自行编译安装pcre。
搜索pcre,进入其官网,找到最新的版本,复制tar.gz的下载连接,执行如下操作:
$ wget http://pcre/xxx/xxx/xxx最新版xxx.tar.gz
$ tar zxvf xxxx.tar.gz
$ cd xxxx
$ ./configure
$ make install
这样就可以保证安装pcre了。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
创建用来运行nginx的用户及组
我们创建一个新的用户和用户组来运行nginx,这样可以把nginx和root分开,保证nginx不具备root权限。
但是,我们并不希望nginx成为一个真实的可以登陆到远程进行操作的用户,所以,我们并不给它创建家目录,
在useradd的时候,用-M参数:
| 12 | $ groupadd nginx |
-g参数为nginx用户指定了一个组。-M参数保证其不自动生成home目录。
但通过上面的用户创建之后,nginx用户可以通过设置一个密码登陆到服务器,这个不是我们想要的,
我们禁用它的ssh登陆权限.禁止用户登陆也很方便,只需要修改配置文件中有关用户和用户组的信息即可。
| 1 | $ vi /etc/passwd |
找到nginx,将后面的/bin/bash改为/sbin/nologin即可。
OK,用户处理完毕。
编译安装Nginx
前面讲了这么多,都还没有说到重点,接下来我们来编译安装nginx。先进入nginx的官方网站,
找到最新版本的tar.gz包的链接,复制链接,然后执行下面的动作:
$ wget http://nginx.org/download/nginx-1.8.1.tar.gz |
接下来我们需要执行./configure,不同的开发者有不同的习惯,对于刚入门的用户而言,不是很喜欢麻烦的去进行配置,
总是希望默认就是最好的,但是实际情况恰好相反,走上linux的道,就请热爱折腾,既然选择编译安装,就请热爱make。
我希望把软件安装在/user/local下面,一个软件一个目录,在以后卸载的时候也比较方便清理。
软件的目录也按照linux的目录形式,用conf、etc、sbin、run等进行归类管理,所以,我最终的./configure配置如下:
$ ./configure |
-------------------
其他编译选择:
--prefix=/etc/nginx |
-----------------------------------------------------------------------------------
末尾三个是禁用nginx作为邮件代理服务器,我一般只用服务器作为网站或数据库的服务器,所以这里把它们禁用掉,
你如果想搭建的是邮件服务器,那么就应该去阅读nginx搭建邮件服务器的教程。
你可以认真阅读一下./configure的结果,看看有没有报错,或者加载的模块是不是都齐全,如果一切OK,
那么往下继续,如果感觉不对,可以用./configure --help认真阅读一下。
| 12 | $ make |
make的地方有一个小技巧,如果服务器是双核,可以通过-j2来指定用双核进行编译,-j4代表4核编译。
安装到这里就结束了,但是,安装完可没完事儿,nginx还没有运行起来,你可以先去看看安装的结果,并且运行nginx服务器:
$ cd /usr/local/nginx |
这样就运行起来了,访问你的服务器ip,看看能否看到ngin的欢迎页面吧。(不要让其他软件占用80端口哦)
默认情况下网页文件放在/usr/local/nginx/html下,不符合我们的使用习惯,这个需要修改nginx的配置文件来修改,
不过即使不修改,我们也是可以正常使用的,我们就不详细解释nginx的配置了。
+++++++++++++
报错解决
+++++++++++++
[root@localhost sbin]# ./nginx
nginx: [emerg] mkdir() "/var/cache/nginx/client_temp" failed (2: No such file or directory)
[root@localhost sbin]# mkdir -p /var/cache/nginx/client_temp
nginx服务的载入
但是,make编译安装的软件,可不像yum安装的服务,我们熟悉的service命令并不起效,不然你用service nginx restart试试看。
这是因为service调用/etc/ini.d/目录下的程序完成,而该目录下并不存在nginx这个程序。那么这个时候怎么重启nginx呢?如下操作:
| 12 | $cp |
这个操作可以重新加载nginx的配置文件,相当于重启(当配置文件出错时,不会重启)。
如果一定要重启整个服务,那只能通过杀死nginx进程,然后在运行程序了。
不过为了使用我们熟悉的service操作,这里提供一个程序,放到/etc/ini.d/目录下,并执行:
++++++++++++++++++++++++++
官方自启动脚本
++++++++++++++++++++++++++
#!/bin/sh |


