Zastrzeżenie: Ten artykuł został pierwotnie opublikowany w maju 2023 roku. Jednak w marcu 2024 roku został zaktualizowany o nową treść – zautomatyzowany skrypt, który pozwala skonfigurować wszystko w jednym kroku. Zaktualizowane informacje znajdują się na samym początku, ale jeśli wolisz metodę manualną, znajdziesz ją w dalszej części artykułu.
[Uwaga] Ten artykuł został pierwotnie przygotowany w języku angielskim i został przetłumaczony na język polski.
Oryginalny artykuł zawiera kilka kroków, które są podatne na błędy manualne. Kopiowanie i wklejanie wymaganego kodu bywa też dość czasochłonne. Z tego powodu przygotowałem aktualizację, która pozwoli Ci zrobić dokładnie to samo w zaledwie jednym kroku. Po prostu skopiuj i wklej poniższy kod, wróć po lunchu, a Twoje gotowe do pracy środowisko APEX będzie na Ciebie czekać.
Będziesz potrzebować narzędzia Podman, Docker lub Docker-ce dla systemu Windows, Unix lub Mac (użytkownicy komputerów Mac powinni najpierw przeczytać to).
Jeśli uruchamiasz to na instancji instancji OCI compute, będziesz musiał otworzyć porty 8521, 8500, 8023, 9043 i 9922. W przeciwnym razie zignoruj ten krok.
Zanim zaczniesz: obraz Dockera z wersją 23c na niektórych systemach operacyjnych może uruchamiać się powoli, zanim bazy PDB staną się operacyjne. Oznacza to opóźnienie w pomyślnej instalacji APEX. Pamiętaj więc o jednym z kroków z poniższego poradnika (tym o pójściu na kawę) – na pewno się przyda!
Nigdy nie napotkałem takiego problemu na maszynie Oracle Cloud Compute. W tym jednym kroku skrypt nie zrobi kawy ani Tobie, ani sobie – to ulepszenie, które może wprowadzę w przyszłości.
Oto on. Po prostu wklej poniższy kod do swojego terminala / wiersza poleceń. Komenda powinna działać w systemach Windows, Unix i Mac (ponownie: użytkownicy Maców, czytacie to?). Dla jasności: ja uruchamiam to na systemie Unix w Oracle Cloud Compute z darmowym 50 GB Block Volume.
docker create -it --name 23cfree -p 8521:1521 -p 8500:5500 -p 8023:8080 -p 9043:8443 -p 9922:22 -e ORACLE_PWD=E container-registry.oracle.com/database/free:latest curl -o unattended_apex_install_23c.sh https://raw.githubusercontent.com/Pretius/pretius-23cfree-unattended-apex-installer/main/src/unattended_apex_install_23c.sh curl -o 00_start_apex_ords_installer.sh https://raw.githubusercontent.com/Pretius/pretius-23cfree-unattended-apex-installer/main/src/00_start_apex_ords_installer.sh docker cp unattended_apex_install_23c.sh 23cfree:/home/oracle docker cp 00_start_apex_ords_installer.sh 23cfree:/opt/oracle/scripts/startup docker start 23cfree
Jeśli pracujesz na Uniksie, uruchom również to, aby kontener działał po zamknięciu połączenia:
loginctl enable-linger $UID
Teraz poczekaj około 20 minut (i dodatkowe 15, jeśli wcześniej nie pobierałeś obrazu Dockera – zostanie pobrany automatycznie). Możesz monitorować proces instalacji za pomocą następującej komendy (ale poczekaj z minutę przed jej uruchomieniem):
docker exec -it 23cfree /bin/bash tail -f /home/oracle/unattended_apex_install_23c.log
U mnie proces trwał 16m 40s (miałem już pobrany obraz Dockera), aż w końcu wyświetlił się komunikat ### APEX INSTALLED ###.
Kiedy skończysz, użyj Ctrl+C, aby wyjść z monitorowania logów i przejdź pod adres http://localhost:8023/ords/apex, aby sprawdzić efekt.
Jeśli kiedykolwiek zrestartujesz Dockera, APEX będzie z powrotem gotowy do pracy w około 60 sekund. Skrypt nie będzie ponownie uruchamiał instalacji typu unattended.
APEX Internal Workspace:
Wszystko inne, np. ORDS_PUBLIC_USER, APEX_PUBLIC_USER, SYS, itd.:
I to właściwie tyle – miłej zabawy! Skrypt konfiguracyjny jest open source, więc śmiało go forkujcie. Repozytorium znajdziecie tutaj. Jeśli – z jakiegoś powodu – chcecie przejść przez ten proces manualnie, oryginalne kroki znajdziecie poniżej.
Po pierwsze, oto rzeczy, których będziesz potrzebować:
Właściwie nie musisz teraz niczego pobierać – powiem Ci, jak zrobić to szybko z poziomu wiersza poleceń.
Jeśli masz już uruchomionego Dockera, możesz pominąć pierwszą sekcję dotyczącą instalacji i przejść od razu do kolejnych kroków (sekcja „Jak sprawić, by Docker współpracował z APEX”).
Jeśli nie masz zainstalowanego Dockera, przejdź przez poniższe kroki. Szczegóły będą się różnić w zależności od wybranej platformy/systemu operacyjnego.
docker version sudo yum install docker -y
Po pobraniu Dockera musisz rozpakować dane. Otwórz wiersz poleceń (terminal lub Windows+R, cmd) i wpisz poniższą komendę. Zajmie to około 15 minut i rozpakuje się do 10,5 GB na dysku.
docker pull container-registry.oracle.com/database/free:latest
Oto jak będzie to wyglądać po zakończeniu:
Teraz pozostaje tylko uruchomić Dockera. Możesz to zrobić za pomocą poniższej komendy. Zauważ, że zmieniłem porty na 8xxx, aby uniknąć konfliktów z innymi moimi obrazami Dockera.
docker run -d -it --name 23cfree -p 8521:1521 -p 8500:5500 -p 8023:8080 -p 9043:8443 -e ORACLE_PWD=E container-registry.oracle.com/database/free:latest
Przed Tobą 25 kroków, które musisz wykonać, aby wszystko zadziałało. Proces jest całkiem przejrzysty.
1. Wejdź do basha
Wpisz następującą komendę:
docker exec -it 23cfree /bin/bash
2. Pobierz APEX
Użyj tej komendy (zajmie to około minuty):
curl -o apex-latest.zip https://download.oracle.com/otn_software/apex/apex-latest.zip
3. Rozpakuj i wejdź do katalogu APEX
Użyj tych komend:
unzip apex-latest.zip rm apex-latest.zip cd apex
4. Pozwól bazie danych „odpocząć” przez kilka minut
Zanim przejdziesz dalej, najlepiej dać systemowi chwilę na ustabilizowanie się. Możesz w tym czasie zaparzyć sobie kawę!
5. Otwórz SQL*Plus za pomocą sqlplus / as sysdba
Komenda wygląda tak:
bash-4.4$ sqlplus / as sysdba SQL*Plus: Release 23.0.0.0.0 - Developer-Release on Wed Apr 5 13:27:32 2023 Version 23.2.0.0.0 Copyright (c) 1982, 2023, Oracle. All rights reserved. Connected to: Oracle Database 23c Free, Release 23.0.0.0.0 - Developer-Release Version 23.2.0.0.0
6. Uruchom instalator APEX
Użyj poniższej komendy:
ALTER SESSION SET CONTAINER = FREEPDB1; @apexins.sql SYSAUX SYSAUX TEMP /i/
Instalacja potrwa około 10 minut. Jeśli pojawi się błąd PLS-00201: identifier 'SYS.DBMS_DB_VERSION’ must be declared, po prostu ponawiaj ten krok do skutku. Po chwili system się uspokoi.
7. Odblokuj konto użytkownika publicznego
Oto komenda:
ALTER USER APEX_PUBLIC_USER ACCOUNT UNLOCK; ALTER USER APEX_PUBLIC_USER IDENTIFIED BY E;
8. Zmień hasło
Uruchom komendę i postępuj zgodnie z instrukcjami:
@apxchpwd.sql
Pamiętaj, że musisz użyć złożonego hasła, więc wymyśl coś odpowiedniego.
9. Wyjdź z SQL*Plus
Po prostu wpisz:
exit
10. Utwórz następujące foldery
Aby zrobić to szybko, możesz skopiować i wkleić poniższe komendy:
mkdir /home/oracle/software mkdir /home/oracle/software/apex mkdir /home/oracle/software/ords mkdir /home/oracle/scripts
11. Skopiuj obrazy APEX i zmień katalog
Wpisz następujące polecenia:
cp -r /home/oracle/apex/images /home/oracle/software/apex cd /home/oracle/
12. Zainstaluj sudo
Użyj tej komendy:
su
A następnie tych:
cat /dev/null > /etc/dnf/vars/ociregion dnf update -y dnf install sudo -y
13. Zainstaluj nano
Wpisz:
dnf install nano -y
14. Edytuj listę sudoers
Teraz musisz szybko wyedytować listę sudo. Najpierw wpisz:
nano /etc/sudoers
W sekcji Defaults dodaj następujący wpis:
Defaults !lecture
Na samym końcu pliku musisz również dodać to:
oracle ALL=(ALL) NOPASSWD: ALL
Zapisz plik i wyjdź (Ctrl+X).
15. Zainstaluj Javę
Użyj tej komendy:
dnf install java-17-openjdk -y
16. Skonfiguruj foldery ORDS i sprawdź Javę
Oto komendy, które pozwolą szybko wszystko ustawić:
mkdir /etc/ords mkdir /etc/ords/config mkdir /home/oracle/logs chmod -R 777 /etc/ords java -version
Jeśli wszystko jest w porządku, otrzymasz taki wynik:
openjdk version "17.0.6" 2023-01-17 LTS OpenJDK Runtime Environment (Red_Hat-17.0.6.0.10-3.el8_7) (build 17.0.6+10-LTS) OpenJDK 64-Bit Server VM (Red_Hat-17.0.6.0.10-3.el8_7) (build 17.0.6+10-LTS, mixed mode, sharing)
17. Będąc nadal zalogowanym jako su, zainstaluj ORDS
Użyj następujących komend:
yum-config-manager --add-repo=https://yum.oracle.com/repo/OracleLinux/OL8/oracle/software/x86_64 dnf install ords -y
18. Skonfiguruj ORDS
Wpisz:
export _JAVA_OPTIONS="-Xms512M -Xmx512M" ords --config /etc/ords/config install
System wyświetli listę wyboru. Wybierz opcję 3.
Enter a number to select the TNS net service name to use or specify the database connection [1] EXTPROC_CONNECTION_DATA SID=PLSExtProc [2] FREE SERVICE_NAME=FREE [3] FREEPDB1 SERVICE_NAME=FREEPDB1 [S] Specify the database connection Choose [1]: 3
Następnie zostaniesz poproszony o nazwę użytkownika bazy danych z uprawnieniami administratora. Wybierz SYS i hasło E.
Provide database user name with administrator privileges. Enter the administrator username: SYS Enter the database password for SYS AS SYSDBA: E
Pojawi się następujące menu:
Retrieving information. ORDS is not installed in the database. ORDS installation is required. Enter a number to update the value or select option A to Accept and Continue [1] Connection Type: TNS [2] TNS Connection: TNS_NAME=FREEPDB1 TNS_FOLDER=/opt/oracle/product/23c/dbhomeFree/network/admin Administrator User: SYS AS SYSDBA [3] Database password for ORDS runtime user (ORDS_PUBLIC_USER): <generate> [4] ORDS runtime user and schema tablespaces: Default: SYSAUX Temporary TEMP [5] Additional Feature: Database Actions [6] Configure and start ORDS in Standalone Mode: Yes [7] Protocol: HTTP [8] HTTP Port: 8080 [9] APEX static resources location: [A] Accept and Continue - Create configuration and Install ORDS in the database [Q] Quit - Do not proceed. No changes Choose [A]:
Wybierz opcję 9 – APEX static resources location. Gdy zostaniesz poproszony, wpisz:
/home/oracle/software/apex/images
Wpisz „A”, aby kontynuować. ORDS przejdzie do konfiguracji. Zajmie to 1-2 minuty, aż w końcu zobaczysz poniższy komunikat:
<code class="lang-plaintext">2024-04-15T15:30:27.922Z INFO Oracle REST Data Services initialized Oracle REST Data Services version : 24.1.0.r0960841 Oracle REST Data Services server info: jetty/10.0.20 Oracle REST Data Services java info: OpenJDK 64-Bit Server VM 17.0.10+7-LTS
19. Zrób szybki test i zamknij ORDS
Uruchom adres http://localhost:8023/ords/apex w innej zakładce przeglądarki – jeśli wszystko zostało skonfigurowane poprawnie, powinieneś zobaczyć ekran logowania APEX, taki jak na zrzucie poniżej.
Możesz już zamknąć tę zakładkę. Teraz zamknij ORDS w terminalu, używając Ctrl+C.
Dla Twojej informacji: przed wersją ORDS 23.2 (szczegóły tutaj) używało się po prostu adresu localhost:8023/ords.
20. Utwórz plik start_ords.sh
Użyj tej komendy:
nano /home/oracle/scripts/start_ords.sh
Następnie wklej poniższy kod:
export ORDS_HOME=/usr/local/bin/ords
export _JAVA_OPTIONS="-Xms512M -Xmx512M"
LOGFILE=/home/oracle/logs/ords-date +"%Y""%m""%d".log
nohup ${ORDS_HOME} --config /etc/ords/config serve >> $LOGFILE 2>&1 & echo "View log file with : tail -f $LOGFILE"
21. Utwórz plik stop_ords.sh
Zacznij od tej komendy:
nano /home/oracle/scripts/stop_ords.sh
I wklej to:
kill ps -ef | grep [o]rds.war | awk '{print $2}'
Jeśli kiedykolwiek będziesz potrzebował użyć tych skryptów ręcznie, możesz je uruchomić tymi poleceniami (ale nie rób tego teraz!):
sh /home/oracle/scripts/start_ords.sh sh /home/oracle/scripts/stop_ords.sh
22. Utwórz skrypt startowy ORDS
Użyj komendy:
nano /opt/oracle/scripts/startup/01_auto_ords.sh
Wklej poniższe:
sudo sh /home/oracle/scripts/start_ords.sh
23. Jeśli używasz Dockera na Uniksie, włącz „linger”
Ten krok nie jest wymagany na systemach Windows/Mac, ale jest niezbędny na Uniksie, aby zapobiec zabijaniu procesów użytkownika po zakończeniu sesji. Aby to zrobić, uruchom:
loginctl enable-linger $UID
24. Zatrzymaj kontener Dockera i uruchom go ponownie
Możesz po prostu użyć interfejsu graficznego lub wpisać:
docker restart 23cfree
Robi się to, aby aktywować skrypt autostartu ORDS utworzony we wcześniejszych krokach.
25. Poczekaj chwilę i spróbuj się zalogować
Odczekaj przynajmniej 60 sekund i spróbuj zalogować się pod adresem http://localhost:8023/ords/apex. Użyj następujących danych:
Workspace > INTERNAL Username > ADMIN Password > Twoje Złożone Hasło
I to wszystko! Jak widzisz, proces był całkiem łatwy i niezbyt czasochłonny. Zajęło to pewnie… około 30 minut łącznie? Jeśli wszystko zostało skonfigurowane poprawnie, powinieneś wejść do APEX-a bez żadnych problemów. Jeśli masz pytania, zawsze możesz do mnie napisać na adres mmulvaney@pretius.com. Jeśli interesuje Cię Oracle APEX, sprawdź też inne moje artykuły na tym blogu: