草庐IT

Linux 系统安装 Nginx、配置支持https、ssl

一码先生 2023-11-02 原文

文章目录

学习目标

Linux 安装Nginx
Nginx 配置HTTPS服务器

1. 兵马不动,粮草先行

linux 安装nginx需要操作系统先安装好GCC、openssl-devel、pcre-devel和zlib-devel软件库
配置HTTPS服务器需要 ssl_证书、ssl证书密钥

1.1 官网下载 Nginx

官网地址 https://nginx.org/
下载地址 https://nginx.org/en/download.html
进入下载页面,选择需要的版本(Stable version 稳定版本、Mainline version 主线版本、Legacy versions 旧版本)

选择自己需要的版本后自行下载,喜欢新的,我选择的 nginx-1.23.2

1.2 检查系统GCC、必要软件库

软件库以及GCC检查总结:个人意见不用检查,直接安装6个依赖软件库以及编译工具GCC ,仅针对安装nginx。
理由参见文章末尾章节。如果非要检查参见末尾章节。

1.3 安装GCC、软件库

1.3.1 安装GCC编译器

    gcc的全称是GNU Compiler Collection,它是由GNU推出的一款功能强大的、性能优越的多平台编译器,是一个能够编译多种语言的编译器。最开始gcc是作为C语言的编译器(GNU C Compiler),现在除了c语言,还支持C++、java、Pascal等语言。gcc支持多种硬件平台。
    安装命令如下:
yum -y install gcc gcc-c++ autoconf automake make

1.3.2 安装pcre、pcre-devel

Pcre全称(Perl Compatible Regular Expressions),中文perl兼容正则表达式。Nginx的Rewrite模块和http核心模块都会使用到PCRE正则表达式语法。pcre-devel 是使用 pcre 开发的一个二次开发库。
安装命令如下:

yum install pcre -y
yum install pcre-devel -y

1.3.3 安装zlib 、zlib -devel

安装命令如下:

yum install zlib -y
yum install zlib-devel -y

1.3.4 安装openssl 、openssl -devel

控件添加的模块 HTTPS协议支持到HTTP服务器。默认情况下不构建此模块。构建和运行此模块需要OpenSSL库。如果不需要支持HTTPS协议不需要安装OpenSSL library。如果使用需要在构建Nginx 时候加上参数 --with-http_ssl_module
安装命令如下:

yum install openssl -y
yum install openssl-devel -y

2. 开干,开始安装Nginx

2.1 上传 Nginx安装包

利用xftp工具 或其他工具上传到系统home 目录(其它目录也可以)。

2.2 解压 Nginx安装包

切换到你上传的目录运行命令:(nginx-1.23.2.tar.gz 文件名替换你下载的文件名)

tar -zxvf nginx-1.23.2.tar.gz

2.3 配置、编译、安装

需要切换到解压后的文件夹执行下面一系列命令。如果报错参见下面常见安装错误章节。

  1. 配置运行下面命令:(默认配置不支持https 、ssl)
    ./configure
  如果需要支持https 、ssl运行下面命令: 
   ./configure --with-http_ssl_module

更多配置说明参见配置说明章节。
3. 编译运行下面命令:

make
  1. 安装运行下面命令:
make install

2.4 启动测试

运行下面命令:(需要切换到默认安装路径下执行./nginx 或者加入环境变量 nginx)

 ./nginx

通过浏览器访问:

3. 开机自动启动Nginx

3.1 创建开机自启脚本(nginx.service)

运行下面命令:

cd /etc/systemd/system
vi nginx.service

3.2 nginx.service文件内容(复制粘贴即可)

不是默认安装路径的自己修改

[Unit]
Description=nginx service
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

3.3 设置文件权限

运行命令:

chmod 755 nginx.service

3.4 设置开机自动启动

运行下面命令:

systemctl daemon-reload
systemctl enable nginx

3.5 测试启停

运行下面命令:

systemctl start nginx # nginx启动
systemctl stop nginx # nginx停止

3.6 重启服务器测试

运行下面命令:

reboot

