这篇文章主要记录作者如何在FreeBSD上构架Nginx服务器。作者采用下载该程序的一个源代码包手动编译的方法,而不是使用包管理工具。这样做有两个原因:首先包质量不能保证,或无效或版本旧;其次需要在编译时对多种重要的选项进行配置。

另外,相关FreeBSD初始优化见博主之前的博文。

1          GCC

Nginx是一个由C语言编写的程序,因此首先需要在系统上安装编译工具。我们采用常见GNU的GCC。确保系统上安装GCC:

# gcc

gcc: No input files specified

2          wget

一般在类UNIX环境下,大家喜欢使用wget下载。

#cd /usr/ports/ftp/wget

#make install clean

刚刚安装完后,wget并未能使用,需要执行下面的命令后方可生效。

#rehash

3          PCRE

在Nginx编译需要PCRE(Perl Compatible Regular Expression),因为Nginx的Rewrite模块和HTTP核心模块会使用到PCRE正则表达式语法。

使用ports方式安装PCRE:

#cd /usr/ports/devel/pcre

#make install clean

若原来安装有旧版本,可能会报错,使用make reinstall clean即可。

4          zlib库

zlib库提供了开发人员的压缩算法,在Ngnix的各种模块中需要使用。可以使用ports方法,在安装PHP时一同安装。在此采用独立安装方法。首先查看官方站http://zlib.net的最新版本,然后进行下载解压配置安装:

#wget http://zlib.net/zlib-1.2.8.tar.gz

#tar zxvf zlib-1.2.8.tar.gz

#cd zlib-1.2.8

#./configure --libdir=/usr/lib --includedir=/usr/include

#make install clean

5          Nginx

(1)     首先查看官网网站http://nginx.net查看最新版本,然后进行下载解压:

#wget http://nginx.org/download/nginx-1.5.1.tar.gz

#tar zxvf nginx-1.5.1.tar.gz

#cd nginx-1.5.1

(2)     Nginx编译会以debug方式编译,编译后的文件有3兆。经以下修改后,文件可以减小到500KB左右。

#vim auto/cc/gcc

将约174行的“CFLAGS="$CFLAGS -g"”注释掉。

(3)     配置选项。

这些选项在完成程序的建立安装后不可编辑,他直接影响该项目的二进制文件。

l  较容易的是全部采用默认的选项,但是这样设置会使你错过跟多功能。

#./configure

l  普通的HTTP和HTTPS服务器。(在安装FreeBSD的时候,已经内建了www用户和www用户组,因此不需要在自己建立了)

#./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module

其他模块也可通过选项进行安装,但可能需要安装额外的库。

l  邮件服务器代理。

#./configure --user=www --group=www --with-mail --with-mail_ssl_module

若仅仅作为邮件代理不使用HTTP服务,则加入选项“--without-http”

(4)     编译和安装nginx。

#make

#make install clean

(5)     测试配置文件

#/usr/local/nginx/sbin/nginx -t

(6)     开机后自动启动Nginx

l   创建Nginx服务配置脚本

#vim /usr/local/etc/rc.d/nginx.sh

加入以下内容:(若在安装时改变了默认目录,请加以修改)

#!/bin/sh

nginx=/usr/local/nginx/sbin/nginx

conf=/usr/local/nginx/conf/nginx.conf

case $1 in

start)

echo -n "Starting Nginx"

$nginx -c $conf

echo " done"

;;

stop)

echo -n "Stopping Nginx"

killall -9 nginx

echo " done"

;;

test)

$nginx -t -c $conf

;;

reload)

echo -n "Reloading Nginx"

ps auxww | grep nginx | grep master | awk '{print $2}' | xargs kill -HUP

echo " done"

;;

restart)

$nginx stop

$nginx start

;;

show)

ps -aux|grep nginx

;;

*)

echo -n "Usage: $0 {start|restart|reload|stop|test|show}"

;;

esac

exit 0

l  可执行权限

#chmod +x /usr/local/etc/rc.d/nginx.sh

l  加入自启动项

#vim /etc/rc.conf

加入“nginx_enable="YES"”FreeBSD上构架Nginx服务器

