天天看点

在Centos上编译安装nginx

实验环境:

    OS: CentOS 6.6 

   nginx:nginx-1.6.2.tar.gz

前期准备:

安装开发包组件

[root@1inux tmp]# yum -y groupinstall "Development tools" "Server Platform Development"

[root@1inux tmp]# yum -y install pcre-devel

一、 编译安装: 

[root@1inux tmp]# useradd -r nginx    //添加nginx系统用户

[root@1inux tmp]# tar xf nginx-1.6.2.tar.gz 

[root@1inux tmp]# cd nginx-1.6.2

[root@1inux nginx-1.6.2]# ./configure --help        //获取帮助

[root@1inux nginx-1.6.2]#  mkdir -pv /var/tmp/nginx/{client,proxy,fastcgi,uwsgi}    //创建编译安装需要的目录

<code>[root@1inux nginx-1.6.2]# ./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf --user=nginx --group=nginx --error-log-path=/</code><code>var</code><code>/log/nginx/error.log --http-log-path=/</code><code>var</code><code>/log/nginx/access.log --pid-path=/</code><code>var</code><code>/run/nginx/nginx.pid --lock-path=/</code><code>var</code><code>/lock/nginx.lock --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-http_mp4_module --http-client-body-temp-path=/</code><code>var</code><code>/tmp/nginx/client --http-proxy-temp-path=/</code><code>var</code><code>/tmp/nginx/proxy --http-fastcgi-temp-path=/</code><code>var</code><code>/tmp/nginx/fastcgi --http-uwsgi-temp-path=/</code><code>var</code><code>/tmp/nginx/uwsgi</code>

添加path路径

<code>[root@1inux nginx]# </code><code>echo</code>  <code>"export PATH=/usr/local/nginx/sbin/nginx:$PATH"</code> <code>&gt; /etc/profile.d/nginx.sh</code>

加载:

<code>[root@1inux nginx]# . /etc/profile.d/nginx.sh</code>

启动nginx

<code>[root@1inux nginx]# /usr/local/nginx/sbin/nginx</code>

<code>[root@1inux nginx]# ss -tunlp | grep :80</code>

<code>tcp    LISTEN     0      128                    *:80                    *:*      users:((</code><code>"nginx"</code><code>,52985,6),(</code><code>"nginx"</code><code>,52986,6))</code>

<code>[root@1inux nginx]#</code>

查看nginx启动进程情况

<code>[root@1inux nginx]# ps aux | grep nginx</code>

<code>root      52985  0.0  0.1  45044  1064 ?        Ss   03:54   0:00 nginx: master process /usr/local/nginx/sbin/nginx</code>

<code>nginx     52986  0.0  0.1  45472  1636 ?        S    03:54   0:00 nginx: worker process      </code>

<code>root      52991  0.0  0.0 103252   836 pts/8    S+   03:55   0:00 grep nginx</code>

<code>[root@1inux nginx]# /usr/local/nginx/sbin/nginx -h   </code><code>//查看nginx 选项</code>

<code>nginx version: nginx/1.6.2</code>

<code>Usage: nginx [-?hvVtq] [-s signal] [-c filename] [-p prefix] [-g directives]</code>

<code>Options:</code>

<code>  </code><code>-?,-h         : this help</code>

<code>  </code><code>-v            : show version </code><code>and</code> <code>exit</code>

<code>  </code><code>-V            : show version </code><code>and</code> <code>configure options then </code><code>exit</code>

<code>  </code><code>-t            : test configuration </code><code>and</code> <code>exit</code>

<code>  </code><code>-q            : suppress non-error messages during configuration testing</code>

<code>  </code><code>-s signal     : send signal to a master process: stop, quit, reopen, reload</code>

<code>  </code><code>-p prefix     : set prefix path (</code><code>default</code><code>: /usr/local/nginx/)</code>

<code>  </code><code>-c filename   : set configuration file (</code><code>default</code><code>: /etc/nginx/nginx.conf)</code>

<code>  </code><code>-g directives : set </code><code>global</code> <code>directives out of configuration file</code>

常用配置指令:

    server {

                }  //定义一个虚拟主机

    2、listen   //定义监听端口

                listen address[:port];

                listen port;

    3、server_name  NAME [...];         【定义服务器主机名----只能用在server中】        

            后可跟多个主机名:名称还可以使用正则表达式(~)或通配符,检查标准如下

                    (1)先做精确匹配检查;

                    (2)左侧通配符匹配检查;*.1inux.com 

                    (3) 右侧通配符匹配检查;如 mail.*  

                    (4) 正则表达式匹配检查:如 ~^.*\.1inux.com\.com$

                    (5) default_server;

