阿里云服务器部署网站(图文详解)

一,准备工作

1.1,点击:注册阿里云账号

输入:账户名,登录密码,手机号。

image.png

1.2,域名注册和备案

详细请参考:阿里云域名购买流程和备案流程

1.3,准备服务器

详细请参考:阿里云服务器简介和采购流程

需要开放部分端口:在进入网络与安全-安全组,点击"配置规则",点击"手动添加"

80/80 8080 /8080 888/888 8888/8888

二、前后端不分离SpringBoot项目部署

2、宝塔面板相关

2.1、安装CentOS宝塔面板

远程连接个人阿里服务器

进入宝塔官网 www.bt.cn,进行下载:

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

运行命令后,宝塔面板会自动安装,期间你需要输入一个y,如下所示:

Do you want to install Bt-Panel to the /www directory now?(y/n):y

输入y,然后回车即可。

等待,大概2分钟左右,显示“Complete!”,即安装完毕!

注意:下载完成会出现有下面这样一段内容:"(一定要先复制保存下来)"

Complete!
Created symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service → /usr/lib/systemd/system/firewalld.service.
Created symlink /etc/systemd/system/multi-user.target.wants/firewalld.service → /usr/lib/systemd/system/firewalld.service.
success
==================================================================
Congratulations! Installed successfully!
==================================================================
外网面板地址: http://公网IP:8888/335fc27a
内网面板地址: http://172.27.86.45:8888/335fc27a
username: oild6mqk
password: 54922e3f
If you cannot access the panel,
release the following panel port [8888] in the security group
若无法访问面板,请检查防火墙/安全组是否有放行面板[8888]端口
==================================================================
Time consumed: 1 Minute!

Bt-Panel: http://公网ip:8888/随机安全入口
username: 随机用户名
password: 随机登录密码

2.2、面板相关设置

输入 http://公网ip:8888/随机安全入口

输入用户名和密码进行登录

进入首页弹窗推荐你安装相关软件(点击左侧栏中的推荐软件选择版本 点击极速安装进行安装) 需要安装很长一段时间…

点击面板设置:

修改安全入口(不修改临时的就会过期不安全)格式如:/mrkay

修改面板用户:自定义就行用于登录

修改面板密码:自定义就行用于登录

绑定宝塔账号(可绑定可不绑定)

安装软件之前一定要确保你的阿里云服务器中之前没有安装过Mysql、tomcat等系统环境软件,如果安装了一定要卸载干净再进行安装宝塔推荐软件,否则会安装失败,后期相对麻烦。(如果嫌卸载麻烦一种暴力方式:云服务器系统重置  教程见第6章-其他教程)
1、弹窗中推荐的软件可以安装也可以不进行安装,因为后期你可以在软件商店中单独进行安装.
2、弹窗中的极速安装和编译安装区别主要是编译安装的相对稳定但是安装时间也会相对较长.
3、如果"phpMyAdmin"软件的版本是4.4以上安装的php版本最好是70以上也不要太高,因为太低了后期使       用"phpMyAdmin"工具会出现问题;此工具是用来操作MySql的界面化工具,相当于SQLyog工具.
4、面板设置中的 安全入口、面板用户、面板密码 一定需要修改并且记录下来防止忘记
 8888 加入安全组放行  888放行

2.3、面板软件安装及环境配置

上面介绍了推荐软件的安装及面板相关设置之后这里还需要安装一些插件和其他软件以及java环境配置:

宝塔源码一键部署插件安装

Java的JDK环境配置(这里可以采用偷懒方式)

JDK环境是Java项目运行的基础,没有配置JDK环境Java项目是无法运行的。

宝塔面板在我们安装tomcat的时候会默认并自动给我们安装一个JDK并配置环境,tomcat7默认安装jdk7

tomcat8默认安装jdk8,所以我们可以直接安装tomcat即可。

安装完毕远程连接云服务器 键入 java -version 弹出相关信息证明JDK安装及配置完成

2.4、站点相关

创建站点的目的是为了让我们访问 域名:端口 就能访问我们部署的项目;

进入宝塔面板

点击添加站点

输入已经解析过的域名:端口 如: www.baidu.com:8088 如果不加端口默认使用的是80端口,没有域名可以使用

云服务器的公网ip:端口,如: 127.0.0.1:8088

添加备注(备注要见名知意 一般我们可以设置自己要部署的项目的名字)

