FreeBSD 使用 Port 编译 Nginx

FreeBSD 提供了 Pkgng 安装二进制应用程序,有点类似与 yum 或者 apt 。但是除了 Pkgng, FreeBSD 还提供了源码编译安装的方式:port。

初次使用 port 的时候需要更新 port 源:

sudo portsnap fetch -s portsnap.cn.freebsd.org
sudo portsnap extract
sudo portsnap update

使用 extract 的时候,会将下载的压缩包解压到相应的目录,这些文件是 FreeBSD 提供的二进制文件的 Makefile, 我们使用 Pkg 安装的二进制文件就是通过这些 Makefile 编译的,这些 Makefile 预设了一些默认值,当我们需要自定义编译参数的时候,就可以使用这些 Makefile 文件,修改它的参数进行重新编译,port 编译的优势是它提供了一个可视化的参数配置界面,使编译变得很简单,而且它与 Pkg 兼容,make install 后通过 Pkg 也能卸载查询等操作。

搜索 port 的应用程序需要用到 psearch :

sudo pkg install psearch

以 Nginx 为例,使用 psearch 搜索 nginx:

psearch nginx

列出搜索列表:

[vagrant@bazinga ~]$ psearch nginx
databases/lua-resty-redis Redis client driver for the ngx_lua nginx module
security/py-certbot-nginx NGINX plugin for Certbot
security/py-certbot-nginx NGINX plugin for Certbot
security/py-gixy          Tool to analyze Nginx configuration for security misconfiguration
security/py-gixy          Tool to analyze Nginx configuration for security misconfiguration
www/nginx                 Robust and small WWW server
www/nginx-devel           Robust and small WWW server
www/nginx-full            Robust and small WWW server (full package)
www/nginx-lite            Robust and small WWW server (lite package)
www/nginx-naxsi           Robust and small WWW server (plus NAXSI)
www/nginx-prometheus-exporter Prometheus exporter for NGINX and NGINX Plus stats
www/p5-Nginx-ReadBody     Nginx embeded perl module to read and evaluate a request body
www/p5-Nginx-Simple       Perl 5 module for easy to use interface for Nginx Perl Module
www/p5-Test-Nginx         Testing modules for Nginx C module development
www/py-unit               Python module for NGINX Unit
www/py-unit               Python module for NGINX Unit
www/rubygem-passenger     Modules for running Ruby on Rails and Rack applications
www/unit-perl             Perl module for NGINX Unit
www/unit-php              PHP module for NGINX Unit
www/unit-php              PHP module for NGINX Unit
www/unit-php              PHP module for NGINX Unit

搜索出来的路径是相对路径,默认在 /usr/ports 目录下,例如这里的 nginx 就是在 /usr/ports/www/nginx 目录下。

切换到 nginx 目录下,执行 sudo make install clean 就可以编译 nginx 了。

nginx_make

选择相应的额外模块,确定之后就会自动下载依赖编译安装,假如编译安装之后,想再额外加入其他参数重新编译安装,这个时候执行 sudo make install clean 就不会出现图像配置界面,它是按照上一次设置的参数重新编译,此时可以执行 sudo make configure 重新设置编译参数。

经过一顿编译之后,就可以启用 nginx 了,添加系统启动项:

sudo sysrc nginx_enable=YES

启动 nginx :

 sudo service nginx start