--------------------------------------------------------

编辑配置文件  在http {} 中添加如下:

        server {

                listen 888;

                server_name 888.1inux.com;

                root "/vhost/888/html/";

        }

重新加载

[root@1inux nginx]# /usr/local/nginx/sbin/nginx -s reload

[root@1inux nginx]# ss -tnlp | grep nginx

LISTEN     0      128                       *:888                      *:*      users:(("nginx",6568,11),("nginx",7659,11))

LISTEN     0      128                       *:80                       *:*      users:(("nginx",6568,6),("nginx",7659,6))

[root@1inux nginx]# 

添加主页面 

 # echo "&lt;h1&gt; This is 888.1inux.com &lt;/h1&gt;" &gt; /vhost/888/html/index.html

然后访问如图

<a href="http://s3.51cto.com/wyfs02/M01/6E/08/wKioL1VyUtiABYvYAADIcc1KRag782.jpg" target="_blank"></a>

    4、root path;

            设置资源路径映射;用于指明请求的URL所对应的资源所在的文件系统上的起始路径;

                【其使用范围:http, server, location,   if in location                 location 内的 优先级高于server】

    5、location [  = | ~ | ~* | ^~ ] uri { ... } 

                location @name { ... } 

            使用范围: server, location 

            功能:允许根据用户请求的URL来匹配定义的各location; 匹配到时,此请求将被响应的location配置块中的配置所处理,例如做访问控制等功能

                = : 精确匹配检查;

                ^~: RUI的前半部分匹配,不支持正则表达式;

                ~ : 正则表达式模式匹配检查,区分字符大小写;

                ~*: 正则表达式模块匹配检查,不区分字符大小写;

    匹配的优先级:   精确匹配(=)   ^~     ~    ~*   不带任何符号的location;

-------------------------

eg:

创建目录及文件 

[root@1inux /]# mkdir /vhost/{www,images/img} -pv

mkdir: created directory `/vhost'

mkdir: created directory `/vhost/www'

mkdir: created directory `/vhost/images'

mkdir: created directory `/vhost/images/img'

[root@1inux /]# echo "&lt;h1&gt; This is www.1inux.com &lt;/h1&gt;" &gt;/vhost/www/index.html

[root@1inux vhost]# tree /vhost

/vhost

|-- images

|   `-- img

|       |-- 1.jpg

|       |-- 2.jpg

|       `-- mylinux2.jpg

`-- www

    `-- index.html

在配置文件中添加如下:

<code>        </code><code>server {</code>

<code>                </code><code>listen 888;</code>

<code>                </code><code>server_name www.1inux.com;</code>

<code>                </code><code>location / {</code>

<code>                        </code><code>root </code><code>"/vhost/www/"</code><code>;</code>

<code>                        </code><code>}</code>

<code>                </code><code>location /img/ {</code>

<code>                        </code><code>root </code><code>"/vhost/images/"</code><code>;</code>

<code>        </code><code>}</code>

<code>[root@1inux nginx]# /usr/local/nginx/sbin/nginx -s reload</code>

<code>[root@1inux nginx]# ss -tnlp | grep </code><code>"nginx"</code>

<code>LISTEN     0      128                       *:888                      *:*      users:((</code><code>"nginx"</code><code>,18499,11),(</code><code>"nginx"</code><code>,18803,11))</code>

<code>LISTEN     0      128                       *:80                       *:*      users:((</code><code>"nginx"</code><code>,18499,6),(</code><code>"nginx"</code><code>,18803,6))</code>

注意 此时 使用root  定义  访问 http://www.1inux.com:888/img/1.jpg  实际访问的Web服务器路径是:/vhost/images/目录下的/img/1.jpg

--------------------------------

    6、alias path;

        用于location配置段,定义路径别名

                location /img/ {

                        root "/vhost/images/";

                        }

        //http://www.1inux.com:888/img/2.jpg        ====》  /vhost/images/img/2.jpg 

        //即  访问路径中的/img/对应的是   Web本地/vhost/images/目录下的目录

                location /pic/ {

                        alias "/vhost/picture/";

                //http://www.1inux.com:888/pic/2.jpg        ====》  /vhost/picture/2.jpg

                //即  访问路径中的/pic/目录对应的是   Web本地/vhost/picture/目录

    7、index file;

                默认主页面;

                    index index.php index.html;

本文转自 1inux 51CTO博客,原文链接:http://blog.51cto.com/1inux/1659050

继续阅读