zoukankan      html  css  js  c++  java
  • centos7上用nginx部署前后端分离项目

    前言

    使用nginx部署前后分离项目,后端为go,前端Vue,部署的服务器环境是CentOS7
    整个流程大抵分为三个块:
    1.安装需要的依赖环境
    2.安装用来部署的nginx
    3.改nginx配置部署项目
    

    1、依赖环境问题

    1.gcc安装
    yum install gcc-c++
    
    # 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装
    
    2.PCRE pcre-devel 安装
    yum install -y pcre pcre-devel
    
    # nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库
    
    3.zlib 安装
    yum install -y zlib zlib-devel
    
    # nginx 使用 zlib 对 http 包的内容进行 gzip
    
    4.OpenSSL 安装
    yum install -y openssl openssl-devel
    
    

    2、安装Nginx

    1.安装包
    wget -c https://nginx.org/download/nginx-1.12.0.tar.gz
    
    # 解压
    tar -zxvf nginx-1.12.0.tar.gz
    cd nginx-1.12.0
    
    2.配置
    ./configure
    
    3.编译安装
    make
    make install
    
    # 安装路径。whereis nginx
    
    4.启动、停止nginx
    cd /usr/local/nginx/sbin/
    ./nginx 
    ./nginx -s stop
    ./nginx -s quit
    ./nginx -s reload
    
    5.端口占用错误解决
    yum install net-tools
    
    6.配置开机自启动
    vi /etc/rc.local
    
    # 添加
    /usr/local/nginx/sbin/nginx
    
    # 设置权限
    chmod 755 rc.local
    

    3.部署前后分离项目

    1.上传需要部署的项目
    前端项目需要用 npm run build 打包
    找到目录下的 dist 文件夹,上传到需要部署的服务器
    
    后端项目直接上传,记得启动,可编译的项目编译后启动。
    
    2.打开配置文件
    vi /usr/local/nginx/conf/nginx.conf
    
    3.配置里面的server
    daemon on;
    worker_processes  50;
    #error_log /dev/stdout warn;
    error_log  /var/log/nginx/error.log error;
    
    
    events {
        worker_connections 1024;
    }
    
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
        # See http://licson.net/post/optimizing-nginx-for-large-file-delivery/ for more detail
            # This optimizes the server for HLS fragment delivery
        sendfile off;
        #tcp_nopush on;
        keepalive_timeout  65;
        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 /dev/stdout combined;
    
    #     ssl_ciphers         HIGH:!aNULL:!MD5;
    #     ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    #     ssl_session_cache   shared:SSL:10m;
    #     ssl_session_timeout 10m;
    
    server {
            listen 80;
    	server_name xxx.xxx.xx.xxx;
            # Uncomment these lines to enable SSL.
            # Update the ssl paths with your own certificate and private key.
            # listen 443 ssl;
            # ssl_certificate     /opt/certs/example.com.crt;
            # ssl_certificate_key /opt/certs/example.com.key;
            location / {
              root /usr/loacl/xxx;     # 前端的dist文件需要和nginx配置路径相同
              try_files $uri $uri/ /index.html;
              index  index.html;
            }
    	# 添加拦截路径和代理地址
            location /api/ {
              # 添加头部信息
              proxy_set_header X-Forwarded-Proto $scheme;
              proxy_set_header X-Forwarded-Port $server_port;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection "upgrade";
              proxy_set_header  Host  $host;
              proxy_pass http://xxx.xxx.xxx.xxx:xxxx/;
            }
    	}
    
    }
    
    
    4.检查配置文件是否正确
    nginx -t
    
    5.重启nginx
    ./nginx -s reload
    
    6.配置注意事项
    # 让nginx拦截所有带/api/的请求,转发到后端服务器,就可以解决跨域的问题
    # location如果一个特定的url 要使用别名,不能用root,alias指定的目录是准确的,root是指定目录的上级目录
    # 注意:使用代理地址时末尾记得加上斜杠"/"。
    # 这里用的root用户,如果用其他用户,可能访问静态资源会被禁止访问(403),需要“chmod 755 静态资源路径 ” 授权,授权的时候要逐级授权,
    
  • 相关阅读:
    leetcode 48. Rotate Image
    leetcode 203. Remove Linked List Elements 、83. Remove Duplicates from Sorted List 、82. Remove Duplicates from Sorted List II(剑指offer57 删除链表中重复的结点) 、26/80. Remove Duplicates from Sorted ArrayI、II
    leetcode 263. Ugly Number 、264. Ugly Number II 、313. Super Ugly Number 、204. Count Primes
    leetcode 58. Length of Last Word
    安卓操作的一些问题解决
    leetcode 378. Kth Smallest Element in a Sorted Matrix
    android studio Gradle Build速度加快方法
    禁用gridview,listview回弹或下拉悬停
    Android Studio找不到FragmentActivity类
    安卓获取ListView、GridView等滚动的距离(高度)
  • 原文地址:https://www.cnblogs.com/leisunny/p/15411050.html
Copyright © 2011-2022 走看看