FreeBSD上构架Nginx服务器的更多相关文章

  1. nginx服务器中的安全配置

    一.关闭SELinux 安全增强型Linux(SELinux)的是一个Linux内核的功能,它提供支持访问控制的安全政策保护机制. 但是,SELinux带来的附加安全性和使用复杂性上不成比例,性价比不 ...

  2. Nginx 之三:nginx服务器模块、web请求处理机制及事件驱动模型、进程功能和进程间通信

    一:Nginx的模块化结构设计: 1.核心模块:指的是nginx服务器运行当中必不可少的模块,这些模块提供了最基本最核心的服务,比如权限控制.进程管理.错误日志.事件驱动.正则表达式解析等,nginx ...

  3. nginx 服务器配置文件指令

    localtion 配置        语法结构: location [ =  ~  ~* ^~ ] uri{ ... }        uri 变量是带匹配的请求字符, 可以是不含正则表达的字符串, ...

  4. Nginx总结(九)Nginx服务器高性能优化的配置--轻松实现10万并发访问量

    前面讲了如何配置Nginx虚拟主机,如何配置服务日志等很多基础的内容,大家可以去这里看看nginx系列文章:https://www.cnblogs.com/zhangweizhong/category ...

  5. Nginx服务器性能优化与安全配置实践指南

    转载自:https://www.bilibili.com/read/cv16151784?spm_id_from=333.999.0.0 1.引言 1.1 目的 为了更好的指导部署与测试艺术升系统ng ...

  6. Nginx 服务器 之Nginx与tomcat实现负载均衡

      本文讲解我们如何使用Nginx做反向带服务器,实现nginx与tomcat服务器集群做负载均衡. 一.nginx与tomcat实现负载均衡 1.在/usr/local/ngnix/conf  创建 ...

  7. Nginx服务器 之反向代理与负载均衡

    一.反向代理 正向代理: 客户端要获取的资源就在服务器上,客户端请求的资源路径就是最终响应资源的服务器路径,这就是正向代理.正向代理的特点:就是我们明确知道要访问哪个网站地址. 反向代理: 客户端想获 ...

  8. 把域名绑定到某个项目,以nginx服务器为例

    一:登陆域名服务器平台,把域名解析到项目对应的IP上面. 二:配置nginx服务器 1./etc/nginx/conf.d/ 在服务器该目录下,添加.conf文件,如命名为:www.demo.com. ...

  9. 在阿里云服务器(ECS)上从零开始搭建nginx服务器

    本文介绍了如何在阿里云服务器上从零开始搭建nginx服务器.阿里云服务器(ECS)相信大家都不陌生,感兴趣的同学可以到http://www.aliyun.com/product/ecs去购买,或到体验 ...

随机推荐

  1. Mac下ssh连接远程服务器时自动断开问题

    在mac下使用securecrt通过ssh连接远程服务器时,总会一段时间没有动作后,ssh被自动断开.在windows下用xmanager貌似没有遇到过这个问题. 在网上找了解决方法如下: 客户端配置 ...

  2. Selenium 使用Eclipse+TestNG创建一个Project中遇到的问题

    继续之前的学习,对于一个没有太多计算机基础的人,刚学习selenium,最大的问题就是不知道该如何入手,最简单的办法就是录制脚本之后导入. 但是导入的时候也会出现一些问题,就是该导入到哪里?如何导入? ...

  3. Web前端与移动开发学习路线图

    文章转载自「开发者圆桌」一个关于开发者入门.进阶.踩坑的微信公众号 这里整理的Web前端与移动开发学习路线图包含初中级两个部分,你可以通过百度云盘下载观看对应的视频 链接: http://pan.ba ...

  4. UITextField输入限制/小数/首位等

    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementS ...

  5. Druid连接池配置(java无框架)

    连接池是一个对数据库连接进行管理的东西,当一个线程需要用 JDBC 对 数据库操作时,它从池中请求一个连接.当这个线程使用完了这个连接,将它返回到连接池中,这样这就可以被其它想使用它的线程使用,而不是 ...

  6. SEO-站内优化规范

    类别 要求 实际工作要求 程 序 设 计 1.DIV+CSS布局 2.站内导航连接性良好 面包屑导航,翻页方式使用样式二,文章和产品上一页和下一页 3.图片的ALT属性 在编程时注意写 4.超级链接的 ...

  7. jsonpath读取json数据格式公用方法!!!

    import java.util.LinkedHashMap; import com.jayway.jsonpath.JsonPath; import com.jayway.jsonpath.Pred ...

  8. Redis Sentinel中的机制与原理详解

    序言 Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案.实际上这意味着你可以使用Sentinel模式创建一个可以不用人为干预而应对各种故障的Redis部署. 它的主要功能有以 ...

  9. Delphi的Hint介绍以及用其重写气泡提示以达到好看的效果

    Delphi中使用提示是如此简单,只需将欲使用Hint的控件作如下设置: ShowHint := True; Hint := ‘提示信息’; 不必写一行代码,相当方便. 但有时我们又想自己定制提示的效 ...

  10. 关于php的flush在本机正常在服务器不灵的问题

    这个问题网上很多,我就不重复那些了. 我的是关于进度条的应用.我最后遇到的问题是,在本机swampserver环境下的输出缓存很快,但是到了服务器上就是一段一段的了.我的服务器是Web服务器是IIS. ...