Untitled
.note-content {font-family: 'Helvetica Neue', Arial, 'Hiragino Sans GB', STHeiti, 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, Song, sans-serif;}

前提:假设阅读本文的读者已经拥有基本的linux使用技巧,能够解决系统安装问题,以及软件安装的技巧。

注意:本文所涉及的主要安装包(需要下载使用的)安装包,在本文最后会给出百度云盘链接,需要使用的,可以自由下载

建议:建议先通篇阅读本文,了解Nginx 各组件之间的关系后再进行安装,做到胸有大局,然后进行进一步的操作。

安装所在的机器配置:

linux 内核版本:2.6.32

linux 发行版本:CentOS 6.4 64位

系统内存: 1G。

虚拟机的话建议使用2G。编译会快点。

百度云盘:链接: http://pan.baidu.com/s/1o8SyQ2e 密码: i6hk

0、 添加软件运行所需的用户

groupadd nginx
useradd -g nginx nginx
groupadd mysql
useradd -g mysql mysql

1、安装gcc 和c++ 编译器。

yum -y install gcc gcc-c++

2、了解依赖关系

nginx 需要第三方库的支持:

gzip 用来压缩网页。gzip 需要 zlib库。

rewrite 用来实现网页重定向的功能。 rewrite 需要 pcre(Perl Compatible Regular Expression)库。

ssl 是一个加密库。如https.ssl 功能需要 openssl

3、解决nginx依赖关系

yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel

那么既然已经安装了 zlib openssl pcere 包为什么还要安装 zlib-devel 等包呢?

devel 包主要是供开发使用的,包里面至少包括以下2个东西。


1、头文件


2、链接库


以zlib 和 zlib-devel 为例.

如果你安装的是基于zlib 开发的程序,只需要安装zlib就行。

如果你要你变使用了glib的源代码,则需要使用glib-devel。

本文中我们要先安装zlib,由于不确定我们机器里面有没有这个库,所以就一并将zlib-devel安装上了。

由于yum会自动解决依赖,所以即使没有安装-devel,应该也会自己安装。作为了解原理,建议大家还是手动安装。

4、安装nginx

mkdir -p  /usr/local/webserver/source 

cd /usr/local/webserver/source

从文后的百度云盘中下载nginx-1.8.0.tar.gz 文件。

tar -xf nginx-1.8.0.tar.gz //解压文件

cd nginx-1.8.0

./configure --help //查看编译选项

4.1 配置nginx

./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module 

4.2 安装nginx

make && make install

/usr/local/webserver/nginx/sbin/nginx -V //查看nginx的版本信息

/usr/local/webserver/nginx/sbin/nginx -h //查看nginx的帮助信息

/usr/local/webserver/nginx/sbin/nginx //启动nginx

打开浏览器,输入linux的ip。可以看到欢迎的信息。

/usr/local/webserver/nginx/sbin/nginx -s stop //关闭nginx

/usr/local/webserver/nginx/sbin/nginx //重新启动,以便后续操作。

5、安装mysql

5.1、 解决mysql的安装依赖

cmake 用来编译mysql,所以要先下载cmake。


ncursesncurses-devel 是mysql的字符终端处理库。

yum -y install cmake ncurses ncurses-devel

5.2 、 安装mysql

下载文后网盘中的mysql-5.6.24.tar.gz 文件至 /usr/local/webserver/source

tar -xf mysql-5.6.24.tar.gz // 解压mysql

cd /usr/local/webserver/source/mysql-5.6.24

查看编译选项:http://dev.mysql.com/doc/refman/5.5/en/source-configuration-options.html

5.3、编译配置mysql

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/webserver/mysql \
-DMYSQL_DATADIR=/usr/local/webserver/mysql/data \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci

以下为编译选项解释

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/webserver/mysql \ //mysql的安装路径
-DMYSQL_DATADIR=/usr/local/webserver/mysql/data \ //mysql的表数据存储路径
-DWITH_MYISAM_STORAGE_ENGINE=1 \ //装载MYISAM存储引擎。注:mysql的存储引擎是插件化的。需要按需加载。
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ //装载INNODB存储引擎。
-DWITH_MEMORY_STORAGE_ENGINE=1 \ // 装载 memory引擎,该引擎并不常用。
-DWITH_READLINE=1 \ // 不知道这是什么意思。
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \ //mysql 的sock文件路径。
-DMYSQL_TCP_PORT=3306 \ //mysql的监听端口,默认3306.
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \ //默认的字符集为utf8
-DDEFAULT_COLLATION=utf8_general_ci