ftp 和数据库可以先不进行创建其他保持默认 (如果要创建要和你项目的数据库名保持一致)

2.4.2、站点设置

站点设置主要是对已经添加的站点进行相关配置(这里主要是进行反向代理的配置)

点击已经添加的站点最右侧的设置连接进入设置界面

点击反向代理

点击添加反向代理

代理名称社会为你的项目名称即可

目标URL就是访问公网IP/域名之后会被转发到服务器中可以访问的ip:端口(这里我们使用127.0.0.1:端口即可,端口是80可以省略不写)其他保持默认,点击保存即可.

2.5、数据库相关

2.5.1 创建数据库

创建数据库是为了项目正常运行和效果数据展示做准备:

进入宝面板

点击 数据库–root密码 对root用户的密码进行修改

注意:一般修改为一个你项目中配置文件比较常用的密码就行

点击添加数据库

注意:这里的数据库名要和你项目中数据库名字一样就行(比如你项目中访问的数据库名字的blog 这里就写blog)

用户名一般也设置为你数据库名字就行,密码设置为root密码就行(为了方便记忆)

其他保持默认点击提交.数据库就创建完成

2.5.2 导入数据库表

数据库创建完成,接下来就是向云数据库中导入数据即可,将你window本地中的数据库导出为.sql文件保存到桌面上,进入宝塔面板–数据库–管理,就桌面生成的sql导入即可.

注意事项:

点击数据库管理连接或者PhpMyAdmin 页面打不开,可能原因有:PHP版本过低、PhpMyAdmin中设置的版本和PHP的版本不一致、888端口没有放行;(解决方案更新PHP版本为7.0以后版本、设置PhpMyAdmin版本和PHP版本一致、面板和云服务器都放行888端口、"如果以上方法都没有解决就直接卸载nginx重新安装,因为nginx的配置文件中有对PhpMyAdmin端口等信息的相关记录,当然你也可以选择修改,为了简单我是选择的重新安装nginx")

3、SpringBoot项目打包

3.1、配置文件修改

在打包SpringBoot的项目之前需要先对application.yml/application.properties文件进行修改
具体修改如下:
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    # 面板中mysql的端口没有修改这里就不需要修改,IP也是用localhost因为此配置文要进行上传,blog要和你面板中创建的数据库名保持一致
    url: jdbc:mysql://localhost:3306/blog?useUnicode=true&characterEncoding=utf-8
    username: root  # 宝塔面板中roo用户,一般为root
    password: ******  # 数据库中你设置的root密码
    
# 设置application的端口  注意:端口要和你设置站点的端口保持一致
server:
  port: 80

3.2、Maven插件打包项目

使用Maven插件打包项目为jar包
pom文件中引入maven插件
进行打包
//打包成jar包(若改为war包,则将jar改为war)
 <packaging>jar</packaging>
 <build>
    <!--设置jar包名字-->
    <finalName>demo</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <executable>true</executable>
            </configuration>
        </plugin>
    </plugins>
 </build>

4、宝塔面板上传项目相关

4.1、上传jar和配置文件

使用宝塔面板进行上传jar包和配置文件

进入宝塔面板

点击网站

点击站点的根目录,跳转到根目录文件夹

点击左上角的上传按钮上传jar包

或者

点击文件

在/www里面创建一个文件,我这里是javaweb

然后把你打包好的jar包上传进来

4.2、运行项目

1.查看以放行的端口

firewall-cmd --list-all

2.添加放行端口

firewall-cmd --permanent --add-port=8088(项目端口)/tcp
firewall-cmd --permanent --add-port=8080(Tomcat端口)/tcp
firewall-cmd --permanent --add-port=8888(宝塔web面板端口)/tcp

3.重启防火墙(每次添加都需重启)

firewall-cmd --reload

4.查看防火墙是否开启

systemctl status firewalld
Active 为开启状态

5.关闭防火墙

systemctl stop firewalld
inactive 成功关闭

6.运行项目

远程连接阿里云服务器使用cd命令进入到jar包所在根目录 或者 在宝塔文件里面点击终端执行命令

java -jar 包名字.jar

这个启动的话你关闭终端就不能继续访问了

7.使用 screen 工具进行解决

1.安装screen 执行命令----> yum install screen
2.进入/www/javaweb目录下执行
    利用screen-让jar包在后台运行
        screen java -jar demo-login.jar(你的jar包)

