Эта статья является подразделом фреймворка персональной разработки SpringBoot 2.1, сначала прочтите ее.Фреймворк персональной разработки версии SpringBoot 2.1Прочтите эту статью еще раз
Адрес бэкенд-проекта:Версия SpringBoot 2.1 среды разработки персональных приложений
Адрес фронтенд проекта:ywh-vue-admin
Адрес предварительного просмотра:www.zandy.top
Подготовить
Перед формальным развертыванием на сервере внесите некоторые изменения в проект и установите на сервер необходимое программное обеспечение, такое как mysql, redis, nginx и т. д., поскольку оно запускается с помощью Docker, поэтому вам также необходимо установить Docker.
Среда развертывания:
- Облачный сервер Alibaba (Centos7)
- Установите докер в Linux:Установка Docker CE под centos7
- Linux установить mysql8.0:докер установить mysql 8
- Установите Redis в Linux:докер установить Redis
- Установите Nginx в Linux:докер установить nginx
Поскольку наш бэкэнд открыт на порту 8082, нам нужно открыть порт 8082 в группе безопасности Alibaba Cloud.
Оптимизируйте серверные проекты
В проекте возникли некоторые ошибки при упаковке. Я исправил это, так что возьму это здесь и не буду сосредотачиваться на записи. Если это мой проект клона, достаточно сразу упаковать и развернуть.
- Непроверенные или небезопасные операции используются в .java с использованием IDEA. Примечание. Для получения подробной информации перекомпилируйте с параметром -Xlint:unchecked.
В классе BaseController общего модуля тип возвращаемого значения не определен, это связано с тем, что это общий базовый контроллер, поэтому тип возвращаемого значения может быть любым, компилятор считает его небезопасным, поэтому он также отображается при упаковке. чтобы избежать предупреждения, добавьте в класс следующую аннотацию, чтобы компилятор не проверял.
@SuppressWarnings("unchecked")
В классе RedisCacheConfig модуля кэша есть ссылка на добавление универсального типа, и новое предупреждение выдается без универсального типа.
RedisTemplate<String, Object> template = new RedisTemplate();
# 修改为
RedisTemplate<String, Object> template = new RedisTemplate<>();
-
Удалите классы запуска и тестовые классы других модулей, кроме основного модуля.
-
Удалите файлы pom других модулей, кроме основного модуля.< build >Этикетка
Оптимизируйте интерфейсные проекты vue
После открытия внешнего пакета на главной странице появится пустая страница. Это связано с тем, что файлы css и js не могут быть найдены из-за проблемы с путем. Измените config->index.js в
# /代表的是根目录
assetsPublicPath: '/'
# 修改为当前目录
assetsPublicPath: './'
Об ошибке на рисунке ниже сообщалось в сборке npm run, по информации версия не совпадала.
- Измените package.json вhtml-webpack-plugin": "^4.0.0-alphaзаhtml-webpack-plugin": "4.0.0-alpha
- Удалите node_modules, удалите package-lock.json, повторно установите npm.
Два способа упаковки бэкенда
Упаковка может быть упакована двумя способами: один — загрузить пакет jar на сервер после локальной упаковки, а другой — упаковать проект на сервере после размещения проекта на сервере.
Уведомление: Перед началом официальной упаковки IP-адрес подключения к базе данных, адрес файла журнала logback.xml и адрес подключения redis должны быть изменены на соответствующие IP-адрес и адрес вашего собственного сервера. Адрес подключения к базе данных, который я заполнил, является внутренним сетевым адресом, а IP-адрес общедоступной сети, который я заполнил для redis.На самом деле, я весьма озадачен здесь.Очевидно, что redis и проект находятся на этой машине, почему я не могу использовать ip внутренней сети или 127.0.0.1 подключить?, это проблема.
Внутренняя локальная упаковка и развертывание
Используйте проекты Maven в правой части редактора IDEA, чтобы сначала щелкнуть очистить, не сообщая об ошибке, а затем щелкнуть пакет, После нажатия верхней стрелки это означает, что этап тестирования пропускается в процессе упаковки, не забудьте щелкнуть.
После нажатия на оба сообщения об ошибке не сообщается.Если пакет успешно упакован нормально, в целевом файле основного модуля будет наш пакет jar, названный в соответствии с идентификатором артефакта и номером версии.
Создайте файл Dockerfile без имени суффикса, соберите образ проекта, содержимое будет следующим
# 基础镜像 表示基镜像是java8
FROM java:8
# 表示 指定临时文件目录为/tmp。其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。该步骤是可选的
VOLUME /tmp
# 表示将jar包添加到镜像中,并重命名app.jar
ADD core-0.0.1-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
# 代表的是jvm的参数,如果有需要可以写在这里
ENV JAVA_OPTS=""
# 表示启动时运行 java -jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
Загрузите jar-пакет и файл Dockerfile на наш сервер, определите местоположение самостоятельно и загрузите через команду rz.Эти два файла могут находиться в одной папке.
$ rz
# 在上传后的文件夹中开始构建,指定了镜像的名字为ywh-frame
$ docker build -t ywh-frame .
# 等待构建成功后,可通过命令查看
$ docker images
# 运行此镜像文件
$ docker run -d --name ywh-frame --restart always -p 8082:8082 -v /ywh/projectwork/spring/logs:/usr/local/logs ywh-frame
- -d означает запуск в фоновом режиме,
- -p обозначает сопоставление портов, родной: контейнер
- -v сопоставление файлов, этот файл является файлом журнала проекта, правая сторона - расположение файла журнала контейнера, это местоположение можно настроить в файле logback-spring.xml основного модуля, который записан в примечаниях из предыдущих глав
- --name представляет имя контейнера
- --restart всегда означает запуск с загрузки
Вы можете использовать команду, чтобы проверить журнал, чтобы убедиться, что он запускается нормально.Если есть ненормальная информация, вам необходимо исправить ее в соответствии с конкретной ненормальной информацией.
Серверная онлайн-упаковка и развертывание (не рекомендуется)
Этот метод более хлопотный, и в Linux необходимо установить некоторые необходимые среды,Не рекомендуется, но все же записать.
Установите среду выполнения Java и maven
Необходимо заменить плагин упаковки pom-файла модуля ядра на плагин docker-maven
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.0</version>
<configuration>
<imageName>${project.artifactId}</imageName>
<dockerDirectory>${project.build.outputDirectory}</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
<imageName></imageName> 镜像的名字
<dockerDirectory></dockerDirectory> Dockerfile文件的位置
<directory></directory> target目录的位置
<include></include> 打包项目后的jar包名字
Создайте файл Dockerfile без суффикса, просто поместите этот файл в каталог ресурсов под основным модулем или в другие каталоги, просто укажите местоположение в метке выше.
# 基础镜像 表示基镜像是java8
FROM java:8
# 表示 指定临时文件目录为/tmp。其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。该步骤是可选的
VOLUME /tmp
# 表示将jar包添加到镜像中,并重命名app.jar
ADD core-0.0.1-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
# 代表的是jvm的参数,如果有需要可以写在这里
ENV JAVA_OPTS=""
# 表示启动时运行 java -jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
Загрузите проект на сервер, просто загрузите файлы src и pom каждого модуля.
#找到项目所在目录
$ cd /ywh/projectwork/spring/ywh-frame
#根目录下进行 install
$ mvn clean install package -Dmaven.test.skip=true
#进入core模块下
$ cd ywh-starter-core/
#执行maven命令生成jar包和镜像
$ mvn package docker:build -Dmaven.test.skip=true
# docker运行命令
$ docker run -d --name ywh-frame --restart always -p 8082:8082 -v /ywh/projectwork/spring/logs:/usr/local/logs ywh-frame
Упаковка и развертывание внешнего интерфейса vue-проекта
Уведомление: Перед упаковкой внешнего проекта вам необходимо изменить config->prod.env.js вBASE_APIIP-адрес — это IP-адрес моего собственного сервера. Я заполнил общедоступный IP-адрес, чтобы обеспечить возможность изменения BASE_API в dev.env.js.
Согласно предпосылке node_modules, запуск команды напрямую создаст следующую команду в проекте, которая создаст папку dist в этом проекте.
# 在前端项目的文件夹下运行此命令
$ npm run build
На сервере необходимо установить Nginx.Способ установки описан в ссылке в начале заметки, а также запускается докером.В это время сгенерированные статические файлы можно упаковать и загрузить в корневую директорию сервер Liunx Nginx, в основном для установки и настройки Nginx, страница представляет собой не что иное, как статическая страница.
$ cd /home/www/website
$ rz
$ tar -xvf dist.tar
конец
Если все запустилось нормально, на вашем сервере должно быть запущено четыре контейнера
Ниже приведен мой адрес предварительного просмотра, потому что я не пришел, чтобы изменить и спланировать проект vue, управляемый серверной частью, поэтому это просто начальная страница, а другие страницы, кроме домашней страницы, не могут быть доступны в обычном режиме, потому что нет mock support. , но это не имеет значения, потому что моя основная цель - ознакомиться с этими процессами, я могу добавить конкретный бизнес потихоньку позже, потому что регистрация доменного имени более хлопотна, поэтому теперь я могу получить к нему доступ только по IP-адресу.- Адрес предварительного просмотра:www.zandy.top