zoukankan      html  css  js  c++  java
  • 在阿里云服务器(ECS)上从零开始搭建nginx服务器

          本文介绍了如何在阿里云服务器上从零开始搭建nginx服务器。阿里云服务器(ECS)相信大家都不陌生,感兴趣的同学可以到http://www.aliyun.com/product/ecs去购买,或到体验馆去体验(半个月有效期)。至于如何注册、管理ECS这里就不详细介绍了。因为官方文档已经写的很清楚了。如果还不清楚,打咨询电话询问。

    现在假设你已经拥有了阿里云服务器,ip是139.128.33.11(假的,读者需要换成自己的ip地址)。并且没有选择任何安装包。现在ECS是完全空的,除了必须的Linux系统外,其他什么都没有。还有一点,本文选择的是Ubuntu Linux 14.04 64位版本。Linux比较节省内存,因为并没有GUI部分,纯控制台操作(看命令行头疼的同学请绕道)。

    本文只安装nginx服务器,后面的文章会配置其他环节,如PHP、Java、MySQL等。

    在安装之前需要完成如下两项工作。

    1. 找一个工具上传文件(如nginx安装包)
    2. 连接到服务器的Console上,以便执行命令

          由于现在服务器还是空的,所以没有ftp服务启动,因此,只能用sftp,至于什么是sftp,如何用sftp(SSH File Transfer Protocol),自己到网上搜索。总之,sftp使用了SSH协议,默认端口号是22。用法和ftp类似。大多数ftp客户端都支持sftp。谁便找一个支持sftp的工具即可。然后利用ECS的用户名(root)和密码连接sftp即可。

    至于连接到服务器的Console上,找一个SSH客户端即可。例如,我在Mac OS X上,直接执行sudo ssh 139.128.33.11即可。这时系统会要求输入OS X管理员密码,通过后会要求输入ECS的root用户密码,如果输入正确,就会进入ECS Console。并且输入如下的欢迎信息。

    Welcome to Ubuntu 14.04.2 LTS (GNU/Linux 3.13.0-32-generic x86_64)

    * Documentation:  https://help.ubuntu.com/

    Welcome to aliyun Elastic Compute Service!

    这两项工作都搞定后,需要按如下几步进行操作。

    PS:下面的所有的命令都是在ECS Console中执行的。

         由于nginx的rewrite需要pcre library,所以首先需要在Linux上执行如下命令安装pcre(下面的命令只针对Ubuntu Linux,其他Linux版本需要使用其他命令)。

    apt-get install libpcre3 libpcre3-dev

    第2步:下载和上传nginx安装包

         我们可以通过apt-get安装nginx,不过并不是最新的,对于有强迫症,一定要安装最新版本的同学,可能apt-get并不适合,所以可以直接从官网下载nginx的最新源代码包,安装编译后的版本即可。

         读者可以到 http://nginx.org/en/download.html  下载nginx的最新版。目前是1.9.3。

        下载黑框中nginx的即可。

        下载完后,利用sftp工具上传到ECS上。如果没有购买外挂硬盘,上传到系统盘也可以。Linux送20GB系统盘。还剩下18GB左右,足够做实验了。

        现在使用下面的命令解压nginx安装包

    tar -xzf nginx-1.9.3.tar.gz

    解压后的目录是nginx-1.9.3。现在进入该目录。

    第3步:安装相应的library

    由于编译nginx要使用http_stub_status_module 和http_ssl_module,所以需要安装zlib和OpenSSL。

    使用下面的命令安装zlib。

    apt-get install zlib1g  zlib1g.dev

    使用下面的命令安装OpenSSL。

    apt-get install libssl-dev

    第4步:使用OpenSSL源代码

         如果编译时出错,可能的原因是OpenSSL的问题,所以最稳妥的方式是将OpenSSL源代码和nginx源代码一同编译。读者可以到https://www.openssl.org/source 下载最新的OpenSSL源代码。下载后,用sftp工具上传到ECS上。然后使用tar解压。假设解压后的目录为/usr/local/openssl。

    第5步:隐藏nginx的版本

        尽管这一步不是必须的,不过为了安全,在编译nginx之前,通常会隐去nginx的版本,这样也可以给攻击者带来一定的麻烦。

    现在进入<nginx源代码根目录>/src/core,然后用vi打开nginx.h头文件,修改前的代码如下:

    #ifndef _NGINX_H_INCLUDED_
    #define _NGINX_H_INCLUDED_
    #define nginx_version      1009003
    #define NGINX_VERSION      "1.9.3"  
    #define NGINX_VER          "nginx/" NGINX_VERSION
    
    #ifdef NGX_BUILD
    #define NGINX_VER_BUILD    NGINX_VER " (" NGX_BUILD ")"
    #else
    #define NGINX_VER_BUILD    NGINX_VER
    #endif
    #define NGINX_VAR          "NGINX"
    #define NGX_OLDPID_EXT     ".oldbin"
    #endif /* _NGINX_H_INCLUDED_ */

    修改后的代码如下:

    #ifndef _NGINX_H_INCLUDED_
    #define _NGINX_H_INCLUDED_
    
    #define nginx_version      1009003
    #define NGINX_VERSION      ""
    #define NGINX_VER          "super" NGINX_VERSION
    #ifdef NGX_BUILD
    #define NGINX_VER_BUILD    NGINX_VER " (" NGX_BUILD ")"
    #else
    #define NGINX_VER_BUILD    NGINX_VER
    #endif
    
    #define NGINX_VAR          "super"
    #define NGX_OLDPID_EXT     ".oldbin"

    第6步:配置nginx

          编译Linux/OS X下的源代码,基本都一个套路,先configure,然后make install。如果PATH没有设置“.”,还需要使用“./configure”。

    现在进入nginx源代码根目录,然后执行如下的命令

    ./configure  --prefix=/mnt/disk1/nginx --with-http_stub_status_module --with-http_ssl_module --with-openssl=/usr/local/openssl

    其中“/mnt/disk1/nginx”表示要安装到的目标目录。  “ /usr/local/openssl”是OpenSSL源代码目录。这样nginx会和OpenSSL一同编译。

    第7步:编译nginx

          如果前几步都没问题,执行make install编译安装nginx。编译好后,会将目标文件都放到/mnt/disk1/nginx目录中。

    第8步:检查配置文件是否正确

          进入/mnt/disk1/nginx/sbin目录,然后执行nginx -t   如果输入如下信息,表明配置文件是正确的(每次修改配置文件后,启动nginx服务之前,最好都执行一下这个命令)。

    nginx: the configuration file /mnt/disk1/nginx/conf/nginx.conf syntax is ok

    nginx: configuration file /mnt/disk1/nginx/conf/nginx.conf test is successful

    第9步:启动nginx服务

        进入/mnt/disk1/nginx/sbin目录,执行nginx命令即可启动nginx服务。如果发现80端口已经被占用,可能是nginx服务已经启动。执行pkill nginx即可杀掉nginx服务。可以使用ps -ef | grep nginx命令查看内存中是否还有nginx进程。

    第10步:测试nginx服务

        现在打开浏览器,在地址栏输入http://139.128.33.11 如果输出如下图的信息,表明nginx已经配置成功。

    现在随便输入一个path。如http://139.128.33.11/abcd  由于该路径不存在,所以会输出404错误,不过由于nginx版本已经隐去,所以只会看到如下图的输出信息。

  • 相关阅读:
    ural(Timus) 1019 Line Painting
    ACMICPC Live Archive 2031 Dance Dance Revolution
    poj 3321 Apple Tree
    其他OJ 树型DP 选课
    poj 3548 Restoring the digits
    ACMICPC Live Archive 3031 Cable TV Network
    递归循环获取指定节点下面的所有子节点
    手动触发asp.net页面验证控件事件
    子级Repeater获取父级Repeater绑定项的值
    没有列名的数据绑定
  • 原文地址:https://www.cnblogs.com/nokiaguy/p/4703429.html
Copyright © 2011-2022 走看看