项目使用springboot作为后端,vue为前端开发,简述一下项目的部署方式,操作系统为CentOS7
Nginx是一款用途广泛,而且非常受欢迎的服务器,可用用它做应用的负载均衡,反向代理等
通过NGINX官方网站下载稳定版本 NGINX官网
yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel
如果没有安装yum或yum没有相应的包,可以手动下载以上的包自行编译安装
mkdir /usr/local/nginx
tar /usr/local/nginx/nginx-1.20.1.tar.gz
cd /usr/local/nginx/nginx-1.20.1
./config --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre
#等一会
make
#再等一会
make install
#完成
后续根据需要可以追加nginx的其他模块
- 例如追加 nginx_upstream_check_module-0.3.0 检查后端服务器状态模块
nginx -V
得到安装nginx的配置信息
- 找到源码文件(如果丢失了可以根据以上信息去网上重新下载),进入源码目录重新配置
./config --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre --add-module = nginx_upstream_check_module-0.3.0
- 再次编译(切记不需要make install)
make
编译后的nginx在当前目录的objs文件夹内,替换之前的nginx文件,重启即可完成模块的添加
这里就不多做解释了,注意开放端口或者关闭防火墙保证服务可以被访问到就可以了
cd /usr/local/nginx/conf
cp nginx.conf nginx.conf.bak
vim nginx.conf
#user nobody;
worker_processes 1; #工作进程数,与服务器的CPU核心数一致
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024; #每个进程可以接受的最大连接数
#use epoll; #事件驱动模型,Nginx的事件驱动模型,支持select、poll、epoll、rtsig、kqueue、/dev/poll、eventport等。——Nginx使用非阻塞通讯处理请求事件的方式
#client_header_buffer_size 4k; #客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求头的大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为系统分页大小。查看系统分页可以使用 getconf PAGESIZE命令
#open_file_cache max=2000 inactive=60s; #为打开文件指定缓存,默认是没有启用的,max指定缓存最大数量,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存 打开文件最大数量为我们再main配置的worker_rlimit_nofile参数
#open_file_cache_valid 60s; #这个是指多长时间检查一次缓存的有效信息。如果有一个文件在inactive时间内一次没被使用,它将被移除
#open_file_cache_min_uses 1; #open_file_cache指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如果有一个文件在inactive时间内一次没被使用,它将被移除。
}
http {
include mime.types; #定义nginx能识别的网络资源媒体类型(如,文本、html、js、css、流媒体等,cat conf/mime.types)
default_type application/octet-stream; #定义默认的type,如果不定义改行,默认为text/plain.
#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 logs/access.log main;
sendfile on; #是否调用sendfile函数传输文件,默认为off,使用sendfile函数传输,可以减少user mode和kernel mode的切换,从而提升服务器性能。对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。
#sendfile_max_chunk 128k; #该参数限定Nginx worker process每次调用sendfile()函数传输数据的最大值,默认值为0,如果设置为0则无限制。配合上边sendfile 选项一起使用。
#tcp_nopush on; #当tcp_nopush设置为on时,会调用tcp_cork方法进行数据传输。使用该方法会产生这样的效果:当应用程序产生数据时,内核不会立马封装包,而是当数据量积累到一定量时才会封装,然后传输。这样有助于解决网络堵塞问题。默认值为on。举例:快递员收快递、发快递,包裹累积到一定量才会发,节省运输成本。
#keepalive_timeout 0; #该参数有两个值,第一个值设置nginx服务器与客户端会话结束后仍旧保持连接的最长时间,单位是秒,默认为75s。第二个值可以省略,它是针对客户端的浏览器来设置的,可以通过curl -I看到header信息中有一项Keep-Alive: timeout=60,如果不设置就没有这一项。第二个数值设置后,浏览器就会根据这个数值决定何时主动关闭连接,Nginx服务器就不操心了。但有的浏览器并不认可该参数。
keepalive_timeout 65;
#send_timeout #这个超时时间是发送响应的超时时间,即Nginx服务器向客户端发送了数据包,但客户端一直没有去接收这个数据包。
#client_max_body_size 10m; #浏览器在发送含有较大HTTP包体的请求时,其头部会有一个Content-Length字段,client_max_body_size是用来限制Content-Length所示值的大小的。这个限制包体的配置不用等Nginx接收完所有的HTTP包体,就可以告诉用户请求过大不被接受。会返回413状态码。例如,用户试图上传一个1GB的文件,Nginx在收完包头后,发现Content-Length超过client_max_body_size定义的值,就直接发送413(Request Entity Too Large)响应给客户端。如果某个连接超过send_timeout定义的超时时间,那么Nginx将会关闭这个连接。
#gzip on; #是否开启gzip压缩。
#gzip_min_length 1k; #设置允许压缩的页面最小字节数,页面字节数从header头得content-length中进行获取。默认值是20。建议设置成大于1k的字节数,小于1k可能会越压越大。
#gzip_buffers 4 16k; #设置系统获取几个单位的buffer用于存储gzip的压缩结果数据流。4 16k代表分配4个16k的buffer。
#gzip_http_version 1.1; #用于识别 http 协议的版本,早期的浏览器不支持 Gzip 压缩,用户会看到乱码,所以为了支持前期版本加上了这个选项。如果你用了Nginx反向代理并期望也启用Gzip压缩的话,由于末端通信是http/1.1,故请设置为 1.1。
#gzip_comp_level 6; #gzip压缩比,1压缩比最小处理速度最快,9压缩比最大但处理速度最慢(传输快但比较消耗cpu)
#gzip_types mime-type ... ; #匹配mime类型进行压缩,无论是否指定,”text/html”类型总是会被压缩的。在conf/mime.conf里查看对应的type。示例:gzip_types text/plain application/x-javascript text/css text/html application/xml;
#gzip_proxied any; #Nginx作为反向代理的时候启用,决定开启或者关闭后端服务器返回的结果是否压缩,匹配的前提是后端服务器必须要返回包含”Via”的 header头。以下为可用的值:off - 关闭所有的代理结果数据的压缩;expired - 启用压缩,如果header头中包含 "Expires" 头信息;no-cache - 启用压缩,如果header头中包含 "Cache-Control:no-cache" 头信息;no-store - 启用压缩,如果header头中包含 "Cache-Control:no-store" 头信息;private - 启用压缩,如果header头中包含 "Cache-Control:private" 头信息;no_last_modified - 启用压缩,如果header头中不包含 "Last-Modified" 头信息;no_etag - 启用压缩 ,如果header头中不包含 "ETag" 头信息;auth - 启用压缩 , 如果header头中包含 "Authorization" 头信息;any - 无条件启用压缩
#gzip_vary on;和http头有关系,会在响应头加个 Vary: Accept-Encoding ,可以让前端的缓存服务器缓存经过gzip压缩的页面,例如,用Squid缓存经过Nginx压缩的数据。
server {
listen 80; #监听端口为80,可以自定义其他端口,也可以加上IP地址,如,listen 127.0.0.1:8080;
server_name localhost; #定义网站域名,可以写多个,用空格分隔
#charset koi8-r; #定义网站的字符集,一般不设置,而是在网页代码中设置。
#access_log logs/host.access.log main; #定义访问日志,可以针对每一个server(即每一个站点)设置它们自己的访问日志。
location / {
root html; #定义网站根目录,目录可以是相对路径也可以是绝对路径。
index index.html index.htm; #定义站点的默认页。
}
#error_page 404 /404.html; #定义404页面
# 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 html; #定义50x.html所在路径
}
location ^~/api/{
proxy_pass http://192.168.1.64:8888; #所动动态请求匹配^~/api/的结果都交给http://192.168.1.64:8888;服务处理
# proxy_set_header X-real-ip $remote_addr;
# proxy_set_header Host $http_host;
# proxy_set_header X-NginX-Proxy true;
# proxy_cookie_path /two/ /;
}
# 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;
#}
}
}
1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker
process数等。2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。
5、location块:配置请求的路由,以及各种页面的处理情况。
配置好nginx.conf后,进入sbin目录,启动nginx
cd /usr/local/nginx/sbin
#启动nginx
./nginx
如果你没有修改html文件的话系统默认访问网站首页地址就是html中的index.html
http://192.168.1.67/ 默认端口80
访问springboot项目提供的api后得到返回的数据
http://192.168.1.67/api/sys/getArgosStates
以上说明成功部署api服务
完成了系统的api服务部署,对于网页的静态文件(html,css,js等)只需要将打包好的文件一并复制到nginx默认的网站首页的html目录下,并将入口的html改为index.hml替换原来的index.html即可,vue项目打包后如下:
复制到html目录
如果不想使用html目录也可以自己新建一个目录将vue打包的内容放到里面,但是这时候需要自己配置一下nginx服务器访问的地址:
location / {
root xxx; #自定义定义网站根目录xxx,目录可以是相对路径也可以是绝对路径。
index index.html index.htm; #定义站点的默认页。
}
随着项目功能的复杂化要不断完善nginx 的配置,模块更新等操作
文章浏览阅读88次。第14章 秒杀学习目标防止秒杀重复排队重复排队:一个人抢购商品,如果没有支付,不允许重复排队抢购并发超卖问题解决1个商品卖给多个人:1商品多订单秒杀订单支付秒杀支付:支付流程需要调整超时支付订单库存回滚1.RabbitMQ延时队列2.利用延时队列实现支付订单的监听,根据订单支付状况进行订单数据库回滚1 防止秒杀重复排队用户每次抢单的时候,一旦排队,我们设置一个自增值,让该值的初始值为1,每次进入抢单的时候,对它进行递增,如果值>1,则表明已经排队,不
文章浏览阅读2.8k次。nohup 命令用途:不挂断地运行命令。语法:nohup Command [ Arg … ] [ & ]描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示”and”的符号)到命令的尾部。无论是否将 nohup 命令的输出重定向到_nohup arg
文章浏览阅读1.1k次。文章目录Coursera: 3 Programs1. Arizona State University1.2 Overview1.3 This program is for1.4 Admissions Requirements1.5 Application Information1.6 Degree courses & Specializations you can start right..._tuition = usd per course unit
文章浏览阅读1k次。工作中很少用mysql插入数据,今天正好遇到,学习下: 在toad mysql工具里面,除了像execl表格一样手动插入数据之外,最好用insert语句插入数据,怎么快速生成数据呢? 1. 右击需要插入数据表,这里是cd_financing_income,弹出Generate SQL--->选择TO editor——>Insert ..._数据库怎样插入数据
文章浏览阅读4.3k次,点赞3次,收藏21次。文章目录屏幕分辨率和DPI :Qt 的解决方案:简 述: 高分屏、DPI、PPI、屏幕分辨率的一些基本知识,以及使用 Qt 处理高分屏的一些方法集合归纳。屏幕分辨率和DPI :英寸: inch,复数:inches;缩写为in或″,或 英吋,简作 吋。1 英寸 = 2.54 厘米(cm)= 25.4 毫米(mm)。像素: pixel 或 pel,为影像显示的基本单位,可看作一个点或方块(不是距离单位)。每个像素有自己的RGB值,单位面积的像素越多,则表示其分辨率越高。PPI: 每英寸的像素个_qt 高分屏
文章浏览阅读2.9k次,点赞4次,收藏45次。(一边学一边慢慢更……)对于医学CT图像来说,每个人有若干张.dcm类型的图像存入同一个文件夹中,分别是不同角度/部位的医学成像,可以用mango/小赛之类的看图软件看一下。3D的CT不像2D图像可以直接读取 预处理 使用,需要借助SimpleITK来处理dicom,首先要将每个人的CT存储为一个大小为N*W*H的3D数组,其中N是这个人的.dcm图像数量,W*H是每张图的尺寸。import SimpleITK as sitkdirectorypath = './images/001/'#_dcm改层厚
文章浏览阅读523次。linux nfs客户端对于同时发起的NFS请求数量进行了控制,若该参数配置较小会导致IO性能较差,查看该参数:cat /proc/sys/sunrpc/tcp_slot_table_entries默认编译的内核该参数最大值为256,可适当提高该参数的值来取得较好的性能,请以root身份执行以下命令:echo "options sunrpc tcp_slot_table_entries=..._linuxnfs 客户端参数
文章浏览阅读1.4w次,点赞2次,收藏4次。一、首先你要有个开发者账号。二、真机数据线直连Mac 电脑,并保持解锁状态。三、选择真机设备运行工程。VS Code 终端执行lxx-Mac-mini:uuuu suning$ flutter runMore than one device connected; please specify a device with the '-d <deviceId>' flag, or..._flutter 接真机调试
文章浏览阅读180次。HPE ProLiant WS460c Gen9| HPE ProLiant WS460c Gen9HPE ProLiant WS460cGPUHPE ProLiant WS460c Gen9• (VDI)• TM 1 IT(BYOD)E5-2600 v4 122,133 MHz HPE DDR4 (CAD)WebSmartMemor..._ws460c 配置
文章浏览阅读115次。作者:Michal Nowotka### 作者邮箱:[email protected]### 首页:https://www.ebi.ac.uk/chembl/### 文档:None### 下载链接chembl_migrate.. image:: https://img.shields.io/pypi/v/chemblmigrate.svg :target: https://pypi.python..._chembl怎么导出结果
文章浏览阅读1.6k次,点赞3次,收藏10次。Wireshark分析数据包一.协议TCP/IP协议栈:应用层,运输层,网络层,数据链路层 1.应用层协议 文件传输类:HTTP、FTP、TFTP; 远程登录类:Telnet; 电子邮件类:SMTP; 网络管理类:SNMP; 域名解析类:DNS; 2.运输层协议 SSL:运输层数据加密协议 Tcp:传输控制协议,可靠传输(三次握手,四次断开)_netlog确认数据包
文章浏览阅读2.5w次,点赞7次,收藏19次。今天调试一C++程序,按下F5,老是弹出一对话框显示信息:debugging information for 'myproject.exe' cannot be found or does not match. No symbols loaded. 翻译成中文大概就是:不能找到'myproject.exe' 的调试信息或者调试信息不匹配。符号文件未加载。起初,我以为是没有生成.pdb文_c++ 未加载符号文件