blog
blog copied to clipboard
服务器由零配置
一直都在用 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
装好之后马上启动,就能访问了,这样安装的默认配置是
- Nginx 配置文件:
/etc/nginx
- Nginx Web 根目录:
/usr/share/nginx/html
然后有几件事要搞定:HTTPS、Gzip、单页路由配置、API 代理
HTTPS
这里应该是包括了 HTTP2 的,但是最新版的 nginx 的 https 模块是默认开启了 h2 的,所以只需要开启 https 就可以了。
https 需要证书认证,免费证书非 Let‘s encrypt 最好用了,配合 certbot 工具,拿到一个证书易如反掌。
参考这里的操作就能拿到一个证书了。
注意 root 换成我们的 nginx web root 就可以了。
Gzip
在 /etc/nginx/nginx.conf
的 server
域加入以下语句
注意 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
居然要刷新一下才能更新...