Rest API załadowanie na VPS

0

Cześć,

Na początku chciałbym przeprosić jeżeli temat nie powinien znajdować się w tym miejscu ale nie miałem pojęcia gdzie powinienem go stworzyć :)
Od jakiegoś czasu zacząłem tworzyć własne API dla mojej aplikacji. Stworzyłem już połączenie z bazą danych, odpalałem ją w na localhoscie i przyszedł czas
na dalsze kroczki tzn. na przerzucenie jej na prawdziwy serwer. Zakupiłem jakiś podstawowy serwer VPS na homecloud, lecz teraz zaczęły się kroki.
Pytałem osób z pomocy w jaki sposób można zaaplikować własne API na serwer to nakierowali mnie na program WinSCP. Wszystko fajnie - pobrałem, zalogowałem na mój serwer ale na tym stanęło. Program pokazuje mi pliki, które są na serwerze i na moim komputerze i jestem w stanie aplikować je w prawo i lewo.
Reasumując... czy powinienem wrzucić po prostu cały plik, w którym znajduje się mój kod do plików serwera i tyle?
Na czym ogólnie to polega? Chce po prostu przykładowo odpalać link z moją domeną w np. Postmanie z odpowiednimi dodatkami tzn. np. funkcje GET
i żebym dostawał dane z mojej bazy danych, która już jest podłączona do stworzonego API. Powtarzam, że ogólnie API podłączone do bazy danych normalnie działa na serwerze lokalnym, gdy odpalam.

Z góry wielkie dzięki za pomoc.
Pozdrawiam, SM.

1

Skoro wykupiłeś sobie VPSa (w porównaniu np. do statycznego hostingu), powinieneś być w stanie zalogować się na Twój serwer z wykorzystaniem SSH - czy jesteś w stanie to zrobić?

0

Tak, jestem w stanie. np za pomocą Putty jestem w stanie sie zalogowac.

0

Oki, czyli na swoim komputerze masz Windowsa?

0

Dokładnie.

0

Zakładając, że znasz podstawy Linuksa:

  • zainstaluj Javę (np. OpenJDK),
  • wrzuć aplikację na serwer (np. z wykorzystaniem rsync / WinSCP),
  • uruchom aplikację (np. java -jar /home/costam.jar).
0

czy aplikacja musi być jakoś konkretnie zapakowana ? czy po prostu gołe pliki takie jakie sa w folderze wrzucam ?

Edit: nie doczytałem rozszerzenia. Pakuje w formacie .jar, tak ?
Edit2: wrzucam pliki costam.zip za pomoca WinSCP do /home
czyli /home/costam.zip.
Jak juz tam są to w puTTY odpalam po zalogowaniu się do serwer'a za pomocą "np. java -jar /home/costam.jar" ??? bo próbowałem i niestety dostaje informacje: "-bash: java: command not found", wiec zakladam, ze to nie o to chodzi, racja?

0

Wrzucasz spakowany jar na serwer do jakiegoś katalogu.
Następnie odpalasz. Po zamknięciu SSH, proces aplikacji zostanie ubity. Użyć do tego np. nohup na początek do testów. A jeśli chcesz zrobić to porządnie to zapoznaj się z Unit file w systemd.

0

wiec zakladam, ze to nie o to chodzi, racja?

Powoli, kowboju; jak brzmi pierwszy krok, który wymieniłem na liście?

0
Patryk27 napisał(a):

wiec zakladam, ze to nie o to chodzi, racja?

Powoli, kowboju; jak brzmi pierwszy krok, który wymieniłem na liście?

To już mam gotowe :D

Rzeczy, które już zrobiłem:

  • Java zainstalowana (pracowałem na niej już wcześniej więc chcąc lub nie musiałem to zrobić),
  • zapakowałem projekt do .jar i wrzuciłem za pomoca WinSCP do plików VPS.

Jakieś bardziej rozwinięte następne kroki ? Bo z tego co napisałeś to nie bardzo wiem co powinienem zrobić.

0

W jaki sposób zainstalowałeś JVM?

0
Patryk27 napisał(a):

W jaki sposób zainstalowałeś JVM?

Mówimy o czymś takim jak na poniższym obrazku:

?

0

@Szymon Markowski: wiesz jak działa JVM choć ogólnie?
Żeby uruchomić archiwum .jar na zdalnej maszynie, musisz mieć na niej zainstalowany JRE w wersji kompatybilnej z twoim kodem (sprawdź target w pom.xml albo w build.gradle)

0

Java zainstalowana (pracowałem na niej już wcześniej więc chcąc lub nie musiałem to zrobić),

Skoro chcesz uruchomić aplikację napisaną w Javie na serwerze, wypadałoby zainstalować Javę na serwerze ;-]

0

Niedawno udało mi się zintegrować BitBucket'a z Heroku. Zaciąga mi aplikacje w Springu i wrzuca na chmurę i to fajnie działa. Użyłem pipeline'a. Wyczytałem z dokumentacji:

Deploy to Heroku

