小白服务器踩坑

这是一系列服务端踩坑笔记,记录笔者从零开始服务端学习之旅

服务器

既然是服务器踩坑,拥有一个服务器是必要条件,这里介绍一个低成本的尝试

购买

腾讯云每天都有 4 核 4G 轻量级服务器的特价活动,38 元/年,相比原价动辄五六百的价格,很香。每天两次抢购机会,抢中的概率还是挺大的

系统安装

服务器其实就是一个云端电脑,它也需要操作系统,我这里选择基于 linux 内核发行的 debian,选择 Cen'tOS,Ubuntu 对服务器部署差别也不会很大,根据个人喜好

既然是系统,当然要设置登录密码,不过后续登录基本不会用到图形界面,使用 ssh 终端登录服务器

ssh 终端

使用服务器的服务,需要用到不同端口,例如 web http 服务是 80 端口,linux ssh 登录是 22 端口,如果要本地 ssh 登录远端服务器,还要开启服务器的 22 端口,一般服务器已经默认开启,在服务器页面-防火墙标签页可以看到端口开放情况

笔者用的终端是 FinalShell,服务器登录成功如下

我现在本地有一个前端项目,需要部署到服务器,方便浏览器中查看,应该怎么做呢,这里要提到 nginx

nginx

nginx 很强大,这里不深入探讨,目前我们只需要用到一点功能,请求转发,它可以监听服务器入口流量,根据 ip,端口,域名,将请求执行不同的服务,当然不用 nginx,我们也可以把前端项目放在服务器,在浏览器也可以访问到,这里就不做介绍

基本配置

在 Debian 中安装应用非常方便,使用命令即可安装

bash 复制代码
# 更新软件源
apt update

# 安装 nginx
apt install nginx

安装成功,查看 nginx 运行状态,active 表示正在运行

bash 复制代码
systemctl status nginx

nginx 的目录一般在/etc/nginx下,我们可以在/etc/nginx/conf.d下创建自己的配置文件,名称自定义方便区分即可

双击打开,设置规则

  • listen 80:拦截 web http 访问
  • server_name:服务器 ip 地址
  • root:/var/www/utils-web 项目文件根目录
  • index index.html index.htm 默认首页文件

其他照抄即可

对应 web 项目

设置完成,检查配置,重启 nginx 服务

bash 复制代码
// nginx 验证配置正确性
nginx -t

// 重启服务
systemctl restart nginx

一般到这步结束,在浏览输入服务器 ip,回车应该可以看到网站,如果访问异常,可以尝试以下几点排错

排错

端口

nginx 监听的是 80 端口,如果端口被其他服务占用,nginx -t配置验证就不通过。那么我们可以看一下腾讯云服务器里防火墙规则,80 端口是否放行,如果系统安装了防火墙,也要看防火墙端口规则

我这里安装了 ufw,查看配置规则

bash 复制代码
ufw status

文件权限

因为对文件权限的不了解,我就遇到了/var/www/utils-web不属于 root,导致页面一直无法访问,关于文件(夹)所属用户和用户组,可以从 finalshell 底部文件浏览器直观看到

https

当我们在浏览地址栏输入 ip 访问网页时候,有些浏览可能会提示

这就不得不提到 https,默认我们的请求都是 http 的,https 比 http 安全系数更高,配置有些后台服务,明确要求要使用 https(例如微信小程序),配置 https 还是很有必要的,这里我们申请腾讯云免费的 ssl 证书

域名和备案

但是这里有个问题,免费证书需要提供域名,我们还要去申请域名。阿里云和腾讯云都提供有域名服务,根据喜好选择即可。可以选择冷门后缀的域名,价格优惠不少

😱😱 如果是国内的网站,部署上线还要完成备案,备案跟域名也有关系,域名的备案跟服务器是绑定的,就是说域名在哪里备案,服务器也要在哪里购买,虽然说可以转移备案,毕竟麻烦不少,所以备案域名时需要注意,这跟域名在哪里买没关系

域名购买完后,就可以着手开始备案,我在阿里云买的域名,但是服务器在腾讯云,因此就在腾讯云备案,一般备案需要半个多月,中间腾讯客服人员会打电话询问一些网站情况,注意接听电话

ssl证书

提交免费 ssl 申请,很快就能获取免费的 ssl 证书,下载 nginx 证书配置文件

修改 /var/nginx/conf.d/ankkaya.conf的配置,把前面下载的 ssl 压缩包中的 .crt 和 .key 文件放到/etc/nginx/ssl目录下,如果没有这个目录,新建该目录,重启服务

配置中有新用到的 443 端口,服务器和系统内(如果有防火墙)也要添加 443 的规则

bash 复制代码
server { 
	listen 80;
	server_name ankkaya.top; # 你的服务器IP地址或域名
    return 301 https://$server_name$request_uri; # 重定向到 https
    location / { 
    root /var/www/utils-web; # 项目文件的根目录 
    index index.html index.htm; # 默认首页文件 
        try_files $uri $uri/ =404; # 尝试按顺序查找文件或目录,不存在则返回404
    }
}

server {
    listen 443 ssl; # https 端口
    server_name ankkaya.top www.ankkaya.top;

    ssl_certificate /etc/nginx/ssl/ankkaya.top_nginx/ankkaya.top_bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/ankkaya.top_nginx/ankkaya.top.key;

    # 其他配置项,如根目录、代理等
    location / {
        root /var/www/utils-web;
        index index.html index.htm;
    }
}

这时在浏览器输入 ip 已经无法访问网页,因为在 nginx 配置中,server_name 都配为了域名和子域名,但是输入域名也无法访问,这就要说到 DNS 解析,服务器只认 ip 地址,如果是域名,需要配置 DNS 解析,告诉浏览器去哪里获取资源

😱😱 域名在哪里购买,DNS 解析也要在对应平台配置,我的域名在阿里云买的,就要到阿里云配置 DNS

在浏览器输入域名地址ankkaya.top,就可以打开网站了

相关推荐
VX:Fegn08951 小时前
计算机毕业设计|基于springboot + vue毕业设计选题管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·课程设计
h***67371 小时前
springboot设置多环境配置文件
java·spring boot·后端
VX:Fegn08951 小时前
计算机毕设|基springboot+Vue的校园打印系统设计与实现
java·前端·javascript·vue.js·spring boot·后端·课程设计
Dawn111 小时前
Nginx相关
后端
SXJR1 小时前
CAP原则
java·后端·spring cloud·微服务
q***o3761 小时前
【Spring Boot】统一数据返回
java·spring boot·后端
开心猴爷1 小时前
Fiddler抓包工具详解,HTTPHTTPS调试、代理配置与接口分析实战教程
后端
Dwzun1 小时前
基于SpringBoot的共享单车调度系统【附源码+文档+部署视频+讲解)
java·数据库·vue.js·spring boot·后端·毕业设计·maven
青春男大1 小时前
用向导创建SpringBoot项目
java·spring boot·后端