ryancui92 / blog

Ryan's Blog
https://ryancui.com
21 stars 1 forks source link

服务器由零配置 #14

Open ryancui92 opened 6 years ago

ryancui92 commented 6 years ago

一直都在用 Vultr 的服务器,但是网速真的太特么慢了,100+ 毫秒的 ping,经常连 4G 都访问不了,做做实验还行,有应用部署在上面就完全用不了。所以最后还是选择了国内大哥阿里云(尼玛贵了一倍有多

那么又要重新在上面部署安装各种环境、软件了,这里记录一下,防止以后又要再迁移。

MySQL

基本是参考 安装 MySQL 5.7 的,注意装的是 5.7 版本。

在配置中漏了一个连接使用 utf8 的配置,补上:

[client]
default-character-set=utf8

Nginx

之前在 Vultr 上装的 Nginx 不能开 HTTP2,因为 OpenSSL 的版本不对,要源码编译安装用 1.0.2 的 openssl. 但现在 CentOS 7.4 已经用上了最新的 openssl 了,所以直接用 yum 装就可以支持 http2 了!

# yum install nginx

# nginx

装好之后马上启动,就能访问了,这样安装的默认配置是

然后有几件事要搞定:HTTPS、Gzip、单页路由配置、API 代理

HTTPS

这里应该是包括了 HTTP2 的,但是最新版的 nginx 的 https 模块是默认开启了 h2 的,所以只需要开启 https 就可以了。

https 需要证书认证,免费证书非 Let‘s encrypt 最好用了,配合 certbot 工具,拿到一个证书易如反掌。

参考这里的操作就能拿到一个证书了。

注意 root 换成我们的 nginx web root 就可以了。

Gzip

/etc/nginx/nginx.confserver 域加入以下语句

注意 JavaScript 的资源有可能 content-type 是 application/javascript,漏了这个一直没压缩 js

gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_comp_level 5;
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/javascript;

单页路由设置

当我们部署了单页应用在 nginx 上时(如 Vue、Angular 等),如果应用的前端路由是使用 HTML5 新的 history API 来做路由(就是地址栏看不到 #,不是用的 Hash),当用户刷新页面的时候,会由于直接找到 nginx 对应的 Web 目录而报 404。因此需要设置 nginx 当找不到文件时,定位回 index.html.

location /fastfood/ {
  try_files $uri $uri/ /fastfood/index.html;
}

try_files 会检查文件是否存在,不存在就跳转至应用所在的 index.html

API 代理

使用 nginx 可以代理开放在内部端口的 API 后端应用,这样就不用处理跨域的问题,而且安全性更好

location ^~ /fastfood/api/ {
   rewrite ^/fastfood/api/(.*) /fastfood/api/$1 break;
   proxy_http_version 1.1;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_set_header Host $http_host;
   proxy_set_header X-NginX-Proxy true;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection "upgrade";
   proxy_pass http://127.0.0.1:8360/;
   proxy_redirect off;
}

将所有 /fastfood/api 的请求代理到后端的 8360 端口。

nodejs

全程按官网搞,轻松愉快。

Git

yum install git

ryancui92 commented 5 years ago

居然要刷新一下才能更新...