3.7 常用命令

  1. 启动nginx服务 systemctl start nginx.service
  2. 重新启动nginx服务 systemctl restart nginx.service
  3. 查看nginx服务当前状态 systemctl status nginx.service
  4. 停止开机自启动 systemctl disable nginx.service

4. 配置HTTPS服务器

4.1 拷贝证书密钥

上传证书和密钥到配置文件夹(配置文件直接使用不用加路径,懒人用)

4.2 修改配置文件

要配置HTTPS服务器,必须在服务器块的侦听套接字上启用ssl参数,并指定服务器证书和私钥文件的位置。
服务器证书是一个公共实体。它被发送到连接到服务器的每个客户机。私钥是一个安全的实体,应该存储在一个有访问限制的文件中,但是,它必须可以被nginx的主进程读取。
注意替换你的域名和证书以及密钥名称和路径。

server {
    listen              443 ssl;
    server_name         www.example.com;
    ssl_certificate     www.example.com.crt;
    ssl_certificate_key www.example.com.key;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;
    
}

4.3 重新加载配置

可以使用命令 ./nginx -s reload
也可以通过停止服务与开启服务

5. 检查安装依赖

5.1 检查GCC

检查是否安装执行以下命令:

gcc -v

如果有安装版本以及安装信息,则表明安装完毕,没有则需要安装gcc编译器,会提示“Command not found”。

5.2 检查OpenSSL library

运行下面命令检查是否安装:

rpm -qa openssl

看到openssl的版本,说明已安装,否则未安装。

5.3 检查pcre-devel

查看linux是否安装了pcre环境 pcre 与 pcre-devel 都要检查
方法一:执行以下命令:

yum list installed | grep pcer

若结果中出现pcre的版本信息,则表示pcre已经安装,若没有出现版本信息,则表示没有安装pcre。

方法二:执行以下命令:

rpm -qa pcre
rpm -qa pcre-devel

如果没有安装,在安装 nginx 时候会出现下面提示(翻译):

./configure:error:HTTP重写模块需要PCRE库。

原命令行提示原图:

5.4 检查zlib library

检查是否安装执行以下命令:

yum list installed | grep zlib

执行结果:(虽然我这里出现这个版本号依然安装检查时提示缺少zlib library ),所以这个检查是否安装还是不推荐。

如果不安装在安装nginx,在配置nginx会出现下面错误提示。

./configure:error:HTTP gzip模块需要zlib库。

运行./configure 界面截图:

6. 不检查依赖理由

6.1 验证浪费时间

linux 软件安装大概有以下几种方式:

rpm包安装方式
yum方式安装
deb包安装方式
tar.gz源代码包安装方式 (本例子ngnix就是这种方式安装)
tar.bz2源代码包安装方式
apt方式安装
bin文件安装
检查是否安装并不一样。
例如:
yum list installed | grep (yum 方式验证是否安装) eg: yum list installed | grep pcre
rpm -qa pcre (rpm 方式验证是否安装) eg: rpm -qa pcre
-v (查看安装信息) eg: gcc -v
我验证的时候就出现误以为安装了,但是结果缺少了 -devel 库。
下图是我验证界面结果,pcre 验证方式不一样结果不一样。

[root@192 nginx-1.23.2]# yum list installed | grep pcre
pcre.x86_64                            8.32-17.el7                     @anaconda
pcre-devel.x86_64                      8.32-17.el7                     @base    
[root@192 nginx-1.23.2]# rpm -qa pcre
pcre-8.32-17.el7.x86_64
[root@192 nginx-1.23.2]# yum list installed | grep zlib
zlib.x86_64                            1.2.7-20.el7_9                  @updates 
zlib-devel.x86_64                      1.2.7-20.el7_9                  @updates 

互联网当然你也可以搜索每一个库的验证方法。

6.2 直接安装没有问题

如果安装过了会提示安装过了**版本,Nothing to do,没有安装则进行安装。系统什么也不做。
下面代码你运行很多次也没事情。因为:Nothing to do。

[root@192 sbin]# yum install pcre -y
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.huaweicloud.com
 * extras: mirrors.huaweicloud.com
 * updates: mirrors.ustc.edu.cn
