如题,本文旨在记录自己从开发到部署一个项目的过程中遇到的问题和解决方案,也可以作为下一次开发部署的参考。因为这个文档是之后写的,可能细节上会有点偏差,欢迎指正。
阿里云云翼计划
这里购买的是阿里云的云服务器ECS(学生优惠购买需要完成认证),相对于轻量应用服务器来说,可操作空间更大,权限更多一些。
在购买过程中,有需要设置实例登录用户的用户名和密码,用户名默认root就可以,一定要记住密码,后面连接服务器需要用到。
购买之后,可以在阿里云 =>云服务器ecs => 实例和镜像 => 实例 中找到自己购买的服务器。
这里的公网地址就是可访问的网址,你在本地ssh连接时用的是这个ip地址,网站部署好后访问也是这个网址。
本地(Win10)连接服务器建议使用Xshell(家庭与教育版免费),上传下载文件都比较方便,也可使用PuTTY(SSH客户端)+WinSCP(上传下载文件)。这里使用Xshell做示例。
打开Xshell
2. 点击用户身份验证,填写登录用户的用户名和密码,这里的用户名和密码就是你购买服务器时设置的。
4. 点击确认,初次登录会弹出提示你保存ssh密钥的提醒框,选择保存就好了。
连接成功后,需要先更新一下软件源,然后安装mysql。
通过安装过程,将被要求为MySQL服务器的root用户输入密码,重新输入密码以确认并按**[Enter]** 。
apt-get update
apt-get install mysql-server mysql-client;
本地访问mysql测试
mysql -uroot -p****(****是安装时你设置的root密码)
参考BOLG
mysql默认是只允许本地主机访问127.0.0.1,并关闭了远程连接,所以安装之后需要打开远程连接,并修改配置允许其他ip访问。
mysql -uroot -p****
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
# % 表示MySQL允许在任何IP连接当前实例
cd /etc/mysql/mysql.conf.d/
sudo vim mysqld.cnf
注释掉 bind-address = 127.0.0.1
这一行。使得任何一个ip都可以连接Mysql服务。
需要在阿里云服务台开放相应端口
阿里云的服务器设置了安全组规则来限制ecs服务器的ip,端口访问策略。因此需要修改。
登录阿里云 => 网络与安全 => 安全组
端口范围选择 3306,
参考BLOG
参考 BLOG1 BLOG2
打包分为两种,一是打包成war包使用tomcat服务器运行,二是打包成jar包直接执行。由于项目使用Springboot,其中内置了tomcat。所以直接打成jar包运行比较方便。
在项目目录中执行以下命令:
cd 项目跟目录(和pom.xml同级)
mvn clean package
## 或者执行下面的命令
## 排除测试代码后进行打包
mvn clean package -Dmaven.test.skip=true
打包完成后 jar 包会生成到 target 目录下,命名一般是 项目名+版本号.jar
启动 jar 包命令
java -jar target/spring-boot-scheduler-1.0.0.jar
这种方式,只要控制台关闭,服务就不能访问了。下面我们使用在后台运行的方式来启动:
nohup java -jar target/spring-boot-scheduler-1.0.0.jar &
也可以在启动的时候选择读取不同的配置文件
java -jar app.jar --spring.profiles.active=dev
这一我有尝试过,但是因为依赖关系的问题,子模块一直打包失败。需要再尝试一下。
参考 BLOG
前期准备
修改本地地址为服务器ip地址
打包项目为静态文件
npm run build
打包完成后可以在 /static
文件夹下找到 /dist
文件夹
把所需的文件上传到服务器上
Xshell 方式
上传(本机 => 服务器)指令为: rz
下载(服务器 => 本机)指令为: sz
可直接输入以下命令指定项目在对应端口在后台执行 ,
# --server.port=8090指定端口
nohup java -jar xxx.jar --server.port=8090 &
同时相应的日志会默认输出到nohup.out中,可以查看该文件来查看相应的log。
docker中拉取nginx 镜像
docker pull nginx
创建dockerfile文件
FROM nginx
COPY lab4_fronted/ /usr/share/nginx/html/
创建vue应用镜像
# -t 是给镜像命名 . 是基于当前目录的Dockerfile来构建镜像
docker build -t lab4_fronted .
查看镜像
docker images
创建容器
docker run --name mini -p 8080:8080 lab4_fronted
进入容器修改nginx配置做代理转发
待写
java -jar mini-app-0.0.1-SNAPSHOT.jar
eg:--spring.profiles.active=prod
,指定生产环境的配置文件在项目目录下创建Dockerfile文件。指定基础镜像为java8,复制jar包进去,配置执行的命令。
FROM java:8
COPY target/mini-app-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
在命令行中进入项目目录,执行构建镜像命令
docker build -t mini-app:1.0 .
-t指定镜像名称
最后不能漏掉一点,否则出错
构建成功后创建容器
docker run --name mini -p 8081:8081 mini-app:1.0
--name指定容器名称
-p指定端口映射
容器创建成功后默认启动,下面是停止和启动容器命令
docker stop mini
docker start mini
查看运行日志
docker logs mini