服务器——Nginx安装及静态配置、部署

news2024/11/23 18:43:39

目录

Nginx

安装Nginx步骤

安装yum-utils

配置nginx.repo源

安装nginx

系统启动nginx服务器

nginx.conf配置

关闭nginx服务器

配置文件启动nginx服务

配置文件编写

启动nginx服务

关闭nginx服务


服务器——Nginx安装及静态配置、部署。

直接在云服务器中启动项目,一旦访问量多了,服务器会受不了,可能导致崩溃,所以我们需要代理服务器来Nginx代理云服务器启动项目。

Nginx

Nginx是由伊戈尔塞索耶夫开发的一款轻量级web代理服务器、反向代理服务器以及电子邮件(IMAP/POP3/SMTP)代理服务器。在2004年10月4日以类BSD许可证形式公开源码。

Nginx以事件驱动的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载均衡服务器,同时Nginx具备优秀的静态内容处理能力,能将动态内容转发给uWSGI服务器,这样可以达到很好的客户端响应。

在性能上,Nginx占用很少的系统资源,能够支持更多的并发连接,达到更高的访问效率;

在功能上,Nginx是优秀的代理服务器和负载均衡服务器。

其特点:

  • 占用内存少,并发性强;

  • 稳定性强,功能丰富;

  • 系统资源消耗少;

  • 轻量级,高度模块化,负载均衡。

很多大型网站都在使用Nginx服务器,例如:淘宝、京东、腾讯、百度、新浪、网易等。

安装Nginx步骤

有两种安装Nginx方法:

一种是快速安装,直接执行下面代码即可:

yum install nginx

另一种是设置nginx.repo源安装,我们推荐使用设置nginx.repo源安装,具体步骤如下所示:

安装yum-utils

在安装之前,首先要安装yum-utils,执行如下代码:

yum install yum-utils

配置nginx.repo源

首先在/etc/yum.repos.d目录下创建nginx.repo文件,执行如下代码:

touch /etc/yum.repos.d/nginx.repo

在nginx.repo文件中写入以下代码:

vim /etc/yum.repos.d/nginx.repo  #进入nginx.repo文件
# 写入以下代码:
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

写入文件后,保存并退出,执行如下代码查看是否加载了Nginx安装源:

yum repolist

安装nginx

安装nginx执行如下代码即可安装:

yum install nginx

系统启动nginx服务器

在系统管理中,我们可以执行如下代码启动nginx服务器:

systemctl start nginx  #启动nginx服务器
ps -aux | grep nginx  #查看nginx进程

如下图所示:

这样就启动了nginx服务器,我们进入浏览器并输入公网id即可看到如下页面:

 

假如没能成功显示该页面,则需要在云服务器开放80端口。

nginx.conf配置

为什么输入本机的IP地址就会显示上面的网页呢,带着疑问,我们来看看Nginx的配置文件,nginx默认的配置文件nginx.conf的目录为:/etc/nginx/nginx.conf,也可以执行如下代码找出nginx.conf的位置:

find -name nginx.conf

如下图所示:

找到nginx.conf配置文件路径后,进入nginx.conf配置文件:

vim /etc/nginx/nginx.conf
user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

其内容如下所示:

user  nginx;     #用户名
worker_processes  auto;    #工作进程数为自动增加

error_log  /var/log/nginx/error.log notice;  #错误日志文件
pid        /var/run/nginx.pid;    #进程文件


events {
    worker_connections  1024;  #允许同时连接的连接数
}


