在阿里云服务器(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等。
在安装之前需要完成如下两项工作。
- 找一个工具上传文件(如nginx安装包)
- 连接到服务器的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..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版本已经隐去,所以只会看到如下图的输出信息。

在阿里云服务器(ECS)上从零开始搭建nginx服务器的更多相关文章
- 阿里云服务器ECS上ubuntu安装nginx后默认站点页面打开错误,显示无法访问此网站
问题:在新买的阿里云服务器ECS上安装nginx后打开默认页面失败,如下图所示. 系统环境:Ubuntu 16.04.4 LTS64版本. 步骤回顾: root用户下运行命令 apt-get inst ...
- 使用阿里云镜像站NTP服务搭建NTP服务器(基于CentOS 7系统)
镜像下载.域名解析.时间同步请点击 阿里云开源镜像站 一.NTP服务器介绍 网络时间协议(Network Time Protocol,NTP)服务器,也就是日常所说的NTP服务器,用来提供同步时间服务 ...
- 阿里云(ECS)Centos服务器LNMP环境搭建
阿里云( ECS ) Centos7 服务器 LNMP 环境搭建 前言 第一次接触阿里云是大四的时候,当时在校外公司做兼职,关于智能家居项目的,话说当时俺就只有一个月左右的 php 后台开发经验(还是 ...
- 阿里云服务器部署php的laravel项目,在阿里云买ECS 搭建 Linux+Nginx+Mysql+PHP环境的
在阿里云买ECS的时候选择自己习惯的镜像系统,我一般都是使用Linux Ubuntu,所以,以下的配置都是在Ubuntu 14.04稳定支持版的环境中搭建Linux+Nginx+Mysql+PHP环境 ...
- 阿里云加Picgo或MPic搭建最豪横的图床
阿里云加Picgo或MPic搭建最豪横的图床 首先解释一下什么是图床,图床其实就是提供图片存储的服务器. 对于自建博客来说,由于各种原因的限制(比如穷...)可能无法购买存储空间比较大的VPS. 而对 ...
- 记一次阿里云oss文件上传服务假死
引言 记得以前刚开始学习web项目的时候,经常涉及到需要上传图片啥的,那时候都是把图片上传到当前项目文件夹下面,每次项目一重启图片就丢了.虽然可以通过修改/tomcat/conf/server.xml ...
- 一个空行引起的阿里云负载均衡上部署https证书的问题
今天在阿里云上购买了WoSign的https证书,在证书签发后,在控制台下载证书文件,一共有2个文件,一个是.key文件(私钥文件),一个是.pem文件(证书文件). 然后在阿里云负载均衡“证书管理” ...
- 【转载】网站服务器运维记实:阿里云1核2G突发性能t5服务器突然变得卡顿
阿里云突发性能服务器1核2G的t5服务器在高资源利用率的情况下运行一段时间后,发现服务器反应变得很慢,通过windows远程桌面连接上服务器后查看到CPU性能一直在90%到100%之间,无法降下来.前 ...
- Thinkphp整合阿里云OSS图片上传实例
Thinkphp3.2整合阿里云OSS图片上传实例,图片上传至OSS可减少服务器压力,节省宽带,安全又稳定,阿里云OSS对于做负载均衡非常方便,不用传到各个服务器了 首先引入阿里云OSS类库 < ...
随机推荐
- Hibernate —— Entity.hbm.xml
一.简述 1.对象关系映射文件,用于映射实体类和关系数据库数据表之间的一个 xml 文件. 2.通过 Entity.hbm.xml 映射文件,Hibernate 可以理解持久化类和数据表之间的对应关系 ...
- SQL语句分组排序,多表关联排序
SQL语句分组排序,多表关联排序总结几种常见的方法: 案例一: 在查询结果中按人数降序排列,若人数相同,则按课程号升序排列? 分析:单个表内的多个字段排序,一般可以直接用逗号分割实现. select ...
- linq lambda left join
//var list = table1.Join(table2, ee => ee.Id, ff => ff.table1_Id, (ee, ff) => new { ee, ff ...
- 针对Asp.net MVC SEO的几点建议
1. 引言 SEO 即搜索引擎优化,很多web开发人员本应该熟悉,至少需要了解的一个知识点.像百度.必应等搜索引擎其实一直都在进化.但是有些优化的技巧可能在短时间内不变. 今天就给大家介绍几个专门针对 ...
- Tomcat指定的服务已存在
解压Tomcat8.0后,运行service.bat install,结果安装未成功,进入logs文件夹,查看错误日志,提示: 指定的服务已存在. Failed to install service ...
- 修改nginx版本名称伪装任意web server
如何修改nginx默认的名称,可以稍微的伪装一下,也可以装x 一般来说修改3个位置,一个是nginx.h.另一个是ngx_http_header_filter_module.c.还有一个ngx_htt ...
- Laravel安装方法 (windows)
Laravel安装方法(windows) 安装PHP 下载PHP7 http://windows.php.net/download#php-7.0 进入上述网站下载PHP7 选择zip包解压安装 配置 ...
- java Properties异常:Malformed \uxxxx encoding.
昨天项目中遇到一个 java.lang.IllegalArgumentException: Malformed \uxxxx encoding.这样的一个异常,debug了一下发现是读取propert ...
- 从零开始学 Java - 利用 Nginx 负载均衡实现 Web 服务器更新不影响访问
还记得那些美妙的夜晚吗 你洗洗打算看一个小电影就睡了,这个时候突然想起来今天晚上是服务器更新的日子,你要在凌晨时分去把最新的代码更新到服务器,以保证明天大家一觉醒来打开网站,发现昨天的 Bug 都不见 ...
- svg.js教程及使用手册详解(一)
做毕设的时候,因为要使用到画图和自定义动画,所以接触到了SVG.网上关于SVG和Canvas的对比很多,具体的辨析这里就不赘言.网上关于SVG的所谓教程基本上都是SVG本身,但是却没有一个针对svg. ...