从零开始部署一个网站详细图文教程——腾讯云的服务器、SSL证书,阿里云的域名,七牛云的对象存储、CDN等

文章目录

  • 前期准备
  • 连接服务器
  • 配置Golang环境
  • 安装配置MySQL
  • 安装配置Redis
  • 安装配置Nginx
  • 安装Node
  • 域名解析
  • SSL证书下载
  • 启动项目
  • 配置CDN加速
  • 总结

前期准备

云服务器(必备)、已经备案的域名(必备),已签发的SSL证书(可以算必备,网站一般要求建立https连接)。

云服务器和域名需要去相应的云服务商获取,比如阿里云、腾讯云、华为云等等。

连接服务器

服务器使用的是腾讯云的,因为老板要求买便宜的。系统选用Ubuntu 20.04,拿到服务器后先重置密码,方便后面进行SSH远程来连接。

image-20231028161102346

去防火墙界面,打开22端口和3306端口,分别为SSH连接和MySQL远程连接做准备。

image-20231129203932846

笔者使用Finalshell作为远程连接工具,输入主机,用户名,密码等建立连接。阿里云的用户名一般为root,腾讯云的用户名一般是ubuntu。(说法不绝对)

image-20231129204158114

如果未连接成功,要么用户名或密码错误,要么主机ip地址(请填公网)错误,要么22端口没开。

如下图所示,我已正确连接。

image-20231028161334853

笔者在下包的时候觉得腾讯云的镜像源太慢,所以通过如下操作换成了阿里的镜像。

cd /etc/apt/sudo vim sources.list

image-20231129205016495

配置Golang环境

详细的安装及配置命令见下面的代码块:

# 下载 Go 1.20.4 版本的 Linux AMD64 包
wget https://golang.google.cn/dl/go1.20.4.linux-amd64.tar.gz# 将下载的包解压到 /usr/local 目录
sudo tar -C /usr/local -xzf go1.20.4.linux-amd64.tar.gz# 删除下载的压缩包
rm go1.20.4.linux-amd64.tar.gz# 打开用户配置文件 .bashrc
sudo vim ~/.bashrc# 设置 Go 相关的环境变量
export GOPATH=/usr/local/go/GOPATH
export GOROOT=/usr/local/go
export GOPROXY=https://goproxy.cn
export GO111MODULE=on
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin# 刷新配置文件
source ~/.profile# 创建 GOPATH 目录并设置权限(不然的话,go get下包的时候显示权限不够,不能下载)
sudo mkdir /usr/local/go/GOPATH
sudo chmod 777 /usr/local/go/GOPATH

查看 Go 环境变量:

go env

出现以下内容代表Golang环境配置成功:
image-20231129205732165

安装配置MySQL

# 更新包列表
sudo apt update# 安装 MySQL 服务器
sudo apt install mysql-server# 检查 MySQL 服务器状态,如果是active表示安装成功。
sudo systemctl status mysql# 以管理员身份进入 MySQL 数据库
sudo mysql# 在 MySQL 中创建用户 'user',允许任何主机 '%' 使用密码 '123456' 连接
CREATE USER 'user'@'%' IDENTIFIED BY '123456';# 给用户 'user' 赋予在所有数据库上的所有权限,并且具有 GRANT OPTION(授权他人的权限)
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' WITH GRANT OPTION;# 刷新权限设置
FLUSH PRIVILEGES;# 打开 MySQL 配置文件进行编辑
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf# 将绑定地址从默认的 127.0.0.1 更改为允许所有地址 0.0.0.0
#bind-address            = 127.0.0.1
bind-address            = 0.0.0.0# 重启 MySQL 服务以应用更改
sudo service mysql restart

使用Navicat来连接MySQL,输入主机地址,刚新建的MySQL的用户名和密码,点击测试连接,即可成功。

image-20231129210319524

安装配置Redis

# 更新包列表
sudo apt update# 安装 Redis 服务器
sudo apt install redis-server# 检查 Redis 服务器状态,active代表安装成功。
sudo systemctl status redis-server#如果要远程连接Redis可进行下列操作
# 打开 Redis 配置文件进行编辑
sudo vim /etc/redis/redis.conf# 将绑定地址从默认的 127.0.0.1 更改为允许所有地址 0.0.0.0
#bind 127.0.0.1 ::1
bind 0.0.0.0 ::1# 重启 Redis 服务以应用更改
sudo service redis-server restart

