Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

服务器由零配置 #14

Open
ryancui92 opened this issue Dec 6, 2017 · 1 comment
Open

服务器由零配置 #14

ryancui92 opened this issue Dec 6, 2017 · 1 comment

Comments

@ryancui92
Copy link
Owner

一直都在用 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.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 ryancui92 changed the title 服务器从零配置纪实 服务器从零配置 Jul 31, 2019
@ryancui92 ryancui92 changed the title 服务器从零配置 服务器由零配置 Jul 31, 2019
Copy link
Owner Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant