无法启动Nginx从源代码编译

我正在尝试从我的DigitalOcean服务器( Ubuntu-14.04 64x )上运行的原始编译的Nginx服务器的源代码编译Nginx,但有一些额外的模块。 我可以安装一切顺利,但我无法启动它。 我确定ini是正确的,因为我将当前正在运行的Nginx服务器的原始源文件复制下来[尽pipe我看到Nginx现在在编译fron源文件时添加了ini。

下面是我正在执行的[漫长的过程] – 增加对不起,但我想为需要信息的人彻底。 因为我是Nginx的newB,所以我肯定我错过了一些东西,或者只是把它全错了。 如果你可以看看我已经做了什么,看看你是否需要改变任何东西,我将不胜感激。 日Thnx!

原始的Nginx服务器仍在运行:

我检查当前/正在运行的Nginxconfiguration,以便可以构build新的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 

注意:下面的configuration参数在'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摘要:

 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" 

下一步:

我cd到根,我检查旧的Nginx文件夹的位置,并双重检查“做”输出,看看他们是一样的:

 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 ,validation它已停止: service --status-all ,输出结果是:[ – ] nginx

要validation有两个Nginx目录,我cd到: cd nginx*和输出是一个错误,指示有两个nginx文件夹 – 酷豆! 🙂

现在安装新的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' ######################################################### 

我将先前保存的文件复制/创build到可用站点的txt文件,configuration文件,默认文件和ini文件中,然后将它们符号链接到启用了站点的文件等等。

现在启动服务器: service nginx start

这就是s#!+击中粉丝的地方 – Nada。 我检查Nginx是否正在运行with service --status-all ,而不是。 还用nginx -V和它没有安装? 我也重新启动系统,仍然没有。 所以我不确定这里有什么问题。 在删除旧文件后,ini从旧服务器和其他所有configuration文件复制过来。 当我打开新的编译文件时,nginx的默认数据是存在的,所以我用第一次启动新服务器之前用原来的旧数据replace了它们。

也是为了安全起见,我rm /etc/nginx/sites-enabled/default和符号链接与ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default没有错误,我validation数据位于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之前make install什么都没有?

如果您需要查看从旧的自定义服务器复制的configuration文件,LMK和我将发布它们。

再次您的帮助在这里将不胜感激!

因为我使用nginx -V编译基于当前服务器的configuration,所以输出结果并没有显示sbinpath,所以我甚至认为编译应该已经设置了默认的文档。 基本上,这些文件夹没有被编译:P

–sbin-path = path – 设置一个nginx可执行文件的名字。 该名称仅在安装过程中使用。 默认情况下,该文件被命名为前缀/ sbin / nginx。