安装配置Nginx

# 更新包列表
sudo apt update# 安装 Nginx 服务器
sudo apt install nginx# 检查 Nginx 服务器状态,如果是active,代表安装成功
sudo systemctl status nginx# 确保防火墙配置允许 HTTP(80)和 HTTPS(443)端口的流量
# 如果使用 UFW,启用 'Nginx Full' 配置文件,其中包含了这两个端口
sudo ufw allow 'Nginx Full'# 查看防火墙状态,确认规则已生效
sudo ufw status# 防火墙状态显示如下:
# Status: active
# To                         Action      From
# --                         ------      ----
# 22/tcp                     ALLOW       Anywhere
# Nginx Full                 ALLOW       Anywhere
# 22/tcp (v6)                ALLOW       Anywhere (v6)
# Nginx Full (v6)            ALLOW       Anywhere (v6)

刻印通过访问你的云服务器的公网IP,如果Nginx启动成功,应该会出现下面的界面:
image-20231129211402243

安装Node

如果前端启动需要npm相关工具的话,根据下列操作安装nodejs

# 安装 Node.js
sudo apt-get install nodejs# 安装 npm(Node.js 包管理器)
sudo apt-get install npm# 查看安装的 Node.js 版本
node -v# 查看安装的 npm 版本
npm -v

域名解析

域名使用的是阿里云的,添加一条A记录,指向你的服务器的公网IP即可。

image-20231129211949821

SSL证书下载

我是去腾讯云弄的SSL证书,当然你也可以去阿里云,都可以申请免费的SSL证书,而且都可以申请好几张。

给你已经备案的域名申请SSL证书后,会有一定的审核验证,一般会让你在域名解析处添加一条用于验证的记录,这个比较简单,按照腾讯云给的流程走就行了,easy~

证书签发后,就可以点击下载按钮了。

image-20231129212515492

选择Nginx类型的证书:

image-20231129212602262

打开后有四个以你已经备案的域名开头的四个文件:
image-20231129212755546

将以crtkey结尾的两个文件复制到你的后端项目的根目录上。

启动项目

首先将你的前后端项目都打包放到服务器上,专业版的Finalshell可以远程传输文件,当然Goland专业版也可以。

项目目录大概长下面的样子:
image-20231129213923742

可以看到我编写了Makefile,可以通过make run来启动后端,当然也可以通过一般的命令:go run main.go。后端服务跑在8080端口上。

然后就是编写nginx的配置文件,这是很关键的一步。

下面奉上我的nginx.conf文件:

user root;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;events {use epoll;worker_connections 5000;# multi_accept on;
}http {server {#SSL 默认访问端口号为 443listen 443 ssl;#请填写绑定证书的域名,例如xxx.cnserver_name xxx.cn;#请填写证书文件的相对路径或绝对路径,由于nginx配置文件和证书文件都在项目根目录下,这里只需要填文件名即可ssl_certificate xxx.cn_bundle.crt;#请填写私钥文件的相对路径或绝对路径ssl_certificate_key xxx.cn.key;ssl_session_timeout 5m;ssl_protocols TLSv1.2 TLSv1.3;#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;ssl_prefer_server_ciphers on;#反向代理配置,指向后端的服务端口  
location /api/ {proxy_pass http://localhost:8080;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}#前端相关配置root /code/project/web;index index.html;location / {try_files $uri $uri/ /index.html;}location /static/ {alias /code/project/web/static/;}}#下面的不用管,弄上就行sendfile on;tcp_nopush on;tcp_nodelay on;keepalive_timeout 65;types_hash_max_size 2048;client_max_body_size 20m;include /etc/nginx/mime.types;default_type application/octet-stream;ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLEssl_prefer_server_ciphers on;access_log /var/log/nginx/access.log;error_log /var/log/nginx/error.log;gzip on;include /etc/nginx/conf.d/*.conf;include /etc/nginx/sites-enabled/*;
}

然后就是重启nginx,我喜欢先kill掉原来的nginx,再重新启动。

ubuntu@VM-16-9-ubuntu:~$ ps -ef |grep nginxubuntu   1109610 1040889  0 21:56 pts/0    00:00:00 grep --color=auto nginx
root     3942060       1  0 Nov26 ?        00:00:00 nginx: master process nginx -c /code/project/nginx.conf
root     3942061 3942060  0 Nov26 ?        00:00:19 nginx: worker process
root     3942062 3942060  0 Nov26 ?        00:00:00 nginx: worker processubuntu@VM-16-9-ubuntu:~$ sudo kill 3942060

然后通过下面的命令启动nginx,注意后面跟你的nginx.conf的路径,建议绝对路径。

sudo nginx -c /code/project/nginx.conf

当然你也可以用更优雅的方式重启nginx

接下来当访问你的域名时,应该就能看到网页啦~

image-20231129220141820

配置CDN加速

如果你的项目用到了对象存储,可以配一个加速域名。

我这个项目对象存储使用的是七牛云,按图示进行操作:
image-20231129220648708

你同样需要使用已经备案的域名,还有该域名配套的SSL证书:
image-20231129220901549

我的网站域名是xxx.cn,我的加速域名是www.xxx.cn

然后它会给你一个域名,要求你在你的加速域名处添加一条CNAME解析记录,它给你的域名可能长这样:www-xxx-cn-idvn69p.qiniudns.com

你去域名解析处添加这条记录即可:
image-20231129221438054

回到七牛云界面,点击刷新域名,如果显示已配置,则代表域名解析成功。状态可能会显示处理中,必须要等到它变为成功,你才可以使用它。

然后给你的存储空间添加外链域名,这样你的CDN加速域名就配好啦!

image-20231129221829492

总结

在部署网站这方面,我也算是第一次部署这么一个需要上线的项目,遇到了很多报错和苦难,折腾了很久,中间有多次查阅各方面的资料,学习到了很多内容,部署好后非常有成就感。给我印象最深的点就是要学好计算机网络,这样你就能比较清楚明白每一步在干什么。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/184089.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ssh-keygen(centos)

A—免密登陆—>B (1)A 机器,通过命令”ssh-keygen -t rsa“, 生成id_rsa,id_rsa.pub authorized_keys:存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥 id_rsa : 生成的私钥文件 id_rsa.pub : 生成的公钥文件 know_hosts : 已知的主机公钥…

index函数

字符串的index函数可以查找字符串里(某范围内)某子串出现的位置(从左)。字符串的index函数的语法格式: S.index(sub [,start [,end]]) -> int 函数的返回值为整形,即位置。sub为要查找的子串,start参数的含义是从S字符串的第start位置开始…

25. 深度学习进阶 - 权重初始化,梯度消失和梯度爆炸

文章目录 权重初始化梯度消失与梯度爆炸 Hi,你好。我是茶桁。 咱们这节课会讲到权重初始化、梯度消失和梯度爆炸。咱们先来看看权重初始化的内容。 权重初始化 机器学习在我们使用的过程中的初始值非常的重要。就比如最简单的wxb,现在要拟合成一个yha…

【计算机网络】虚拟路由冗余(VRRP)协议原理与配置

目录 1、VRRP虚拟路由器冗余协议 1.1、协议作用 1.2、名词解释 1.3、简介 1.4、工作原理 1.5、应用实例 2、 VRRP配置 2.1、配置命令 1、VRRP虚拟路由器冗余协议 1.1、协议作用 虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)是由IETF…

Linux学习笔记 CenOS6.3 yum No package xxx available

环境CenOS [roothncuc ~]# cat /etc/issue CentOS release 6.2 (Final) Kernel \r on an \m安装gcc的时候提示没有包 [roothncuc ~]# sudo yum install gcc gcc-c libstdc-devel Loaded plugins: refresh-packagekit, security Setting up Install Process No package gcc a…

temu的产品发布后在哪里显示

temu是一款备受瞩目的产品,其发布后引起了广泛的关注。但是,很多人对于temu产品发布后在哪里显示存在疑惑。本文将深入探讨temu产品的展示方式和关键特点,帮助读者更好地了解temu产品在发布后的展示位置。 先给大家推荐一款拼多多/temu运营工…

【报错栏】(Vue) Invalid handler for event “click“: got undefined

Property or method "add" is not defined on the instance but referenced during render. 翻译: 属性或方法“add”未在实例上定义,但在渲染期间引用。 Invalid handler for event "click": got undefined 翻译: …

用bat制作图片马——一句话木马

效果图 代码 ECHO OFF TITLE PtoR MODE con COLS55 LINES25 color 0A:main cls echo.当前时间:%date% %time% echo.欢迎使用图片马制作工具 echo.请确保图片和php在同一路径下 echo.echo 请将图像文件拖放到此窗口并按 Enter: set /p "imagefile&q…

肖sir__搭建环境报错:com.alibaba.druid:type=DruidDataSourceStat异常

报错现象: 解决方案: 同一个服务器配置多个tomcat,而这些tomcat里边的项目配置的数据库连接池都是用alibaba.druid。下面说下我的解决过程,首先,修改tomcat bin目录下的catalina.sh,添加如下代码: 代码如…

Siemens S7-300主站Profibus网络设定以及OMRON设定

1.100L流量秤,历史值,D3426,D3427,7位 2.次数,D166,D177,5位 3.PROFIBUS地址03# 1.FA1,历史值,D3426,D3427,6位 2.包数区,D166,D177,5位 3.PROFIB…

前端:实现二级菜单(点击实现二级菜单展开)

效果 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width, i…

【趣味篇】Scratch之windows11系统

【作品展示】windows11系统 操作&#xff1a;点击小绿旗进入windows11主页面&#xff0c;不仅是能打开浏览器&#xff0c;还可以进行背景切换等功能。

大数据——一文详解数据仓库概念(数据仓库的分层概念和维度建模详解)

1、ods是什么&#xff1f; ods层最好理解&#xff0c;基本上就是数据从源表拉过来&#xff0c;进行etl&#xff0c;比如MySQL映射到Hive&#xff0c;那么到了Hive里面就是ods层。ods全称是 Operational Data Store&#xff0c;操作数据存储——“面向主题的”&#xff0c;数据…

突破界限:R200科研无人车,开辟研究新天地

提到科研无人车&#xff0c;大家可能首先想到的是其在自动驾驶和其他先进技术领域的应用。然而&#xff0c;随着科技的不断进步&#xff0c;科研无人车已经在智慧城市建设、商业服务、地质勘探、环境保护、农业技术革新、灾害应急和自动化服务等多个领域发挥着至关重要的作用。…

Linux MTR(My TraceRoute)command

Internet上有许多小型网络测试工具:Ping、Traceroute、Dig、Host等。 但是&#xff0c;这些工具的功能都比较单一。今天会给大家分享一个包含ping和traceroute功能的工具&#xff1a;MTR 文章目录 什么是MTR&#xff1f;MTR可以提供哪些功能Linux MTR可用选项Linux MTR用法推荐…

【UGUI】事件侦听EventSystem系统0学

前言介绍 EventSystem是Unity UGUI中的一个重要组件&#xff0c;用于处理用户输入事件&#xff0c;如点击、拖拽、滚动等。它负责将用户输入事件传递给合适的UI元素&#xff0c;并触发相应的事件回调函数&#xff08;就是你想要做的事情&#xff0c;自定义函数&#xff09;。 …

FPGA程序执行相关知识点

1.目前&#xff0c;大多数FPGA芯片是基于 SRAM 的结构的&#xff0c; 而 SRAM 单元中的数据掉电就会丢失&#xff0c;因此系统上电后&#xff0c;必须要由配置电路将正确的配置数据加载到 SRAM 中&#xff0c;此后 FPGA 才能够正常的运行。 常见的配置芯片有EPCS 芯片 &#x…

最新报告!11月美国市场的“遥遥领先”来了,该爆的单总会来!

今年周期最长的大促节点已接近尾声&#xff0c;美区市场的11月份的商品销售战绩已全面来袭&#xff1a; 保健类目竟弯道超车&#xff0c;交出了将近翻倍的成绩单&#xff1b;美妆个护、女装与女士内衣等“她经济”类目持续高涨且“辣眼”单品不断&#xff1b;家居大类目下的市…

JenKins快速安装与使用,Gitlab自动触发Jenkins

一、JenKins 0.准备&#xff0c;配置好环境 1&#xff09;Git&#xff08;yum安装&#xff09; 2&#xff09;JDK&#xff08;自行下载&#xff09; 3&#xff09;Jenkins&#xff08;自行下载&#xff09; 1.下载安装包 进官网&#xff0c;点Download下方即可下载。要下…

使用netconf配置华为设备

实验目的&#xff1a; 公司有一台CE12800的设备&#xff0c;管理地址位172.16.1.2&#xff0c;现在需要编写自动化脚本&#xff0c;通过SSH登陆到设备上配置netconf协议的用户名&#xff0c;密码以及netconf服务&#xff0c;并且通过netconf协议将设备的loopback0接口IP地址配…