http {
    include       /etc/nginx/mime.types;  #http请求类型文件
    default_type  application/octet-stream;  #默认为application的http请求

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';  #日志格式

    access_log  /var/log/nginx/access.log  main;    #日志目录

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;      #连接超时时间

    #gzip  on;        #压缩格式
 
    include /etc/nginx/conf.d/*.conf;  #辅助配置文件 
}

我们在nginx.conf配置文件中没有找到呈现刚才网页直接相关的代码,只有一个辅助配置文件,那么我们执行如下代码进入复制配置文件目录:

cd /etc/nginx/conf.d
ls

发现只有一个名为default.conf的配置文件,执行如下代码进入default.conf辅助配置文件:

vim /etc/nginx/conf.d/*.conf

其内容如下所示:

server {
    listen       80;    #服务器端口号
    server_name  localhost;   #服务器名

    #access_log  /var/log/nginx/host.access.log  main;

    location / {         #项目网址http:ip地址/
        root   /usr/share/nginx/html;   #项目路径
        index  index.html index.htm;   #http文件
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;  #访问出错500,502,503,504时呈现50x.html网页
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

在辅助配置文件中,我们找到了网页项目文件相关的代码,我们进入/usr/share/nginx/html项目路径,执行如下代码:

vim /usr/share/nginx/html/index.html 

打开index.html,发现其内容正是我们刚才公网id访问浏览器显示的内容。

也就是说,只要我们修改default.conf配置文件中的项目路径改为我们项目的路径,即可把我们的项目放在服务器上面了,但是一般情况下,我们都不会去修改nginx原来的default.conf配置文件,一般会通过使用自定义的配置文件来启动nginx服务。

关闭nginx服务器

当我们使用系统管理来启动nginx服务器时,需要系统管理来关闭nginx服务器,执行如下代码:

systemctl stop nginx

可以根据需求执行如下代码:

#通过系统管理nginx服务
systemctl enable nginx   #设置nginx为开机启动
systemctl disable nginx  #禁止开机启动
systemctl status nginx   #查看nginx状态
systemctl start nginx   #启动nginx服务
systemctl stop nginx #关闭nginx服务

配置文件启动nginx服务

在使用系统管理启动nginx服务时,浏览器访问自身的IP地址呈现的是一个欢迎使用nginx服务的网页,要想浏览器访问自身的IP地址呈现的是其他网页时,需要修改其辅助配置文件default.conf,但一般情况下,我们不会去修改nginx原来的default.conf配置文件,那么怎么启动nginx服务器让浏览器访问自身IP地址呈现其他网页呢?

这时我们可以自己编写一个nginx配置文件mynginx.conf(配置文件名可以随意),执行以下代码来启动nginx服务:

nginx -c 配置文件路径

配置文件编写

那么问题来了,如何编写nginx配置文件呢?首先系统管理启动nginx服务涉及了两个配置文件——nginx.conf和default.conf,其中控制网页内容的呈现相关的是default.conf配置文件,而nginx.conf是一些日志、错误等一些文件配置,所以我们只需要把nginx.conf配置文件和default.conf配置文件的内容复制在自己编写的mynginx.conf配置文件即可,复制代码后,我们通过增删改查,最终得出以下代码:

user  root;       #将nginx.conf的nginx改为root
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    server {        #default.conf代码复制在nginx.conf配置文件的http里面,并将注释的代码删除
    listen       6789;
    server_name  localhost;

    location / {
        root   /tmp/test/templates;    #修改为你项目的路径
        index  Hello.html Hello.htm;    #修改为你的首页网页
    }
}
}

修改的地方我们已经在代码中注释了,好了,通过简单的修改复制的代码,我们成功编写了自己的nginx配置文件mynginx.conf,我们将配置文件放在Flask程序根目录中。

Flask程序如下所示:

from flask import Flask, render_template
app = Flask(__name__)
app.config['DEBUG']=True
app.config['ENV']='development'

@app.route('/')
def hello_world():
    return render_template('Hello.html')
if __name__ == '__main__':
    app.run()

启动nginx服务

好了,配置文件已经写好了,执行如下代码启动nginx服务:

nginx -c /root/demo/myflask/mynginx.conf   #启动nginx服务
ps -aux | grep nginx       #查看nginx进程

这样我们就启动了自己编写的nginx配置文件,如下图所示:

浏览器访问http://ip:port,这里我们设置的端口号为6789,如下图所示:

关闭nginx服务

通过配置文件启动nginx服务,需要执行如下代码关闭nginx服务:

nginx -s quit  #正常关闭
nginx -s stop  #快速关闭
nginx -s reload   #重新加载配置

好了,服务器——Nginx安装及Nginx静态配置、部署就讲到这里了。

公众号:白巧克力LIN

该公众号发布Python、数据库、Linux、Flask、自动化测试、Git、算法、前端、服务器等相关文章!

- END -

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/796429.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C# 数据结构】Heap 堆

【C# 数据结构】Heap 堆 先看看C#中有那些常用的结构堆的介绍完全二叉树最大堆 Heap对类进行排序实现 IComparable<T> 接口 对CompareTo的一点解释 参考资料 先看看C#中有那些常用的结构 作为 数据结构系类文章 的开篇文章&#xff0c;我们先了解一下C# 有哪些常用的数据…

Android开发之Fragment动态添加与管理

文章目录 主界面布局资源两个工具Fragment主程序 主界面布局资源 在activity_main.xml中&#xff0c;声明两个按钮备用&#xff0c;再加入一个帧布局&#xff0c;待会儿用来展示Fragment。 <?xml version"1.0" encoding"utf-8"?> <LinearLayo…

一文快速入门任务调度框架-Quartz

前言 还不会 Quartz&#xff1f;如果你还没有接触过Quartz&#xff0c;那么你可能错过了一个很棒的任务调度框架&#xff01;Quartz 提供了一种灵活、可靠的方式来管理和执行定时任务&#xff0c;让咱们的定时任务更加优雅。本篇文章将为你介绍 Quartz 框架的核心概念、API 和…

Vue3封装函数组件(ElImageViewer)预览图片

目录结构 index.vue <template><el-image-viewer v-if"show" v-bind"$attrs" hide-on-click-modal close"show false" /> </template><script setup> import { ref, watch } from "vue" import { ElImageV…

D2L学习记录-10-词嵌入word2vec

NLP-1-词嵌入(word2vec) 参考: 《动手学深度学习 Pytorch 第1版》第10章 自然语言处理 第1、2、3 和 4节 (词嵌入) 词嵌入 (word2vec)&#xff1a; 词向量&#xff1a;自然语言中&#xff0c;词是表义的基本单元。词向量是用来表示词的向量。词嵌入 (word embedding)&#x…

余切拉普拉斯算子推导 cotangent Laplace-Beltrami operator

欢迎关注更多精彩 关注我&#xff0c;学习常用算法与数据结构&#xff0c;一题多解&#xff0c;降维打击。 参考自polygon mesh proccessing这本书 基本思路及原理 余切拉普拉斯算子是一种考虑了网格底层几何联系的一种算子&#xff0c;在网格平滑&#xff0c;参数化等算法中…

no instance(s) of type variable(s) R exist so that void conforms to R 解决方法

一、问题描述 使用函数式编程stream().map()的时候报错&#xff1a; no instance(s) of type variable(s) R exist so that void conforms to R 二、报错原因 map()函数需要有一个返回值&#xff0c;但是setter方法返回值为void,即setChildren()返回值为void. 三、解决方法 …

SpringBoot前后端分离项目中实现将图片上传至Linux服务器(极简)

FileController /*** 文件上传至服务器 */ ApiOperation("文件上传") PostMapping("/upload") public R upload(MultipartFile file){String uploadUrl fileService.upload(file);return R.ok().message("文件上传成功").data("url",…

一遍看懂面试算法——二叉树

目录 二叉树的种类 满二叉树 完全二叉树 二叉搜索树 平衡二叉搜索树 二叉树的存储方式 二叉树的遍历方式 二叉树的递归遍历 二叉树的迭代遍历 前序遍历&#xff08;迭代法&#xff09; 中序遍历&#xff08;迭代法&#xff09; 后序遍历&#xff08;迭代法&#xff…

Python-如何使用正则表达式

如何利用Python使用正则表达式 目录 正则表达式常用匹配规则 ​编辑re库的使用 match()方法&#xff1a; search()方法: findall()方法 : sub()方法: compile()方法; 通用匹配 贪婪与非贪婪匹配 贪婪匹配 非贪婪匹配 修饰符 转义匹配 正则表达式是处理字符的强大…

高电压放大器ATA-2021B技术指标

随着ATA-2021H高压放大器的升级改版&#xff0c;新品ATA-2021B高电压放大器走进了更多工程师、研究人员的视野。相比于升级之前&#xff0c;ATA-2021B高压放大器拥有了更多更好地优势&#xff0c;可以更好地的帮助研究人员高效完成测试项目。今天Aigtek小编就带大家了解一下关于…

liunx时间慢几分钟,定时更新系统时间

#&#xff01;/bin/sh hwclock --hctosys echo "执行成功" 定时5分钟执行一次

minitab学习系列(2)--DOE逐步方法选择

系列文章目录 文章目录 系列文章目录前言一、DOE>因子>分析因子设计>逐步二、DOE>因子>分析因子设计>逐步>层次结构总结 前言 一、DOE>因子>分析因子设计>逐步 逐步删除和向模型中添加项以确定有用的项的子集。Minitab提供了三个常用过程&…

油画欣赏|《沧海的线条》在群山之间

《沧海的线条》80x65cm陈可之•2006年绘油画《沧海的线条》&#xff0c;通过绘画艺术的手法&#xff0c;描绘出三峡群山之间那一层层波浪般的纹理&#xff0c;展现出天地间岁月的古老沧桑变迁。此作品是陈可之先生百余幅三峡系列作品之一。夜&#xff0c;群山高大挺立。没有植被…

[SSM]Spring中的JdbcTemplate

目录 十三、JdbcTemplate 13.1环境准备 13.2新增 13.3修改 13.4删除 13.5查询 13.6查询一个值 13.7批量添加 13.8批量修改 13.9批量删除 13.10使用回调函数 13.11使用德鲁伊连接池 十三、JdbcTemplate JdbcTemplate是Spring提供的一个JDBC模板类&#xff0c;是对JDBC…

el-tree数据渲染超出省略

el-tree数据渲染超出省略 问题 <el-tree:data"deptOptions":props"defaultProps":expand-on-click-node"false":filter-node-method"filterNode"ref"tree"default-expand-allhighlight-currentnode-click"handleNo…

来自随身WIFI不限流量的暴击,今天你被割韭菜了吗?

大家好&#xff0c;前几天很多小伙伴私信葫芦妹&#xff0c;反馈买了个无限流量随身WIFI&#xff0c;一开始挺好用的&#xff0c;怎么用着用着不行了呢&#xff1f;必须让我给普及下。那么既然这些小伙伴需求这么强烈&#xff0c;那么今天葫芦妹得赶紧来教你如何辨别随身WIFI的…

【100天精通python】Day17:常见异常类型与解决,异常处理语句

目录 一 python 的常见异常类型与解决 二 常用的异常处理语句 1 try...except语句 2 try...except...else语句 3 try...except...finally语句 4 使用raise语句抛出异常 5 自定义异常类型 6 异常链处理 在 Python中&#xff0c;异常是在程序运行时发生的错误或意外情…

Spring Boot实践二 --Web开发

一、模板引擎简介 在之前的示例中&#xff0c;我们通过RestController来处理请求&#xff1a; package com.example.demospringboot.web;import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RequestMapping;Re…

1.Web API基本认知

变量声明 const优先&#xff0c;尽量使用const ●const声明的值不能更改&#xff0c;而且const声明变量的时候需要里面进行初始化 ●简单数据类型 用const声明后不能修改值 ●但是对于 引用数据类型&#xff0c;const声明的变量&#xff0c;里面存的不是值&#xff0c;是地址&a…