我正在尝试基于我的 DigitalOcean 服务器上运行的原始编译的 Nginx 服务器从源代码编译 Nginx(Ubuntu-14.04 64x),但需要一些额外的模块。我可以顺利安装所有内容,但无法启动它。我确信 ini 是正确的,因为我从当前运行的 Nginx 服务器复制了原始源代码 [尽管我看到 Nginx 现在在从源代码编译时添加了 ini ]。
以下是我正在执行的 [ 冗长的过程 ] - 抱歉,但我想为那些需要信息的人提供详尽的信息。因为我是 Nginx 的新手,所以我肯定我遗漏了一些东西,或者完全搞错了。如果您能查看我所做的工作并发现我需要/需要更改的任何东西,我将不胜感激。谢谢!
原始 Nginx 服务器仍在运行:
我检查当前/正在运行的 Nginx 配置,以便可以构建相同的新 Nginx 实例但使用添加的模块:
nginx -V
# The out-put:
configure arguments:
--with-cc-opt='-g -O2 -fstack-protector
--param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2'
--with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro'
--prefix=/usr/share/nginx
--conf-path=/etc/nginx/nginx.conf
--http-log-path=/var/log/nginx/access.log
--error-log-path=/var/log/nginx/error.log
--lock-path=/var/lock/nginx.lock
--pid-path=/run/nginx.pid
--http-client-body-temp-path=/var/lib/nginx/body
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi
--http-proxy-temp-path=/var/lib/nginx/proxy
--http-scgi-temp-path=/var/lib/nginx/scgi
--http-uwsgi-temp-path=/var/lib/nginx/uwsgi
--with-debug
--with-pcre-jit
--with-ipv6
--with-http_ssl_module
--with-http_stub_status_module
--with-http_realip_module
--with-http_addition_module
--with-http_dav_module
--with-http_geoip_module
--with-http_gzip_static_module
--with-http_image_filter_module
--with-http_spdy_module
--with-http_sub_module
--with-http_xslt_module
笔记:下面的配置参数在“make”期间返回错误,所以我删除了它们。我不知道它们是什么——这可能与我的问题有关吗???
--with-cc-opt='-g -O2 -fstack-protector
--param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2'
--with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro'
继续:
# So I don't have to sudo every line:
sudo bash
# Check for updates first thing:
apt-get update
# Install various prerequisites needed to compile Nginx:
apt-get install build-essential libgd2-xpm-dev lsb-base zlib1g-dev libpcre3 libpcre3-dev libbz2-dev libxslt1-dev libxml2 libssl-dev libgeoip-dev tar unzip openssl
# Create System users [ if it doesn't exist - but I see its there on DigitalOceans' Droplets all-ready ]:
adduser --system --no-create-home --disabled-login --disabled-password --group www-data
# Download NGINX
wget http://nginx.org/download/nginx-1.7.4.tar.gz
tar -xvzf nginx-1.7.4.tar.gz
# Then Google PageSpeed:
wget https://github.com/pagespeed/ngx_pagespeed/archive/release-1.8.31.4-beta.zip
unzip release-1.8.31.4-beta.zip
# cd into the PageSpeed Directory
cd ngx_pagespeed-release-1.8.31.4-beta/
# and add the PSOL files in there:
wget https://dl.google.com/dl/page-speed/psol/1.8.31.4.tar.gz
tar -xzvf 1.8.31.4.tar.gz
# Get back to the root directory:
cd
# I add the ngx_cache_purge module and will install the Nginx Helper plugin for WP later:
wget https://github.com/FRiCKLE/ngx_cache_purge/archive/2.1.zip
unzip 2.1.zip
# Add the headers-more-nginx-module:
wget https://github.com/openresty/headers-more-nginx-module/archive/v0.25.zip
unzip v0.25.zip
# and the naxsi module for added security:
wget https://github.com/nbs-system/naxsi/archive/0.53-2.tar.gz
tar -xvzf 0.53-2.tar.gz
# cd to the new Nginx directory
cd nginx-1.7.4
# Set up the configuration build based on the current running Nginx config args and add my additional modules:
./configure \
--add-module=$HOME/naxsi-0.53-2/naxsi_src \
--prefix=/usr/share/nginx \
--conf-path=/etc/nginx/nginx.conf \
--http-log-path=/var/log/nginx/access.log \
--error-log-path=/var/log/nginx/error.log \
--lock-path=/var/lock/nginx.lock \
--pid-path=/run/nginx.pid \
--http-client-body-temp-path=/var/lib/nginx/body \
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
--http-proxy-temp-path=/var/lib/nginx/proxy \
--http-scgi-temp-path=/var/lib/nginx/scgi \
--http-uwsgi-temp-path=/var/lib/nginx/uwsgi \
--user=www-data \
--group=www-data \
--with-debug \
--with-pcre-jit \
--with-ipv6 \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_dav_module \
--with-http_geoip_module \
--with-http_gzip_static_module \
--with-http_image_filter_module \
--with-http_spdy_module \
--with-http_sub_module \
--with-http_xslt_module \
--with-mail \
--with-mail_ssl_module \
--add-module=$HOME/ngx_pagespeed-release-1.8.31.4-beta \
--add-module=$HOME/ngx_cache_purge-2.1 \
--add-module=$HOME/headers-more-nginx-module-0.25
[ENTER]
配置摘要:
Configuration summary
+ using system PCRE library
+ using system OpenSSL library
+ md5: using OpenSSL library
+ sha1: using OpenSSL library
+ using system zlib library
nginx path prefix: "/usr/share/nginx"
nginx binary file: "/usr/share/nginx/sbin/nginx"
nginx configuration prefix: "/etc/nginx"
nginx configuration file: "/etc/nginx/nginx.conf"
nginx pid file: "/run/nginx.pid"
nginx error log file: "/var/log/nginx/error.log"
nginx http access log file: "/var/log/nginx/access.log"
nginx http client request body temporary files: "/var/lib/nginx/body"
nginx http proxy temporary files: "/var/lib/nginx/proxy"
nginx http fastcgi temporary files: "/var/lib/nginx/fastcgi"
nginx http uwsgi temporary files: "/var/lib/nginx/uwsgi"
nginx http scgi temporary files: "/var/lib/nginx/scgi"
下一步:
我进入 root 目录并检查旧的 Nginx 文件夹位置,然后仔细检查“make”输出以查看它们是否相同:
whereis nginx
#Output:
nginx: /usr/sbin/nginx /etc/nginx /usr/share/nginx
笔记:不确定‘/usr/sbin/nginx’——可能存在问题???
接下来,我将旧的 /etc/nginx/nginx.conf、/etc/nginx/sites-available/default、/etc/nginx/sites-enabled/default、/etc/init.d/nginx 复制到本地文本文件,以便安全保存,以便在新的 Nginx 服务器中使用。
然后停止正在运行的 Nginx 服务器:service nginx stop
,验证它是否已停止:service --status-all
输出为:[ - ] nginx
为了验证是否有两个 Nginx 目录,我 cd 到:cd nginx*
并且输出是一个错误,表明有两个 nginx 文件夹 - Cool Beans!:)
现在安装新的 Nginx 服务器:cd nginx-1.7.4 make install
# INSTALL OUTPUT ########################################
make -f objs/Makefile install
make[1]: Entering directory `/home/walkingfish/nginx-1.7.4'
test -d '/usr/share/nginx' || mkdir -p '/usr/share/nginx'
test -d '/usr/share/nginx/sbin' || mkdir -p '/usr/share/nginx/sbin'
test ! -f '/usr/share/nginx/sbin/nginx' || mv '/usr/share/nginx/sbin/nginx' '/usr/share/nginx/sbin/nginx.old'
cp objs/nginx '/usr/share/nginx/sbin/nginx'
test -d '/etc/nginx' || mkdir -p '/etc/nginx'
cp conf/koi-win '/etc/nginx'
cp conf/koi-utf '/etc/nginx'
cp conf/win-utf '/etc/nginx'
test -f '/etc/nginx/mime.types' || cp conf/mime.types '/etc/nginx'
cp conf/mime.types '/etc/nginx/mime.types.default'
test -f '/etc/nginx/fastcgi_params' || cp conf/fastcgi_params '/etc/nginx'
cp conf/fastcgi_params '/etc/nginx/fastcgi_params.default'
test -f '/etc/nginx/fastcgi.conf' || cp conf/fastcgi.conf '/etc/nginx'
cp conf/fastcgi.conf '/etc/nginx/fastcgi.conf.default'
test -f '/etc/nginx/uwsgi_params' || cp conf/uwsgi_params '/etc/nginx'
cp conf/uwsgi_params '/etc/nginx/uwsgi_params.default'
test -f '/etc/nginx/scgi_params' || cp conf/scgi_params '/etc/nginx'
cp conf/scgi_params '/etc/nginx/scgi_params.default'
test -f '/etc/nginx/nginx.conf' || cp conf/nginx.conf '/etc/nginx/nginx.conf'
cp conf/nginx.conf '/etc/nginx/nginx.conf.default'
test -d '/run' || mkdir -p '/run'
test -d '/var/log/nginx' || mkdir -p '/var/log/nginx'
test -d '/usr/share/nginx/html' || cp -R html '/usr/share/nginx'
test -d '/var/log/nginx' || mkdir -p '/var/log/nginx'
#########################################################
我将之前保存的文件复制/创建为 sites-available 中的 txt 文件、config、default 和 ini 文件,然后将它们符号链接到 sites-enabled,等等。
现在启动服务器:service nginx start
这就是 s#!+ 出问题的地方 - 没有。我检查 Nginx 是否正在运行with service --status-all
,但它没有运行。还有nginx -V
,它没有安装???我重启了系统,还是没有反应。所以我不确定这里出了什么问题。删除旧文件后,ini 和所有其他配置文件都从旧服务器复制过来。当我打开新编译的文件时,nginx 默认数据存在,所以我在第一次启动新服务器之前用旧的原始数据替换了它们。
同样为了安全起见,我rm /etc/nginx/sites-enabled/default
建立了符号链接并且ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
没有任何错误,并且我验证了数据在 sites-enabled/default 文件中。
我不认为服务器真正/完全安装,因为nginx -V
结果如下:
The program 'nginx' can be found in the following packages:
* nginx-core
* nginx-extras
* nginx-full
* nginx-light
* nginx-naxsi
Try: apt-get install <selected package>
我应该这样做吗apt-get install nginx-1.7.4
?或者我应该使用什么包,因为它是一个自定义包,make install
之前什么都没做?
如果您需要查看我从旧服务器复制到自定义服务器的 conf 文件,请告诉我,我会发布它们。
再次感谢您的帮助!
答案1
因为我使用基于当前服务器配置进行编译nginx -V
,所以输出没有显示 sbin 路径,所以我忘记了它,甚至认为编译应该按照文档设置默认值。基本上,文件夹没有被编译 :P
--sbin-path=path — 设置 nginx 可执行文件的名称。此名称仅在安装期间使用。默认情况下,文件名为 prefix/sbin/nginx。