วันพฤหัสบดีที่ 9 พฤษภาคม พ.ศ. 2556

เรามาลองเซต Oracle HTTP Server เพื่อใช้กับ APEX กันเถอะ

เมื่อบทความที่แล้วผมได้กล่าวถึงการติดตั้ง Oracle HTTP Server พร้อมกับตัวอย่างการใช้ mod_plsql ไปนิดหน่อย... ดังนั้นบทความนี้ผมจะลองคอนฟิคเจ้า Oracle HTTP Server นี้ติดต่อกับ APEX 4.x. ผมคงไม่พูดถึงการติดตั้ง APEX นะครับ ไว้ว่างๆ จะทำตัวอย่างให้ดู ตอนนี้ลองดูจาก Link ไปก่อนนะครับ หรือข้ามไปที่ OTN Doc เลย
เรามาเลิกกันเลย ดีกว่า... ผมของสมมุติว่าเรา APEX โฟลเดอร์ อยู่นะครับ ทำไมนะหรือ เพราะเราต้องก๊อปปี้เจ้า APEX/images โฟลเดอร์นะสิ
Note: ผมใช้ Oracle 11g ดังนั้นต้องมีการแก้ไข profile นิดหน่อย ^_______^
- สิ่งแรกคือ unlock และเปลี่ยน password ให้กับ APEX_PUBLIC_USER
SQL> ALTER USER APEX_PUBLIC_USER ACCOUNT UNLOCK
  2  ;

User altered.

SQL> alter user APEX_PUBLIC_USER identified by password;
User altered.


SQL> CREATE PROFILE APEX_PROFILE LIMIT PASSWORD_LIFE_TIME UNLIMITED ;

Profile created.

SQL> select * from dba_profiles where profile='APEX_PROFILE';
PROFILE                        RESOURCE_NAME                    RESOURCE LIMIT
------------------------------ -------------------------------- -------- ----------------------------------------
APEX_PROFILE                   COMPOSITE_LIMIT                  KERNEL   DEFAULT
APEX_PROFILE                   SESSIONS_PER_USER                KERNEL   DEFAULT
APEX_PROFILE                   CPU_PER_SESSION                  KERNEL   DEFAULT
APEX_PROFILE                   CPU_PER_CALL                     KERNEL   DEFAULT
APEX_PROFILE                   LOGICAL_READS_PER_SESSION        KERNEL   DEFAULT
APEX_PROFILE                   LOGICAL_READS_PER_CALL           KERNEL   DEFAULT
APEX_PROFILE                   IDLE_TIME                        KERNEL   DEFAULT
APEX_PROFILE                   CONNECT_TIME                     KERNEL   DEFAULT
APEX_PROFILE                   PRIVATE_SGA                      KERNEL   DEFAULT
APEX_PROFILE                   FAILED_LOGIN_ATTEMPTS            PASSWORD DEFAULT
APEX_PROFILE                   PASSWORD_LIFE_TIME               PASSWORD UNLIMITED
APEX_PROFILE                   PASSWORD_REUSE_TIME              PASSWORD DEFAULT
APEX_PROFILE                   PASSWORD_REUSE_MAX               PASSWORD DEFAULT
APEX_PROFILE                   PASSWORD_VERIFY_FUNCTION         PASSWORD DEFAULT
APEX_PROFILE                   PASSWORD_LOCK_TIME               PASSWORD DEFAULT
APEX_PROFILE                   PASSWORD_GRACE_TIME              PASSWORD DEFAULT

16 rows selected.

SQL> select * from dba_profiles where profile='DEFAULT';

PROFILE                        RESOURCE_NAME                    RESOURCE LIMIT
------------------------------ -------------------------------- -------- ----------------------------------------
DEFAULT                        COMPOSITE_LIMIT                  KERNEL   UNLIMITED
DEFAULT                        SESSIONS_PER_USER                KERNEL   UNLIMITED
DEFAULT                        CPU_PER_SESSION                  KERNEL   UNLIMITED
DEFAULT                        CPU_PER_CALL                     KERNEL   UNLIMITED
DEFAULT                        LOGICAL_READS_PER_SESSION        KERNEL   UNLIMITED
DEFAULT                        LOGICAL_READS_PER_CALL           KERNEL   UNLIMITED
DEFAULT                        IDLE_TIME                        KERNEL   UNLIMITED
DEFAULT                        CONNECT_TIME                     KERNEL   UNLIMITED
DEFAULT                        PRIVATE_SGA                      KERNEL   UNLIMITED
DEFAULT                        FAILED_LOGIN_ATTEMPTS            PASSWORD 10
DEFAULT                        PASSWORD_LIFE_TIME               PASSWORD 180
DEFAULT                        PASSWORD_REUSE_TIME              PASSWORD UNLIMITED
DEFAULT                        PASSWORD_REUSE_MAX               PASSWORD UNLIMITED
DEFAULT                        PASSWORD_VERIFY_FUNCTION         PASSWORD NULL
DEFAULT                        PASSWORD_LOCK_TIME               PASSWORD 1
DEFAULT                        PASSWORD_GRACE_TIME              PASSWORD 7

