linux部署springboot项目_阿里云从0到部署Springboot项目

起因:

新购买了云服务器,发现又要从0开始配置又要开始一配置,记录一下方便后续参考。因为阿里云文档已经比较详细,本文可能会有大量链接跳转。 同时也为项目部署提供一个参考

开发环境:

  1. 阿里云服务器ecs,操作系统(centos_7)
  2. 本人系统环境(macOS Catalina v10.15.2)
  3. develop IDE: intellij IDEA

实现:

  1. nginx代理

2. 使用Alibaba Cloud Toolkit快速部署 springboot项目

1.连接ECS(此步可以忽略,可以直接看第二步SSH连接)

  1. 前6步和此文相同
连接ECS实例_个人版快速入门_云服务器 ECS-阿里云​help.aliyun.com
baf343a58e659d516191b12b6d954844.png

2. 第7步发现root用户的密码并不清楚,这时候我们在实例列表里选择重置实例密码

重置实例登录密码_管理实例_实例_云服务器 ECS-阿里云​help.aliyun.com
84ba6a59f0e70df0da335ecd38eabdc8.png

3. 现在可以通过远程连接,然后使用root用户进行登录操作了。

2.SSH连接

为了安全和便捷性,推荐适用SSH连接服务器进行操作。
SSH密钥对概述_SSH密钥对_安全_云服务器 ECS-阿里云​help.aliyun.com
  • 1.根据文档创建密钥对
创建SSH密钥对_使用SSH密钥对_SSH密钥对_安全_云服务器 ECS-阿里云​help.aliyun.com
  • 2.创建完成后绑定密钥对
绑定SSH密钥对_使用SSH密钥对_SSH密钥对_安全_云服务器 ECS-阿里云​help.aliyun.com
  • 3.添加ssh安全组规则

95c8d213980a4b4c9518cac307092db2.png

4.连接ECS

使用SSH密钥对连接Linux实例_连接Linux实例_连接实例_实例_云服务器 ECS-阿里云​help.aliyun.com
a529bd9e473561dfb44a48b9c0177c13.png

3. 新建非root用户

root用户权限过大,我们登录系统后,一般需要新建一个用户来避免权限问题

1.使用root用户连接ecs

ssh -i [.pem私钥文件在本地机上的存储路径] root@[公网IP地址]

2.创建user

adduser UserName
passwd UserName

3. 添加用户到sudo group

usermod -aG wheel UserName

4. 切换用户

su - UserName

5. 测试sudo权限,需要输入密码

sudo ls -la /root

4.非root使用ssh登录ecs

  1. 使用root用户连接ecs
  2. 创建 .ssh文件夹
mkdir /home/username(你新建的用户名)/.ssh

3. 拷贝