Korzystam z bazy danych na zwykłym hostingu webd.pl. Jak skonfigurowałem to tylko dodaje kolejne commity a reszta sama się robi. To rozwiązanie chyba opiera o dobroci Docker'a :)
To chyba nietrudne skoro mi się udało a nie siedzę w DevOps

Polecam.

0
Pangeon napisał(a):

Niedawno udało mi się zintegrować BitBucket'a z Heroku. Zaciąga mi aplikacje w Springu i wrzuca na chmurę i to fajnie działa. Użyłem pipeline'a. Wyczytałem z dokumentacji:

Deploy to Heroku

Korzystam z bazy danych na zwykłym hostingu webd.pl. Jak skonfigurowałem to tylko dodaje kolejne commity a reszta sama się robi. To rozwiązanie chyba opiera o dobroci Docker'a :)
To chyba nietrudne skoro mi się udało a nie siedzę w DevOps

Polecam.

Na heroku też juz testowalem i działa. Chciałem spróbować zrobić coś na własnym hoscie :)

0

Jeżeli chodzi o instalacje JVM to rozumiem, że chodzi o to, ŻE...

  1. ściągam JVM z "https://www.java.com/pl/download/"
  2. wrzucam plik za pomocą WinSCP
  3. przez PuTTY zainstalowalem JVM komendą :sudo yum install java i wszystko ładnie zainstalowało. Sprawdzajac wersje w kliencie SSH wersje javy dostaje informacje:
    [root@mojSerwer ~]# java -version
    openjdk version "1.8.0_232"
    OpenJDK Runtime Environment (build 1.8.0_232-b09)
    OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)
  4. Teraz próbując uruchomic aplikacje rest.jar przez komende "java -jar /home/rest.jar" to dostaje informacje:
    Error: Unable to access jarfile home/rest.jar

Czy jestem na dobrej drodze :D? Czy coś jest nie tak

0

po prostu nie masz takiej ścieżki, albo brak uprawnień.

  1. Sprawdź i nadaj uprawnienia .jarowi
  2. Podaj poprawną ścieżkę. To home/ mi się nie podoba. Przejdź do katalogu gdzie się jar znajduje i odpal: $ java -jar rest.jar

Jeśli się nie powiedzie, to daj IP i dodaj mój klucz publiczny do ~/.ssh/known_hosts :D

0
NeutrinoSpinZero napisał(a):

po prostu nie masz takiej ścieżki, albo brak uprawnień.

  1. Sprawdź i nadaj uprawnienia .jarowi
  2. Podaj poprawną ścieżkę. To home/ mi się nie podoba. Przejdź do katalogu gdzie się jar znajduje i odpal: $ java -jar rest.jar

Jeśli się nie powiedzie, to daj IP i dodaj mój klucz publiczny do ~/.ssh/known_hosts :D

Ad. 1 W jaki sposób mogę to zrobić ?
Ad. 2 Wrzuciłem plik do głównego folderu i teraz po próbie odpalenia dostaje info:

**[root@mojSerwer ~]# java -jar restApi.jar
no main manifest attribute, in restApi.jar
**

0

Udało mi się odpalic aplikacje za pomocą komendy:
** java -cp api.jar com.myOwnApi.restApi.RestApiApplication**

Początkowo aplikacja się wczytuje tak jak robiła to w Intellj ale później wyskakuje błąd, którego nie mogę rozwiązać "D

2218.965 [main] ERROR org.springframework.boot.SpringApplication - Application run failed
java.lang.IllegalArgumentException: No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct.
at org.springframework.util.Assert.notEmpty(Assert.java:464)
at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.getCandidateConfigurations(AutoConfigurationImportSelector.java:173)
at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.getAutoConfigurationEntry(AutoConfigurationImportSelector.java:116)
at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector$AutoConfigurationGroup.process(AutoConfigurationImportSelector.java:396)
at org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorGrouping.getImports(ConfigurationClassParser.java:877)
at org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorGroupingHandler.processGroupImports(ConfigurationClassParser.java:803)
at org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorHandler.process(ConfigurationClassParser.java:773)
at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:188)
at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:325)
at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:242)
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:275)
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:95)
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:705)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:531)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:746)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:396)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1225)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1214)
at com.myOwnApi.restApi.RestApiApplication.main(RestApiApplication.java:10)

0
Szymon Markowski napisał(a):

Ad. 1 W jaki sposób mogę to zrobić ?
Ad. 2 Wrzuciłem plik do głównego folderu i teraz po próbie odpalenia dostaje info:

**[root@mojSerwer ~]# java -jar restApi.jar
no main manifest attribute, in restApi.jar
**

Ad 1. Z użyciem narzędzia chmod nadajesz uprawnienia, jednak widać plik się odpala, patrz punkt 2.
Ad 2. To w jaki sposób "zapakowałeś" (jak to sam określiłeś) swój program do .jar? Plik manifest możesz utworzyć ręcznie i wskazać go w swoim IDE przy tworzeniu artefaktu np. https://blog.jetbrains.com/idea/2010/08/quickly-create-jar-artifact/
Bardziej uniwersalnie deklarując w pliku .pom Mavena https://mkyong.com/maven/how-to-create-a-manifest-file-with-maven/ (lub jak już było podane wcześniej - utworzenie fat jar)