8.其他相关命令

查询端口,后面的端口号 /8089

netstat -nlp|grep 8089

image

[root@iZwz9g1c3fleimiwiop1hlZ ~]# netstat -nlp|grep 8888
tcp   0   0 0.0.0.0:8888   0.0.0.0:*   LISTEN   42416/python

停止端口,后面的是 pid/python

kill -9 [PID]

查询jar包:

ps aux|grep medicine.jar

输入上面的命令找到pid

杀死指定会话进程 执行命令----> kill -9 [进程号]

自动清理死去的进程 执行命令----> screen -wipe

5、项目遇到问题解决及优化

5.1、项目运行报错及解决

解决80端口占用问题:

netstat -lnp|grep 80   # 查看占用80端口的进程信息,主要看PID   
kill -9 [PID]          # 根据PID杀死进程

第二种优化解决方式:

## 第一种方式存在弊端:当我们解决了端口占用问题之后再次点击数据库--管理(或者PhpMyAdmin)发现又出现了之前的问题2.5.2中提到的页面不存在问题
## 优化解决
1,查看占用80端口的进程
netstat -lnp|grep 80
ps [pid]
#查看详细信息占用80端口是Nginx的master也就是说是Nginx默认使用的端口是80端口,如果我们杀死了Nginx进程那么PhpMyAdmin就没办法访问,如果让Nginx占用80端口使用80端口的项目就没法正常运行和访问.
2,修改Nginx的默认端口
 2.1 宝塔面板中点击软件商店--已安装  找到Nginx点击设置--点击配置修改  我们发现在配置的最后一行有
 include /www/server/panel/vhost/nginx/*.conf; 这样一句话  (这句是引入Nginx的conf配置文件) 而这些配置文件就是记录的我们宝塔面板中使用到Nginx的相关配置.
 2.2 根据目录(/www/server/panel/vhost/nginx)找到相关的配置文件,打开编辑,修改所有80端口为其他没有占用的端口并放行,并在宝塔和云服务器安全组中放行该端口,面板中重启Nginx或者重新加载配置即可。
 ## 上面2.2的步骤有点麻烦;我们还可以直接进行粗暴的优化处理:(不推荐)
 2.2 我们在2.1步骤中找到include /www/server/panel/vhost/nginx/*.conf;将此句直接注释掉变为
 "#include /www/server/panel/vhost/nginx/*.conf;"之后重启Nginx/重新加载配置即可.简单粗暴但是不推荐。(配置文件的定义都有自己的作用,注释掉之后该站点反向代理也将将失效,为了达到效果损失太多)
3,再次启动项目成功,访问PhpMyAdmin都能正常访问.

5.2、端口放行

28085       是项目的端口号,
3306        是Mysql端口号,
8888        是宝塔面板端口号
443         是HTTPS端口号,
80          是http端口号,
3389        是windows远程服务端口号,便于windows系统远程连接服务器
22          是ssh端口号。

二. 部署前后端分离Springboot+Vue

前置准备:

你要在阿里云服务器安装 mysql,jdk,tomcat,nginx这里不多说,直接部署

准备一个springboot+vue项目

1.1、配置数据库

在自己windows本机上开发完后,通过navicat等工具,直接给sql打包

image.png

选择结构和数据,获得相应的.sql文件后用通过navicat等工具,远程连接阿里云服务器,我这里是直接把之前的sql放到去上

image.png

1.2、Springboot打包

先去,改application.yml文件,连之前上传到服务器的数据库

image.png

再去,改pom.xml文件,改成jar包,设置jar名字,jar包名字可以默认不设置

image.png

上面文改好了就直接,打包成jar包,就不用多说了,直接package,

image.png

在target目录下找到jar包传到服务器上,我是传到/www/javaweb下

image.png

1.3、前端Vue打包

先去改一下vue.config.js文件

image.png

image.png

由于是vue写的,直接在控制台终端 npm run bulid即可,然后改一下dist里面的static文件路径

image.png

再把dist文件夹通过xftp传到服务器上,我是传到/www/wwwroot/dist上的

image.png

1.4、后端部署

进入到你jar包的位置:cd /www/javaweb/

启动:screen java -jar demo.jar(你的jar包)

1.5、前端部署

1.5.1、配置Nginx文件

首先到服务器上,进行安全组配置!十分重要!具体位置如下:

进去后配置规则,点击快速添加,添加80端口

然后利用xftp进入到nginx,放config文件的地方修改config文件

image.png

打开xshell 进入到:

cd /www/server/nginx/sbin

输入命令启动:

./nginx

查看是否启动:

ps -ef | grep nginx

image.png

关闭命令:./nginx -s stop 或者 kill -9 进程id

到这里你的springboot+vue已经部署完成了

注意:这里直接放问域名可能显示不了页面要加 /index.html 如下:

游览器输入:域名或者IP/index.html

image.png

完成!!!!!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【QT入门】 Qt自定义控件与样式设计之QPushButton实现鼠标悬浮按钮弹出对话框

往期回顾&#xff1a; 【QT入门】 Qt自定义控件与样式设计之qss选择器-CSDN博客 【QT入门】 Qt自定义控件与样式设计之QLineEdit的qss使用-CSDN博客 【QT入门】Qt自定义控件与样式设计之QPushButton常用qss-CSDN博客 【QT入门】 Qt自定义控件与样式设计之QPushButton实现鼠标悬…

观察者模式:实现高效事件驱动编程的策略

在软件开发中&#xff0c;观察者模式是一种关键的行为型设计模式&#xff0c;用于建立对象间的一种依赖关系&#xff0c;使得当一个对象改变状态时&#xff0c;所有依赖于它的对象都会得到通知并被自动更新。这种模式是事件监听和响应编程的基石。本文将详细介绍观察者模式的定…

【JAVA基础篇教学】第十篇:Java中Map详解说明

博主打算从0-1讲解下java基础教学&#xff0c;今天教学第十篇&#xff1a;Java中Map详解说明。 在 Java 编程中&#xff0c;Map 接口代表了一种键值对的集合&#xff0c;每个键对应一个值。Map 接口提供了一系列操作方法&#xff0c;可以方便地对键值对进行增删改查等操作。本…

【汇编】_Visual Studio2019写32位汇编

目录 第一步&#xff1a;创建新项目 1. 空项目—下一步 2. 选择位置—填写项目名—创建 第二步&#xff1a;项目生成依赖项 1. 右击项目名—生成依赖项—生成自定义 2. 选中masm—确定 第三步&#xff1a;创建源文件 1. 源文件—添加—新建项 2. 选择C文件—创建新文件…

数据库被rmallox勒索病毒加密,如何还原?

近年来&#xff0c;网络安全问题日益严峻&#xff0c;勒索病毒作为其中的一种恶意软件&#xff0c;已成为网络安全领域的一大难题。其中&#xff0c;rmallox勒索病毒以其高度的隐蔽性和破坏性&#xff0c;给不少企业和个人带来了严重损失。本文将从rmallox勒索病毒的特点、传播…

Unity-超级方便的Excel 读写插件

超级无敌棒棒糖&#x1f58c; &#x1f32d;功能介绍&#x1f355; Demo&#x1f333;准备一个数据类&#x1f333;准备一个Excel&#x1f333;导入Excel&#x1f333;行数据自动转换&#x1f333;导出到Excel &#x1f371;新增映射字段类型 &#x1f32d;功能介绍 &#x1f…

监控系统泛滥:CTO 面临的隐形成本危机

在信息技术飞速发展的今天&#xff0c;构建和维护现代化的数字系统变得日益复杂和关键&#xff1b;在这样的背景下&#xff0c;监控系统的作用变得尤为突出。正如业界广泛流传的一句经验之谈“无监控&#xff0c;不运维”所揭示的道理一样&#xff0c;对于任何具有一定复杂性的…

进程程序替换

文章目录 程序替换原理替换函数函数解释调用举例 程序替换原理 用新进程的代码和数据覆盖旧进程的代码和数据&#xff0c;没有创建新进程&#xff0c;用旧进程的壳执行了新进程。 站在被替换进程的角度&#xff1a;本质就是程序从磁盘加载到了内存。 怎么加载呢&#xff1f;…

【电控笔记6】电流回路+延迟效应

问题提出 数字控制系统的delay: 5.4节有介绍T0=0.5TS 低通滤波器的时间常数? 可用示例程序 m2 2 1b 如下图画出开环系统的伯德图进行比较,如图 2-2-4 所示,由于延迟组件会侵蚀系统的相位,因此从图可以看出,加入延迟效应后,q轴电流回路的相位裕度(Phase Margin) 从…

【数据结构】单链表(二)

目录 1.查找数据 2.指定位置插入和删除节点 2.1 指定位置之前插入节点 2.2 指定位置之后插入节点 2.3 删除指定位置节点 2.4 删除指定位置之后的节点 3.销毁链表 我们接着上一篇【数据结构】单链表&#xff08;一&#xff09;-CSDN博客 来继续实现单链表 1.查找数据 在…

c# wpf datagrid 简单试验

1.概要 datagrid 一个列表类的控件 2.代码 <Window x:Class"WpfApp2.Window3"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.mic…

关于 STM32WL LSE 添加反馈电阻后无法起振问题

1. 问题描述 客户调试 STM32WLE5JB 样机的时候遇到这样一个问题&#xff1a;在调试 LPUART&#xff0c;不打开外部时钟的时候&#xff0c;能够正常打印&#xff0c;若开启外部的 HSE 和 LSE 后就没有打印。 2. 问题确认 发现上述问题时&#xff0c;客户使用 STM32CubeMX 生成…

数字图像处理项目——模糊图像边缘检测算法设计及实现(论文/代码)

完整的论文代码见文章末尾 以下为部分内容 摘要 本研究旨在针对大脑核磁图像中的黑色腔体进行有效分割&#xff0c;以提供可靠的腔体定位和分析。为此&#xff0c;采用了三种常用的图像分割方法&#xff1a;8邻域区域生长法、Canny算子边缘检测和8邻域边界跟踪法。 首先&…

ES13:类的新增特性、最外层的await、at...

1-类的新增特性 类私有属性和方法&#xff1a;# class Person{// 不需要传参、一开始就需要初始化的&#xff0c;就可以在类的最外面直接声明这个成员state{a:1,b:2}constructor(name,age){this.namename;this.ageage;}}在属性和方法前加#表示私有 #obj{} #prest(){}静态成员…

数据结构--链式栈

一.链式栈的栈顶在哪里? 二.链栈的结构: typedef struct LSNode{ int data; struct LSNode* next; }LSNode ,*PLStack; //链栈的节点.由于栈顶在第一个数据节点,所以不需要top指针 三.链式栈的实现: //初始化LSNode* p (LSNode*)malloc(sizeof(LSNode));assert(p ! NULL)…

C语言调用Python

目录 1.直接调用python语句 头文件引用 2.调用无参有参函数 1、调用无参函数 1.建立nopara.py文件 2.使用c语言根据上面流程进行调用 2、调用有参函数 1.建立nopara.py文件 2.使用c语言根据上面流程进行调用 C语言调用python需要我们已经安装好了libpython3的 dev依赖…

【Shell语言学堂】数组练习题

数组练习 1、使用数组和循环实现冒泡排序2、将冒泡排序的代码重构为2个函数&#xff0c;2个关系是a函数调用b函数自定义数组参数&#xff1a; 3、声明一个存储的全整数数组&#xff0c;对其中的每一个值进行10处理4、对硬盘使用空间占比的排序5、对当前目录的文件大小进行排序 …

小型企业网络安全指南

许多小型企业刚刚起步&#xff0c;没有大公司所拥有的相同资源来保护其数据。他们不仅可能没有资金来支持多样化的安全计划&#xff0c;而且也可能没有人力或时间。 网络犯罪分子知道小型企业缺乏这些资源&#xff0c;并利用这些资源来谋取利益。遭受网络攻击后&#xff0c;小…

7、configMap

1、configMap是什么 类似与pod的配置中心&#xff0c;不会因为pod的创建销毁&#xff0c;相关配置发生改变 pod定义硬编码意味着需要有效区分⽣产环境与开发过程中的pod 定义。为了能在多个环境下复⽤pod的定义&#xff0c;需要将配置从pod定义描 述中解耦出来。 2、向容器中…

2024年MathorCup数模竞赛C题超详细解题思路

妈妈杯本次比赛报名队伍号高达12500&#xff0c;这也就意味着大概一万只队伍参加报名&#xff0c;仅仅在报名人数这一项&#xff0c;妈妈杯已经成为美赛国赛之后的第三大竞赛。C题作为本次竞赛最简单也最容易获奖的题目&#xff0c;本文将给大家带来手把手超详细解题思路。 注…