cp -rf /root/.ssh/* /home/username/.ssh/

4.修改权限

chown -R username:username /home/username/.ssh

5. 可以使用非root用户测试能否连上ecs

ssh -i [.pem私钥文件在本地机上的存储路径] username@[公网IP地址]

6.简化ssh登录, macOSconfig 位于~/.ssh/ 目录下,cd进入该目录,然后按照文档修改config 文件,

请参考链接内容: (通过config文件配置)
使用SSH密钥对连接Linux实例_连接Linux实例_连接实例_实例_云服务器 ECS-阿里云​help.aliyun.com
a529bd9e473561dfb44a48b9c0177c13.png

5. 安装OpenJDK

  1. 更新yum
sudo yum -y update

2. 安装

sudo yum install java-1.8.0-openjdk

3. 版本验证

$ java -version
openjdk version "1.8.0_242"
OpenJDK Runtime Environment (build 1.8.0_242-b08)
OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)

6. 安装Nginx

  1. 添加repository
sudo yum install epel-release

2. 安装

sudo yum install nginx

3. 启动

sudo systemctl start nginx

4. 在ECS添加安全组规则

423d1f1e33d1986929adb87c953c58af.png

5. 访问 ,可以看到以下页面

http://公网IP(或域名)

b910f36eea08e74cfe7e96fac2379b60.png
注意:这时候你重启了ecs,nginx服务不会自动启动

6. 在ecs启动/重启的时候自动启动nginx服务,可自行重启然后访问测试

sudo systemctl enable nginx

7. 添加系统服务

我们希望我们的项目上传到云服务器后能够自动运行,并且能在服务器开机的时候启动服务
  1. 登入ecs, 在/srv 目录下创建 example文件夹用于部署项目,注意权限问题
cd /srv
sudo mkdir example

2. 在/etc/systemd/system下添加example.service 文件,文件内容如下 ,完整文件在文章末尾github中有

[Unit]
Description=example api service

[Service]
ExecStart=/usr/bin/java -Xmx256m -jar /srv/example/example.jar
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

3. 注册服务

systemctl daemon-reload
systemctl enable example.service

4.相关命令,这时候启动服务会失败,我们还没有上传我们的项目

systemctl start example
systemctl stop example
systemctl restart example
systemctl status example

8. 上传springboot项目到ecs(代码在文末链接中)

  1. IDEA中安装alibaba-cloud-toolkit插件

2. 配置Access key id & secret, 参考以下链接

http://toolkit.aliyun.com/eclipse/#AquireAccessKey​toolkit.aliyun.com

bd752723d01944f3d4d9791c0c56f043.png

3. 第二步配置完成后,IDEA中add new configuration

1.注意target Directory是7.1中创建的文件夹 /srv/example
2.command为jar包上传后执行的命令, systemctl restart example

f9d6b125ee733ba8547b2f4010988cd8.png

4. 额外需要注意的是我这边pom.xml中添加了<finalName>example</finalName>确保打包出来的jar包名称为example.jar

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
        <finalName>example</finalName>
    </build> 

5. 配置完成后点击运行,IDEA输出如下信息

[INFO] Deployment File is Uploading...
[INFO] IDE Version:IntelliJ IDEA 2019.3
[INFO] Alibaba Cloud Toolkit Version:2019.12.1
[INFO] Start upload example.jar
[INFO][##################################################] 100% (17556130/17556130)
[INFO] Succeed to upload, 17556130 bytes have been uploaded.
[INFO] Upload Deployment File to OSS Success
[INFO] Target Deploy ECS: { ip / ip }
[INFO] Command: { source /etc/profile; cd /srv/example; systemctl restart example }
    Tip: The deployment package will be temporarily stored in Alibaba Cloud Security OSS and will be 
 deleted after the deployment is complete. Please be assured that no one can access it except you.

[INFO] current ecs os is {linux}
[INFO] Create Deploy Directory Success. 

[INFO] Deployment File is Downloading...
[INFO] Download Deployment File from OSS Success 

[INFO] Result: 

       

[INFO] Finished at: 2020-02-07T06:41:02Z
[INFO] File Upload Total time: 15.345 s

6. 登入ECS执行命令systemctl status example 可以看到服务已成功运行

 systemctl status example -l
● example.service - example api service
   Loaded: loaded (/etc/systemd/system/example.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2020-02-07 14:41:02 CST 

9.Nginx配置,访问API接口

  1. 前一步已经成功部署了springboot项目,但目前无法通过外网访问(运行在8080端口),我们需要配置nginx
nginx 配置文件路径 /etc/nginx/nginx.conf 中添加如下 ,完整文件在文章末尾github中有
 location /greeting {
            proxy_set_header Host $host;
        	proxy_set_header X-Real-IP $remote_addr;
        	proxy_pass http://localhost:8080;
   }

2. 重启nginx服务

systemctl restart nginx

3. 访问api 公网ip/greeting 可以正常访问

2f43e01ba3dd563bd17fa33063d591ab.png

10. 安装mysql(8.0)

  1. 添加yum repo
sudo rpm -Uvh https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm

2. 安装 mysql server

sudo yum install mysql-community-server

3.启动mysql服务

sudo systemctl start mysqld.service

4. 查看mysql运行状态

sudo systemctl status mysqld.service

5. 查看root用户初始化密码

sudo grep 'temporary password' /var/log/mysqld.log

6. root用户登入

mysql -uroot -p'上一步显示的密码' //这里最好带上单引号'',密码中可能包含bash无法识别的字符

7. 修改密码(需要大小写字母数字+字符,不然可能提示安全性不够)

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';

8. 如果需要通过公网连接mysql,可以参考下链(同时需要设置阿里云安全组规则)

公网访问mysql​stackoverflow.com

9. 对mysql进行备份

mysql备份​www.linode.com

----------------------------------

x.项目代码,参考资料

  1. github
项目参考代码&配置文件​github.com

2. reference

Spring Boot application as a Service​stackoverflow.com mysql​dev.mysql.com mysql step by step​www.mysqltutorial.org
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值