#!/bin/sh | |
# Usage: install_apex.sh password [directory] | |
# | |
# password for sys password to install APEX into the database. | |
# | |
APEX_VERSION=23.2.0 | |
#LANGUAGES="" | |
LANGUAGES="JAPANESE" | |
PASSWORD=${1} | |
DIR=${2:-`pwd`} | |
YAML=apex.yaml | |
SECRET_YAML=secret.yaml | |
# create directory for /opt/oracle/variables | |
mkdir -p ords_secrets | |
chmod 777 ords_secrets | |
# create ords_secrets/conn_string.txt | |
echo "CONN_STRING=sys/${PASSWORD}@localhost:1521/freepdb1" > ${DIR}/ords_secrets/conn_string.txt | |
# create directory for /etc/ords/config | |
mkdir -p ords_config | |
chmod 777 ords_config | |
# store sys password as kubenetes secret | |
encpassword=`echo -n ${PASSWORD} | base64` | |
cat <<EOF > ${SECRET_YAML} | |
apiVersion: v1 | |
data: | |
password: ${encpassword} | |
kind: Secret | |
metadata: | |
creationTimestamp: null | |
name: oracle_params | |
EOF | |
podman kube play ${SECRET_YAML} | |
rm ${SECRET_YAML} | |
# create language resource installer. | |
if [ -n "${LANGUAGES}" ]; then | |
custdir="" | |
mkdir -p ords_custom | |
cat <<EOF > ords_custom/01_install_language.sh | |
#!/bin/sh | |
cd /opt/oracle/apex/${APEX_VERSION} | |
export PATH=/opt/oracle/sqlcl/bin:\$PATH | |
sql sys/${PASSWORD}@localhost/freepdb1 as sysdba @load_trans ${LANGUAGES} 2>&1 >> /tmp/install_container.log | |
EOF | |
chmod 777 ords_custom/01_install_language.sh | |
else | |
custdir="# " | |
fi | |
# Create Kube YAML | |
cat <<EOF > ${YAML} | |
apiVersion: v1 | |
kind: Pod | |
metadata: | |
labels: | |
app: apex | |
name: apex | |
spec: | |
containers: | |
- env: | |
- name: ORACLE_PWD | |
valueFrom: | |
secretKeyRef: | |
name: oracle_params | |
key: password | |
image: container-registry.oracle.com/database/free:latest | |
name: db | |
ports: | |
- containerPort: 1521 | |
hostPort: 1521 | |
- containerPort: 8181 | |
hostPort: 8181 | |
- containerPort: 8443 | |
hostPort: 8443 | |
securityContext: | |
privileged: true | |
- image: container-registry.oracle.com/database/ords:latest | |
name: ords | |
securityContext: | |
privileged: true | |
depends_on: | |
- db | |
volumeMounts: | |
- mountPath: /opt/oracle/variables | |
name: home-oracle-ords_secrets-host-0 | |
- mountPath: /etc/ords/config | |
name: home-oracle-ords_config-host-1 | |
${custdir} - mountPath: /ords-entrypoint.d | |
${custdir} name: home-oracle-ords_custom-host-2 | |
volumes: | |
- hostPath: | |
path: ${DIR}/ords_secrets | |
type: Directory | |
name: home-oracle-ords_secrets-host-0 | |
- hostPath: | |
path: ${DIR}/ords_config | |
type: Directory | |
name: home-oracle-ords_config-host-1 | |
${custdir} - hostPath: | |
${custdir} path: ${DIR}/ords_custom | |
${custdir} type: Directory | |
${custdir} name: home-oracle-ords_custom-host-2 | |
EOF | |
# apex.yaml is generated, create podman pod | |
# podman kube play apex.yaml | |
echo 'apex.yaml is generated. please run' | |
echo 'podman kube play apex.yaml' | |
echo 'To monitor the progress' | |
echo 'podman logs apex-db' | |
echo 'podman exec -it apex-ords tail -f /tmp/install_container.log' | |
# end |
Oracle Cloud
ssh -i oci-apex.key opc@oci-apex
podmanのインストールとfirewalldの設定を行います。
#!/bin/sh | |
# Preparation script to setup Oracle APEX using container images | |
# on Oracle Container Registry. | |
# | |
# Install podman | |
# firewalld is ignored if already installed. | |
sudo dnf -y install container-tools firewalld | |
sudo systemctl enable firewalld | |
sudo systemctl start firewalld | |
# Setup firewalld to accept sqlnet, http and https connection. | |
sudo firewall-cmd --add-port=8181/tcp | |
sudo firewall-cmd --add-port=8443/tcp | |
sudo firewall-cmd --add-port=1521/tcp | |
sudo firewall-cmd --add-forward-port=port=443:proto=tcp:toport=8443 | |
sudo firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8181 | |
sudo firewall-cmd --runtime-to-permanent | |
sudo firewall-cmd --list-all | |
# Create group oinstall and user oracle. | |
sudo groupadd -g 54321 oinstall | |
sudo useradd -u 54321 -g 54321 oracle | |
sudo loginctl enable-linger 54321 | |
# end of preparation. |
[opc@apex ~]$ sudo su - oracle
[oracle@apex ~]$
podman pull container-registry.oracle.com/database/ords:latest
[oracle@apex ~]$ sh install_apex.sh パスワード
apex.yaml is generated. please run
podman kube play apex.yaml
To monitor the progress
podman logs apex-db
podman exec -it apex-ords tail -f /tmp/install_container.log
[oracle@apex ~]$
構成ファイルがapex.yamlとして出力されます。
[oracle@apex ~]$ podman kube play apex.yaml
Pod:
de1381c11f990c81c2c348a5fe11654e4fb9963a373216d54ccc3083ab515ec6
Containers:
66bac5230fe5f745e5dd1a822b3728ffb9f1cdbebbf42c944fd22b25d369e2da
a305fdf18191eb184892fc9180cb88cd420b280a2d530b72715eb26df62c70f3
[oracle@apex ~]$
podman exec -it apex-ords tail -f /tmp/install_container.log
大体30分弱でOracle APEXの構成が終了します。
--application/pages/page_00206
--application/end_environment
... elapsed: 4.8 sec
...done
Adjust instance settings
PL/SQL procedure successfully completed.
Disconnected from Oracle Database 23c Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Version 23.3.0.23.09
構成が終了すると、以下のURLからORDSのランディング・ページにアクセスできます。
Microsoft Azure
ssh -i apex_key.pem azureuser@azure-apex
これ以降の作業はOracle Cloudと同じです。
Google Cloud
Amazon Lightsail
ssh -i aws-key.pem ec2-user@aws-apex
これ以降の作業はOracle Cloudと同じです。
podman exec apex-db ./setPassword.sh <your_password>
最後に、install_apex.shを実行すると以下のようなYAMLファイルが生成されています。
apiVersion: v1 | |
kind: Pod | |
metadata: | |
labels: | |
app: apex | |
name: apex | |
spec: | |
containers: | |
- env: | |
- name: ORACLE_PWD | |
valueFrom: | |
secretKeyRef: | |
name: oracle_params | |
key: password | |
image: container-registry.oracle.com/database/free:latest | |
name: db | |
ports: | |
- containerPort: 1521 | |
hostPort: 1521 | |
- containerPort: 8181 | |
hostPort: 8181 | |
- containerPort: 8443 | |
hostPort: 8443 | |
securityContext: | |
privileged: true | |
- image: container-registry.oracle.com/database/ords:latest | |
name: ords | |
securityContext: | |
privileged: true | |
depends_on: | |
- db | |
volumeMounts: | |
- mountPath: /opt/oracle/variables | |
name: home-oracle-ords_secrets-host-0 | |
- mountPath: /etc/ords/config | |
name: home-oracle-ords_config-host-1 | |
- mountPath: /ords-entrypoint.d | |
name: home-oracle-ords_custom-host-2 | |
volumes: | |
- hostPath: | |
path: /home/oracle/ords_secrets | |
type: Directory | |
name: home-oracle-ords_secrets-host-0 | |
- hostPath: | |
path: /home/oracle/ords_config | |
type: Directory | |
name: home-oracle-ords_config-host-1 | |
- hostPath: | |
path: /home/oracle/ords_custom | |
type: Directory | |
name: home-oracle-ords_custom-host-2 |