แสดงบทความที่มีป้ายกำกับ http แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ http แสดงบทความทั้งหมด

วันพฤหัสบดีที่ 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 มันควรที่จะต้องโชว์ผลลัพธ์ดังรูปข้างล่าง


วันอังคารที่ 7 พฤษภาคม พ.ศ. 2556

เริ่มต้น MOD_PLSQL แบบรวบรัด (ติดตั้ง Oracle HTTP Server)

ผมต้องการที่จะลองทดสอบ mod_plsql โดยที่ผมต้องการที่จะเขียน pl/sql แบบง่ายดังตัวอย่างข้างล่าง
SQL> CREATE or REPLACE PROCEDURE test  AS
  2  BEGIN NULL;
  3  owa_util.mime_header('text/html');
  4  htp.prn('
  5  <html>
  6  <head>
  7  <meta http-equiv="Content-Type" content="text/html">
  8  <title>TEST Oracle WebTier</title>
  9  </head>
 10  <body TEXT="#000000" BGCOLOR="#FFFFFF">
 11  <h1>Test :)</h1>
 12  </body>
 13  </html>
');
 14   15  END;
 16  /

Procedure created.
แต่ความตั้งใจของผมคือการใช้ mod_plsql ติดต่อฐานข้อมูลจากนั้นก็เรียก procedure "test". สิ่งแรกที่ต้องทำคือดาวน์โหลด Oracle HTTP Server.

ผมต้องขอข้ามขั้นตอนในส่วนนี้ จากนั้นก็เริ่มติดตั้ง (ผมขอแบบติดตั้งอย่างเดียว จากนั้นค่อย Config)
$ ls -l ofm_webtier_linux_11.1.1.7.0_32_disk1_1of1.zip
-rw-r--r-- 1 oracle oinstall 1790011557 May  6 20:23 ofm_webtier_linux_11.1.1.7.0_32_disk1_1of1.zip
$ unzip ofm_webtier_linux_11.1.1.7.0_32_disk1_1of1.zip

$ cd Disk1/
$ ./runInstaller

มันรัน "runInstaller" script. จะพบหน้า installer ดังข้างล่าง


 ผมเลือกที่จะ Install Software - Do Not Configure







หลังจากทำการติดตั้งเรียบร้อยสมใจ ผมก็ได้เวลาลอง Config ดู
$ export ORACLE_HOME=/u01/app/oracle/Middleware/Oracle_WT1
$ /u01/app/oracle/Middleware/Oracle_WT1/bin/config.sh
"config.sh" ผมจะพบหน้าที่ทำการ Configuration - ในกรณีนี้ผมต้องการ "Oracle HTTP Server" เท่านั้น








จากนั้นก็ได้เวลา configure mod_plsql
$ 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                |   24812 | Alive

$ 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

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

<Location /demo>
  SetHandler pls_handler
  Order deny,allow
  Allow from all
  AllowOverride None
  PlsqlDatabaseUsername         demo
  PlsqlDatabasePassword         password
  PlsqlAuthenticationMode       Basic
  PlsqlDatabaseConnectString localhost:1521:orcl
</Location>

$ /u01/app/oracle/Middleware/Oracle_WT1/opmn/bin/opmnctl stopall
opmnctl stopall: stopping opmn and all managed processes...
$ /u01/app/oracle/Middleware/Oracle_WT1/opmn/bin/opmnctl startall
opmnctl startall: starting opmn and all managed processes...
$ /u01/app/oracle/Middleware/Oracle_WT1/opmn/bin/opmnctl status

Processes in Instance: instance1
---------------------------------+--------------------+---------+---------
ias-component                    | process-type       |     pid | status
---------------------------------+--------------------+---------+---------
ohs1                             | OHS                |   25272 | Alive
หลังจาก Restart OPMN... เรียก url http://chart01:7777/demo/test (<Location /demo> = ttp://chart01:7777/demo และ procedure ชื่อ test)
บน browser จะโชว์ "Test :)".