执行编译: make && make install

我这里用单核的服务器使用了整整20分钟,虚拟机可能要30分钟以上。耐心等待,不要执行其他操作,此时cpu处于99%的满载状态。

5、4 创建mysql自带的数据库

/usr/local/webserver/mysql/scripts                  

./scripts/mysql_install_db --basedir=/usr/local/webserver/mysql --datadir=/usr/local/webserver/mysql/data --user=mysql

5、5 启动mysql

设置开机启动:
/usr/local/webserver/mysql/support-files
cp ./mysql.server /etc/init.d/mysql //复制到系统自启动目录。
chkconfig mysql on //设置开机启动
service mysql start //启动MySQL
PATH=/usr/local/webserver/mysql/bin/:$PATH //将mysql命令设置到全局命令路径中
export PATH //将PATH设置为全局变量
source /etc/profile //重新载入系统配置

5.6 测试mysql

mysql -u root                                   
set password = password('密码') //设置密码
exit //退出
//之后的测试就不讲了。

6、安装php

6.1、解决环境依赖

yum -y install libxml2 libxml2-devel
yum -y install libcurl libcurl-devel

6.2、 安装php

下载文后所示网盘中的 php-5.6.24.tar.gz 文件至/usr/local/webserver/source

cd /usr/local/webserver/source

tar -xf php-5.6.24.tar.gz

cd /usr/local/webserver/source/php-5.6.24

./configure --help //查看下配置项

配置项如下:

./configure \
--prefix=/usr/local/webserver/php \
--enable-fpm \
--with-config-file-path=/usr/local/webserver/php/conf \
--with-zlib \
--with-curl \
--enable-mysqlnd \
--enable-pdo \
--enable-mbstring \
--with-mysql=/usr/local/webserver/mysql \
--with-pdo-mysql=mysqlnd \
--with-openssl-dir \
--disable-fileinfo

make && make install

6.3、配置php

cd /usr/local/webserver/php

mkdir conf

/usr/local/webserver/source/php-5.6.24/php.ini-development ./conf/php.ini //复制配置

cd /usr/local/webserver/php/etc

mv php-fpm.conf.default php-fpm.conf

ls /usr/local/webserver/source/php-5.6.24/sapi/fpm/php-fpm /usr/local/bin/
php-fpm -h //查看php的配置信息
php-fpm -m //查看加载了那些模块

7、关联php 与nginx

修改nginx配置,使其支持php后缀的文件。

//约52行  65行。

location / {
root html;
index index.php index.html index.htm;
}

location ~* \.php$ {
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}

修改php的配置,修改时间选项。

//约925行
date.timezone = Asia/Shanghai //你不在上海也填上海。这个指的是时区。

8、将执行命令放置进/usr/local/bin 下。变成快捷命令

ln -s /usr/local/webserver/nginx/sbin/nginx /usr/local/bin/   

ln -s /usr/local/webserver/php/sbin/php-fpm /usr/local/bin/

cd /

执行 nginx

执行 php-fpm

cd /usr/local/webserver/nginx/html/

mv index.html index.php

写一个phpinfo(); 的函数。去浏览器看下效果。

9、备注:

以上,已经将nginx 、php 、mysql 三者结合在了一起。如果你已经按照上面的提示安装成功,那么恭喜你,你运气真好。实践的过程中,可能会遇到各种各样的报错,一定要详细的看报错的信息,根据报错的信息去安装相应的组件。每个人的机器不同,可能报错的类别也不一样,遇到报错的欢迎大家到评论区提问,共同研讨,共同提高。

这篇文章的目的在于让大家了解到nginx 、php 、mysql三者之间的组合关系。本文中没有安装GD库,Reids 和 Memcache 等库。这留在后续的文章中逐步的去讲。如何让php通过打补丁(phpize)的方式将未加的组件编译进来。

Linux 下Nginx编译安装的更多相关文章

  1. Linux下nginx编译安装教程和编译参数详解

    这篇文章主要介绍了Linux下nginx编译安装教程和编译参数详解,需要的朋友可以参考下 一.必要软件准备1.安装pcre 为了支持rewrite功能,我们需要安装pcre 复制代码代码如下: # y ...

  2. centOS linux 下nginx编译安装详解

    Nginx的官方网站是 www.nginx.org   Nginx的下载地址是:http://nginx.org/en/download.html   由 于官网的设计非常简洁不大气不上档次,所以我们 ...

  3. linux下nginx编译安装、版本信息修改

    环境 centos 7 安装依赖包 yum install -y gcc gcc-c++ glibc glibc-devel pcre pcre-devel zlib zlib-devel opens ...

  4. linux下nginx编译安装

    步骤: 1.获取nginx安装包. 进入nginx官网:http://nginx.org/ 找到稳定版本: 点击红框内的链接. 使用wget获取安装包. wget http://nginx.org/d ...

  5. Linux下Nginx的安装(二)

    一.安装Nginx ## 安装前准备 ## #GNU编译器集合 #Nginx编译需要PCRE #在Nginx的各种模块中需要使用gzip压缩 #在Nginx中,如果服务器提供安全网页时则会用到Open ...

  6. Nginx 1.9.7.2 + PHP 5.6.18(FastCGI)在CentOS Linux下的编译安装

    本文参考张宴的Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)[原创]完成.所有操作命令都在CentOS 6.x 64位操作系统下实践 ...

  7. Linux下Nginx的安装与配置

    安装前需要安装pcre:ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/1.解压缩:     tar xjpf pcre-7.8.tar.b ...

  8. Linux下Nginx的安装、升级及动态添加模块

    系统基于ubuntu server 14.04.4 amd64 安装 第一步 下载并解压Nginx压缩包 从Nginx官网下载Nginx,或者在Linux上执行wget http://nginx.or ...

  9. linux下nginx的安装及配置

    一.安装nginx前,我们首先要确保系统安装了g++.gcc.openssl-devel.pcre-devel和zlib-devel软件,可通过如图所示命令进行检测,如果以安装我们可以通过图二所示卸载 ...

随机推荐

  1. JVM之Parallel Scavenge收集器

    新生代收集器,复制算法,并行收集,面向吞吐量要求(吞吐量优先收集器). 吞吐量=用户代码运行时间/(用户代码运行时间+垃圾回收时间) -XX:MaxGCPauseMillis:控制最大垃圾收集停顿时间 ...

  2. jQuery中多个元素的Hover事件

    1.需求简介 jQuery的hover事件只是针对单个HTML元素,例如: $('#login').hover(fun2, fun2); 当鼠标进入#login元素时调用fun1函数,离开时则调用fu ...

  3. Shell十三问[转]

    Shell十三问 转载于网络,稍加整理. (一) 为何叫做Shell? 我们知道计算机的运作不能离开硬件,但使用者却无法直接对硬件作驱动,硬件的驱动只能透过一个称为"操作系统(Operati ...

  4. CSS3动画事件

    CSS3 的动画效果强大,在移动端使用广泛,动画执行开始和结束都可以使用JS来监听其事件. animationstart animationend 以下是一个示例 <!DOCTYPE html& ...

  5. node.js自动化测试断言包assert的方法说明

    参考以下文档 http://yijiebuyi.com/blog/ca2c0edf447624bd4d527490c9fce369.html http://www.cnblogs.com/softlo ...

  6. js中数组遍历for与for in区别(强烈建议不要使用for in遍历数组)

    js中遍历数组的有两种方式 var array=['a'] //标准的for循环 for(var i=1;i<array.length;i++){ alert(array[i]) } //for ...

  7. 【转帖】分享一个迅为4412开发板OTG烧录批处理文件

    平台:iTOP-4412开发板 Bat 功能: 1.可以分条的执行烧录,不需要每次烧录都去复制命令 2.可以批量烧录 开发板系统烧录批处理文件,请将此文件放置在fastboot程序同目录下,下载地址: ...

  8. Java IO工作机制分析

    Java的IO类都在java.io包下,这些类大致可分为以下4种: 基于字节操作的 I/O 接口:InputStream 和 OutputStream 基于字符操作的 I/O 接口:Writer 和 ...

  9. JAVA中内部类和同文件非内部类的总结

    java文件的顶层类(即非其它类的内部类),可见范围只有public和非public(包内可见)2种,不能用private或protected修饰.1个Java文件只能有一个public类,且必须与文 ...

  10. JS重载

    Js 不支持函数的重载,可以用相同的名字在同一作用区域,定义两个函数,而不会引起错误,但真正使用的是最后一个. Js 不会验证传递给函数的参数个数是否和函数定义的参数的个数相同,开发人员定义的函数都可 ...