Package pcre-8.32-17.el7.x86_64 already installed and latest version
Nothing to do
[root@192 sbin]# yum install pcre-devel -y
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.huaweicloud.com
 * extras: mirrors.huaweicloud.com
 * updates: mirrors.ustc.edu.cn
Package pcre-devel-8.32-17.el7.x86_64 already installed and latest version
Nothing to do
[root@192 sbin]# yum install zlib -y
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.huaweicloud.com
 * extras: mirrors.huaweicloud.com
 * updates: mirrors.ustc.edu.cn
Package zlib-1.2.7-20.el7_9.x86_64 already installed and latest version
Nothing to do
[root@192 sbin]# yum install zlib-devel -y
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.huaweicloud.com
 * extras: mirrors.huaweicloud.com
 * updates: mirrors.ustc.edu.cn
Package zlib-devel-1.2.7-20.el7_9.x86_64 already installed and latest version
Nothing to do
[root@192 sbin]# yum install openssl -y
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.huaweicloud.com
 * extras: mirrors.huaweicloud.com
 * updates: mirrors.ustc.edu.cn
Package 1:openssl-1.0.2k-25.el7_9.x86_64 already installed and latest version
Nothing to do
[root@192 sbin]# yum install openssl-devel -y
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.huaweicloud.com
 * extras: mirrors.huaweicloud.com
 * updates: mirrors.ustc.edu.cn
Package 1:openssl-devel-1.0.2k-25.el7_9.x86_64 already installed and latest version
Nothing to do
[root@192 sbin]# 

6.3 守门人

安装nginx 时候命令 ./configure 也会检查是否缺少以来的软件库。

有关Linux 系统安装 Nginx、配置支持https、ssl的更多相关文章

  1. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

  2. ruby - 完全离线安装RVM - 2

    我打算为ruby​​脚本创建一个安装程序,但我希望能够确保机器安装了RVM。有没有一种方法可以完全离线安装RVM并且不引人注目(通过不引人注目,就像创建一个可以做所有事情的脚本而不是要求用户向他们的bash_profile或bashrc添加一些东西)我不是要脚本本身,只是一个关于如何走这条路的快速指针(如果可能的话)。我们还研究了这个很有帮助的问题:RVM-isthereawayforsimpleofflineinstall?但有点误导,因为答案只向我们展示了如何离线在RVM中安装ruby。我们需要能够离线安装RVM本身,并查看脚本https://raw.github.com/wayn

  3. ruby-on-rails - rails 目前在重启后没有安装 - 2

    我有一个奇怪的问题:我在rvm上安装了ruby​​onrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(

  4. ruby - 如何为 emacs 安装 ruby​​-mode - 2

    我刚刚为fedora安装了emacs。我想用emacs编写ruby。为ruby​​提供代码提示、代码完成类型功能所需的工具、扩展是什么? 最佳答案 ruby-mode已经包含在Emacs23之后的版本中。不过,它也可以通过ELPA获得。您可能感兴趣的其他一些事情是集成RVM、feature-mode(Cucumber)、rspec-mode、ruby-electric、inf-ruby、rinari(用于Rails)等。这是我当前用于Ruby开发的Emacs配置:https://github.com/citizen428/emacs

  5. ruby-on-rails - 如何优雅地重启 thin + nginx? - 2

    我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server

  6. ruby-on-rails - 无法在centos上安装therubyracer(V8和GCC出错) - 2

    我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e

  7. ruby-on-rails - 独立 ruby​​ 脚本的配置文件 - 2

    我有一个在Linux服务器上运行的ruby​​脚本。它不使用rails或任何东西。它基本上是一个命令行ruby​​脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg

  8. ruby - 通过 RVM (OSX Mountain Lion) 安装 Ruby 2.0.0-p247 时遇到问题 - 2

    我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search

  9. ruby - 如何在 Lion 上安装 Xcode 4.6,需要用 RVM 升级 ruby - 2

    我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121

  10. ruby - Fast-stemmer 安装问题 - 2

    由于fast-stemmer的问题,我很难安装我想要的任何ruby​​gem。我把我得到的错误放在下面。Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingfast-stemmer:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR=

随机推荐