主办:Digital Ocean 上的新 Droplet
操作系统:全新安装 CentOS 7.6.1810
背景: 在生产中使用 Nginx 之前,用 100 种不同的方法在 Centos 上对其进行测试。
问题:我从源代码安装的 Nginx 似乎可以正常工作,但操作系统找不到该服务。我应该从哪里开始测试以找出问题的根源?我可以很好地使用 Linux,但我远不是专家。
背景故事: 使用包管理器安装 Nginx 效果很好。安装过程顺利,服务启动正常。
sudo yum install -y nginx
sudo systemctl start nginx
然而,当我从源代码构建时,Nginx 却不想启动。
安装看似顺利,没有任何问题。
curl nginx.org/download/nginx-1.16.0.tar.gz > nginx-1.16.0.tar.gz
tar -zxvf nginx-1.16.0.tar.gz
cd nginx-1.16.0
sudo ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-file-aio --with-threads --with-http_ssl_module --with-http_v2_module
sudo make
sudo make install
但是当我尝试启动 nginx 时出现错误。
sudo systemctl start nginx
Failed to start nginx.service: Unit not found.
我检查了一下/etc/nginx
,发现nginx.conf
创建正确。这几乎就像是安装了 nginx,但不知何故它没有与操作系统一起检查。我不是 Centos 或 Linux 专家,我不确定我应该检查哪些内容来确定问题的根源。
答案1
nginx 源代码 tarball 不包含 systemd 单元。如果您坚持要运行自己从源代码构建的副本,则需要自己提供 systemd 单元文件。您可以在 RPM 包中找到一个。
顺便说一句,你不这样做的原因解释得并没有什么意义;几乎每个人都需要你删除的大多数模块,所以尝试通常都是浪费时间。许多真正可选的模块已经是可加载模块,你只需更改 nginx 的配置即可不加载它们。
答案2
我的建议是,不要从源代码构建,而是可以按照他们网站上的 RHEL/CentOS 安装步骤进行操作http://nginx.org/en/linux_packages.html#RHEL-CentOS
您能否提供一些日志以便我们找出您的问题?