EDIT: To teraz się wyjaśniło że robisz appkę w Springu, nadal pewnie w zły sposób kompilujesz, przejrzyj i popraw swojego poma

0
G4iner napisał(a):
Szymon Markowski napisał(a):

Ad. 1 W jaki sposób mogę to zrobić ?
Ad. 2 Wrzuciłem plik do głównego folderu i teraz po próbie odpalenia dostaje info:

**[root@mojSerwer ~]# java -jar restApi.jar
no main manifest attribute, in restApi.jar
**

Ad 1. Z użyciem narzędzia chmod nadajesz uprawnienia, jednak widać plik się odpala, patrz punkt 2.
Ad 2. To w jaki sposób "zapakowałeś" (jak to sam określiłeś) swój program do .jar? Plik manifest możesz utworzyć ręcznie i wskazać go w swoim IDE przy tworzeniu artefaktu np. https://blog.jetbrains.com/idea/2010/08/quickly-create-jar-artifact/
Bardziej uniwersalnie deklarując w pliku .pom Mavena https://mkyong.com/maven/how-to-create-a-manifest-file-with-maven/ (lub jak już było podane wcześniej - utworzenie fat jar)

Już utworzyłem plik .jar. Następnie dodałem go do plików serwerowych a gdy próbuję go odpalić dostaje:

[root@mojSerwer ~]# java -cp api.jar com.myOwnApi.restApi.RestApiApplication
2226.925 [main] DEBUG org.springframework.web.context.support.StandardServletEnvironment - Activating profiles []

. ____ _ __ _ _
/\ / ' __ _ () __ __ _ \ \ \
( ( )_
_ | '_ | '| | ' / ` | \ \ \
\/ )| |)| | | | | || (| | ) ) ) )
' |
| .__|| ||| |_, | / / / /
=========|
|==============|/=////
:: Spring Boot :: (v0.0.20131108.vaadin1)

2227.224 [main] INFO com.myOwnApi.restApi.RestApiApplication - Starting RestApiApplication v0.0.20131108.vaadin1 on mojSerwer.smarkowski.pl with PID 6183 (/root/api.jar started by root in /root)
2227.228 [main] DEBUG com.myOwnApi.restApi.RestApiApplication - Running with Spring Boot v0.0.20131108.vaadin1, Spring v0.0.20131108.vaadin1
2227.230 [main] INFO com.myOwnApi.restApi.RestApiApplication - No active profile set, falling back to default profiles: default
2227.233 [main] DEBUG org.springframework.boot.SpringApplication - Loading source class com.myOwnApi.restApi.RestApiApplication
2227.413 [main] DEBUG org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext - Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@27a8c74e
2227.434 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'org.springframework.context.annotation.internalConfigurationAnnotationProcessor'
2227.664 [main] DEBUG org.springframework.context.annotation.ClassPathBeanDefinitionScanner - Identified candidate component class: URL [jar/root/api.jar!/com/myOwnApi/restApi/api/OsobaAPI.class]
2227.705 [main] DEBUG org.springframework.context.annotation.ClassPathBeanDefinitionScanner - Ignored because not a concrete top-level class: URL [jar/root/api.jar!/com/myOwnApi/restApi/dao/OsobaRepo.class]
2227.722 [main] DEBUG org.springframework.context.annotation.ClassPathBeanDefinitionScanner - Identified candidate component class: URL [jar/root/api.jar!/com/myOwnApi/restApi/manager/OsobaManager.class]
2227.813 [main] ERROR org.springframework.boot.SpringApplication - Application run failed
java.lang.IllegalArgumentException: No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct.
at org.springframework.util.Assert.notEmpty(Assert.java:464)
at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.getCandidateConfigurations(AutoConfigurationImportSelector.java:173)
at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.getAutoConfigurationEntry(AutoConfigurationImportSelector.java:116)
at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector$AutoConfigurationGroup.process(AutoConfigurationImportSelector.java:396)
at org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorGrouping.getImports(ConfigurationClassParser.java:877)
at org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorGroupingHandler.processGroupImports(ConfigurationClassParser.java:803)
at org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorHandler.process(ConfigurationClassParser.java:773)
at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:188)
at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:325)
at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:242)
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:275)
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:95)
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:705)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:531)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:746)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:396)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1225)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1214)
at com.myOwnApi.restApi.RestApiApplication.main(RestApiApplication.java:10)
2227.830 [main] DEBUG org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext - Closing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@27a8c74e, started on Tue Jan 28 2227 GMT+01:00 2020
[root@mojSerwer ~]#

0
Szymon Markowski napisał(a):

2227.813 [main] ERROR org.springframework.boot.SpringApplication - Application run failed
java.lang.IllegalArgumentException: No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct.
at org.springframework.util.Assert.notEmpty(Assert.java:464)

Ktoś na SO ma dokładnie ten sam problem co Ty

1 użytkowników online, w tym zalogowanych: 0, gości: 1