16 rows selected.

SQL> alter user APEX_PUBLIC_USER profile APEX_PROFILE;

User altered.

SQL>
SQL> conn APEX_PUBLIC_USER
Enter password:
Connected.
SQL>
- จากนั้น ก๊อปปี้ images โฟล์เดอรไปที่ในที่ต้องการ (จากครั้งที่แล้ว Oracle HTTP server ผมอยู่ที่ /u01/app/oracle/Middleware/Oracle_WT1/instances/instance1/config ... งั้นผมขอที่นี่ละกัน แต่จริงๆไม่ใช่ปัญหา เพราะอย่างไรเราก็ต้องเซต Alias อยู่ดี)
$ cp -rf images /u01/app/oracle/Middleware/Oracle_WT1/instances/instance1/config/OHS/ohs1
- ตามด้วยการแก้ไข dads.conf ไฟล์ แล้ว restart Oracle HTTP server
$ vi /u01/app/oracle/Middleware/Oracle_WT1/instances/instance1/config/OHS/ohs1/mod_plsql/dads.conf

$ cat /u01/app/oracle/Middleware/Oracle_WT1/instances/instance1/config/OHS/ohs1/mod_plsql/dads.conf
# ============================================================================
#                     mod_plsql DAD Configuration File
# ============================================================================
# 1. Please refer to dads.README for a description of this file
# ============================================================================

# Note: This file should typically be included in your plsql.conf file with
# the "include" directive.

# Hint: You can look at some sample DADs in the dads.README file

# ============================================================================

Alias /i/ "/u01/app/oracle/Middleware/Oracle_WT1/instances/instance1/config/OHS/ohs1/images/"

<Location /pls/apex>
 Order deny,allow
 PlsqlDocumentPath docs
 AllowOverride None
 PlsqlDocumentProcedure         wwv_flow_file_mgr.process_download
 PlsqlDatabaseConnectString     localhost:1521:orcl
 PlsqlNLSLanguage               AMERICAN_AMERICA.AL32UTF8
 PlsqlAuthenticationMode        Basic
 SetHandler                     pls_handler
 PlsqlDocumentTablename         wwv_flow_file_objects$
 PlsqlDatabaseUsername          APEX_PUBLIC_USER
 PlsqlDefaultPage               apex
 PlsqlDatabasePassword          password
 PlsqlRequestValidationFunction wwv_flow_epg_include_modules.authorize
 Allow from all
</Location>

$ export ORACLE_HOME=/u01/app/oracle/Middleware/Oracle_WT1
$ export ORACLE_INSTANCE=/u01/app/oracle/Middleware/Oracle_WT1/instances/instance1
$ /u01/app/oracle/Middleware/Oracle_WT1/opmn/bin/opmnctl status

Processes in Instance: instance1
---------------------------------+--------------------+---------+---------
ias-component                    | process-type       |     pid | status
---------------------------------+--------------------+---------+---------
ohs1                             | OHS                |    5611 | Alive

$ /u01/app/oracle/Middleware/Oracle_WT1/opmn/bin/opmnctl  stopproc ias-component=ohs1
opmnctl stopproc: stopping opmn managed processes...
$ /u01/app/oracle/Middleware/Oracle_WT1/opmn/bin/opmnctl  startproc ias-component=ohs1
opmnctl startproc: starting opmn managed processes...
$ /u01/app/oracle/Middleware/Oracle_WT1/opmn/bin/opmnctl status

Processes in Instance: instance1
---------------------------------+--------------------+---------+---------
ias-component                    | process-type       |     pid | status
---------------------------------+--------------------+---------+---------
ohs1                             | OHS                |    5841 | Alive

$
- หลังจากนั้นลองเรียกการใช้งานด้วย http://IP:7777/pls/apex มันควรที่จะต้องโชว์ผลลัพธ์ดังรูปข้างล่าง


ไม่มีความคิดเห็น: