こんにちは友人や同僚。 入社後は、小規模なデータベース用のWebインターフェイスを作成する必要がありました。 すでに、LDAPとの将来の統合、特定のページを表示するためのユーザーアクセス権を柔軟に制御する機能、ページを作成するための便利なデザイナー、ビジネスインテリジェンスツールが必要になるという理解がありました。 そのとき、Oracle Application Express(ApEx)に出会いました。 この強力なツールは、Oracle Database 11g、12cなどの製品の一部であり、使用するエディションによってはコストがかかる場合があります。 しばしば起こるように、欲求は可能性を超えていました...
そのような場合、OracleにはOracle Database Express Edition(略してXE)の無料バージョンがあります。 次の制限が課せられます。
- 1つのサーバーにインストールできるインスタンスは1つだけです。
- マルチプロセッササーバーにインストールできますが、使用されるCPUは1つだけです。
- DBMSには最大1GbのRAMが利用可能です。
- ユーザーデータのサイズは11Gbに制限されています (一部のドキュメントでは4Gbの制限がまだありますが、これは既に古い情報です)。
- HTTPSは組み込みWebサーバーではサポートされていません。このため、Apache / Nginxを使用する必要があります。
これらの制限には非常に満足しています。 サーバーでは、VPSを2Gb RAMでデジタルオーシャンに持ち込み、Centos 7.2をインストールしました。 次の章では、Oracle XEのインストールについて説明します。次に、ビルトインのApplication Express v.4を最新の最新バージョンに更新します(この記事の執筆時点では5.0.4)。
Oracle 11g XEをインストールします
必要なパッケージをインストールし、スワップをファイルとして追加し、/ etc / fstabを変更します。
yum update -y && yum install screen vim bash-completion wget telnet mailx unzip epel-release -y && yum install bc libaio flex -y dd if=/dev/zero of=/var/swapfile bs=1M count=2048 && chmod 0600 /var/swapfile && mkswap /var/swapfile echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab && swapon -a && swapon -s
次のステップはオプションです。 CentosをOracle Linuxに変換してから、Oracleの推奨事項に従ってカーネル設定を変更するパッケージをダウンロードできます。詳細については、 こちらをご覧ください 。
curl -O https://linux.oracle.com/switch/centos2ol.sh && sh centos2ol.sh && yum distro-sync -y && yum install oracle-rdbms-server-11gR2-preinstall.x86_64 -y
Oracle XE配布キット(WindowsおよびLinuxのバージョンが利用可能)をダウンロードするには、ベンダーのWebサイトに登録する必要があります。無料で、何もする必要はありません。 zipアーカイブをダウンロードし、解凍してインストールします。
wget [[ ]] mv oracle-xe-11* oracle-xe-11.x86_64.rpm.zip mkdir oracle-xe && mv oracle-xe-* oracle-xe/ && cd oracle-xe/ unzip oracle-xe-* && cd Disk1/ rpm -ivh oracle-xe-*
RPMパッケージをインストールした後、configureパラメーターを指定してoracle-xeを実行する必要があります。この場合、セットアップ完了ウィザードが起動し、対話形式で質問が表示されます。 応答ファイルを使用したインストールも利用できます。このインストールでは、SYSアカウントのデフォルトのポートとパスワードを追加します。
echo "ORACLE_HTTP_PORT=8080" > /root/oracle-xe/Disk1/response/xe.rsp echo "ORACLE_LISTENER_PORT=1521" >> /root/oracle-xe/Disk1/response/xe.rsp echo "ORACLE_PASSWORD=[[ ]]" >> /root/oracle-xe/Disk1/response/xe.rsp echo "ORACLE_CONFIRM_PASSWORD=[[ ]]" >> /root/oracle-xe/Disk1/response/xe.rsp echo "ORACLE_DBENABLE=y" >> /root/oracle-xe/Disk1/response/xe.rsp /etc/init.d/oracle-xe configure responseFile=/root/oracle-xe/Disk1/response/xe.rsp
応答ファイルを使用してインストールした後、パスワードを安全な場所に保存し、xe.rspファイルから削除してください。
Application Expressをインストールする
配布キットをサーバーにダウンロードする必要があります。これは、サイトでの登録後にも利用できます。 ダウンロードして解凍:
cd ~ wget -O apex_5.zip [[ ]] mkdir apex5 && mv apex_5.zip apex5/ && cd apex5/ && unzip apex_5.zip
oracle_env.shファイルには、SQL * Plusクライアントが動作するために必要な環境変数が含まれており、このファイルの初期化をbashパラメーターに追加して、現在の環境に適用します。
echo ". /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh" >> /etc/bashrc . /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh
更新を始めましょう。 応答ファイルで使用されたパスワードを準備して入力します。これは、SYSアカウントでデータベースに接続するために必要です。
cd apex/ && sqlplus sys as sysdba
SQL * Plusコンソールから、次のスクリプトを実行する必要があります。
@apexins SYSAUX SYSAUX TEMP /i/ @apxldimg /root/apex5 @apxchpwd [[enter]] Enter the administrator's username [ADMIN] [[enter]] User "ADMIN" exists. Enter ADMIN's email [ADMIN] [[enter]] Enter ADMIN's password [] [[ ]] Changed password of instance administrator ADMIN.
最新の@apxchpwdスクリプトは、Application Expressの管理者アカウントのパスワードを変更します。 次の手順はやや安全ではありません。本当に必要な場合にのみ使用してください。このコマンドは、デフォルトでポート1521を使用するリスナー(SQLクライアントまたは他のさまざまなソフトウェアを使用)へのリモート接続を許可します。
EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);
対応するiptablesルールでこのポートへの接続を制限することをお勧めします。
たとえば、SQL Developerを使用してインターネット経由でリスナーに接続する場合、ログイン/パスワード/クエリはクリアテキストで送信されます。 これを回避するには、SSHトンネルまたはVPNを使用する必要があります。
SQL * Plusコンソールから、他の重要なパラメーターを変更します:セッション、プロセスの最大数 これらのパラメータは動的ではないため、データベースを再起動する必要があります。 また、OnlinelogモードからArchivelogモードに切り替えて、バックアップに使用できるディスク容量の制限を増やします。
alter system set sessions=250 scope=spfile; alter system set processes=200 scope=spfile; shutdown normal startup mount alter database archivelog; alter database open;
バックアップ
バックアップは別のボリュームに配置します。 これを行うには、Digital OceanホスティングサービスVolumesを使用し、新しいセクションをVPSに接続した後、次のコマンドを実行します。
mkfs.ext4 -F /dev/disk/by-id/scsi-0DO_Volume_oracle-backups-volume mkdir -p /opt/oracle-backups echo "/dev/disk/by-id/scsi-0DO_Volume_oracle-backups-volume /opt/oracle-backups ext4 defaults,nofail,discard 0 0" | tee -a /etc/fstab mount -a chown oracle:dba /opt/oracle-backups
これらのコマンドは、ディスクをマウントするためのフォルダーであるファイルシステムを作成し、/ etc / fstabファイルに読み込む際の自動マウントオプションを指定し、バックアップフォルダーの所有者を変更します。 SQL * Plusコンソールを起動し、バックアップオプションを変更します。
sqlplus sys as sysdba alter system set DB_RECOVERY_FILE_DEST_SIZE = 20G; alter system set DB_RECOVERY_FILE_DEST = '/opt/oracle-backups';
開始するには、2日間の復旧期間でバックアップするプリインストールスクリプトを使用します。 最初の起動はコンソールから実行しますが、将来はこのスクリプトをoracleユーザーcronに追加する必要があります。
su - oracle bash /u01/app/oracle/product/11.2.0/xe/config/scripts/backup.sh
すべての変更後、サーバーを再起動する必要があります。 oracle-xeサービスを手動で開始し、起動時に有効にするには、次のコマンドが役立ちます。
systemctl start oracle-xe.service systemctl enable oracle-xe.service
Webサーバーのセットアップ
すべてのトラフィックを暗号化するために、Nginxを使用することにしました。
そのインストールは非常に簡単です。
wget http://nginx.org/keys/nginx_signing.key rpm --import nginx_signing.key yum -y install nginx
次に、SSL証明書をサーバーにコピーしてWebサーバーの構成ファイルを変更するか、フォルダー/etc/nginx/conf.d/に拡張子.confを使用して新しい証明書を作成する必要があります。 そこに次の行を追加し、証明書へのパスを変更し、適切なドメイン名を指定する必要があります。
server { listen 80; server_name example.com; rewrite ^(.*) https://$server_name$1 permanent; } server { listen 443 ssl; server_name example.com; resolver 8.8.8.8; ssl_stapling on; ssl on; ssl_certificate /etc/nginx/keys/cert.crt; ssl_certificate_key /etc/nginx/keys/cert.key; ssl_dhparam /etc/pki/nginx/dhparam.pem; ssl_prefer_server_ciphers on; ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; ssl_session_tickets off; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers kEECDH+AES128:kEECDH:kEDH:-3DES:kRSA+AES128:kEDH+3DES:DES-CBC3-SHA:!RC4:!aNULL:!eNULL:!MD5:!EXPORT:!LOW:!SEED:!CAMELLIA:!IDEA:!PSK:!SRP:!SSLv2; location / { rewrite ^ "/app/f?p=101" permanent; } location /app { proxy_pass http://127.0.0.1:8080/apex; include /etc/nginx/reverse_proxy.conf; } location /i/ { proxy_pass http://127.0.0.1:8080/i/; include /etc/nginx/reverse_proxy.conf; } }
/etc/nginx/reverse_proxy.confファイルの内容:
proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_max_temp_file_size 0; client_max_body_size 1000m; client_body_buffer_size 128k; proxy_connect_timeout 180; proxy_send_timeout 180; proxy_read_timeout 180; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k;
説明: http://example.com/にアクセスすると、 http://example.com/app/f?p = 101へのリダイレクトが発生し、このアドレスはproxy_passディレクティブによって処理されます。このディレクティブはトラフィックをhttp://127.0にリダイレクトします.0.1:8080 / apex 、対応するWebアプリケーション番号、この場合は101。
構成を確認してから、Webサーバーを起動し、起動時に有効にしてください。
nginx -t systemctl start nginx systemctl enable nginx
これで、Oracle Application Expressのインストールが完了しました。 次の記事では、テストWebアプリケーションをインストールしてから、本当に役立つことを行います。
更新する 要望に関連して、TLS暗号化を提供するフロントエンドの説明が記事に追加されました。
あなたのコメント、発言、質問に心から喜んでいます。