Sophie

Sophie

distrib > Mandriva > 9.1 > ppc > by-pkgid > 350b66097dd972e8329eab9925787d4a > files > 21

howto-sgml-id-9.0-1mdk.noarch.rpm

<!doctype linuxdoc system>
<article>
<title>Linux Apache SSL PHP/FI frontpage mini-HOWTO
<author>Marcus Faure, <htmlurl url="mailto:marcus@faure.de" 
                              name="marcus@faure.de"> diterjemahkan oleh Psychedelio <htmlurl url="mailto:doniy@telkom.net" name="doniy@telkom.net">
<date>v1.1, July 1998 Terj. 1 Peb 1999

<abstract>
Dokumen ini adalah tentang pembuatan <bf>webserver serbaguna</bf> yang akan
mendukung isi web yang dinamis melalui bahasa scripting <bf>PHP/FI</bf>,
transmisi data yang aman berbasis <bf>SSL</BF> milik Netscape,
Eksekusi <bf>CGI</bf> yang aman dan M$ <bf>Frontpage Server Extension</bf>
</abstract>

<toc>

<sect>Pendahuluan
<p>
Sebelum Anda mulai membaca:
Pesan dari penulis : Karena penulis bukan <em/native english speaker/, jadi mungkin ada beberapa kesalahan eja/tata bahasa
dalam dokumen ini. Jangan ragu2 untuk memberitahukan adanya kesalahan pada penulis.

<sect1>Penjelasan Komponen
<p>
WebServer yang, semoga, akan Anda dapatkan setelah membaca howto ini terdiri
dari beberapa bagian, kode source apache asli dengan beberapa (ehm..banyak) patch-patch 
dan beberapa executable tambahan. Penulis menyarankan penggunaan versi software yang
telah dicoba oleh penulis, yang mungkin akan lebih mudah untuk dikompilasi dan akan
menghasilkan daemon yang cukup stabil. Jika Anda berani, Anda dapat mencoba mengkompilasi semua
software dengan versi-akhir-yang-memiliki-berton2-feature, tapi jangan salahkan penulis jika ada yang gagal
;-). Bagaimanapun, jika sukses Anda dapat melaporkan konfigurasi sistem yang Anda gunakan untuk dicantumkan
dalam versi mendatang dokumen ini. Semua langkah2 telah dicoba pada mesin linux 2.0.35,
jadi howto ini bisa dibilang spesifik, tapi Anda seharusnya bisa menggunakannya
untuk mesin linux versi lainnya.

Anda tidak harus mengkompile semua komponen. Penulis telah mencoba untuk menyusun
howto ini sehingga anda dapat melewati komponen yang tidak menarik Anda.

Dokumen ini bukan juga Manual pengguna untuk Apache, SSL, PHP/FI ataupun frontpage.
Tujuan utamanya adalah untuk mengurangi pusing2 yang dialami penyedia layanan web ketika
menginstall server mereka, dan juga untuk memberikan kontribusi atas nama penulis ( dan penerjemah :-)
kepada komunitas linux.

<bf>PHP</bf> adalah bahasa skripting yang mendukung halaman dynamic HTML[DHTML].
PHP mirip dengan SSI dari Apache, hanya jauh lebih kompleks dan memiliki modul database
untuk banyak database yang populer. PHP juga memerlukan GD libraries.

<bf>SSL</bf> adalah implementasi dari <em/Secure-Socket-Layer/ dari Netscape yang akan
memungkinkan koneksi yang aman lewat jaringan yang belum aman, misal, untk mengirim
nomor kartu kredit ke form berbasis web.

<bf>Frontpage</bf> adalah perangkat authoring <em/wysiwyg/ yang menggunakan beberapa
ekstensi spesifik server yang disebut <em/webbot/. Beberapa orang berpendapat bahwa frontpage cukup 
keren karena dapat membuat form feedback dan diskusi web tanpa harus mengerti html atau cgi
Frontpage malah menggantikan tugas mengupload site lewat ftp dengan publisher bawaan Frontpage
jika Anda ingin mendukung Frontpage Extension tapi tidak ingin mensetup server Windows
maka Frontpage Extension untuk server Apache adalah pilihan anda.

<sect1>Konfigurasi yang dicoba
<p>
Walaupun dokumen ini telah didownload sekitar 100 kali sejak pertama kali diterbitkan, Penulis hanya mendapatkan sedikit feedback. Malah, tidak ada yang memberitahukan pada penulis
konfigurasi lain yang berbeda dengan yang dibahas. Kombinasi yang jalan untuk penulis adalah:
<itemize>
<item>Linux 2.0.31, Apache 1.2.4, PHP 2.0.0, SSL 0.8.0, fp 98 3.0.3 (*)
<item>Linux 2.0.33, Apache 1.2.5, PHP 2.0.1, SSL 0.8.0, fp 98 3.0.3 (*)
<item>Linux 2.0.35, Apache 1.2.6, PHP 3, SSL 0.8.0, fp 98 3.0.4
</itemize>
(*) versi 3.0.3 adalah <ref id="fpverswarning" name="not recommended"> 

<sect1>Sejarah
<p>

v0.0/Apr 98:	Versi Preview

v1.0/Jun 98:	dengan Apache 1.2.6, bagian fp diupdate, sedikit perbaikan

v1.1/Jul 98:	versi Sgml dan disusun ulang

Anda dapat melihat versi terakhir dokumen ini di
<url url="http://www.faure.de">

<sect>Instalasi Komponen

<sect1>Persiapan
<p>
Anda akan perlu:
<itemize>
<item>Apache 1.2.6 <url url="http://www.apache.org/dist/apache_1_2_6.tar.gz">
<item>Ekstensi PHP/FI
 <url url="http://php.iquest.net/files/download.phtml?/files/php-2.01.tar.gz">
<item>GD Library <url url="http://siva.cshl.org/gd/gd.html">
<item>SSL 0.8.0 
 <url url="ftp://ftp.ox.ac.uk/pub/crypto/SSL/SSLeay-0.8.0.tar.gz">
<item>patch SSL untuk Apache 1.2.6
 <url url="ftp://ftp.ox.ac.uk/pub/crypto/SSL/apache_1.2.6+ssl_1.17.tar.gz">
<item>ekstensi server dan script install frontpage 98 
 <url url="http://www.rtr.com/fpsupport/download.htm">
</itemize>

Ambil source yang anda inginkan. Untar apache, php, gd dan ssl ke
<tt>/usr/src</tt>. Untar patch SSL ke <tt>/usr/src/apache_1.2.6</tt>.

<sect1>Menambahkan PHP
<p>
<tt>cd</tt> (pindah direktori) ke /usr/src/gd1.2 dan ketikan <tt/make/, yang mana akan membuat GD
library <tt>libgd.a</tt>, yang sebaiknya dicopy ke <tt>/usr/lib</tt>.
Sekarang <tt>cd</tt> ke <tt>php-2.0.1</tt> dan ketik/jalankan <tt>./install</tt>.

Pertanyaan yang relevan akan berupa:
<verb>
Would you like to compile PHP/FI as an Apache module? [yN] y
Are you compiling for an Apache 1.1 or later server? [Yn] y
Are you using Apache-Stronghold? [yN] y
Does your Apache server support ELF dynamic loading? [yN] y
Apache include directory (which has httpd.h)? [/usr/local/include/apache] /usr/src/apache_1.2.6/src
Would you like to build an ELF shared library? [yN] y
Additional directories to search for .h files []: /usr/src/gd1.2
Would you like the bundled regex library? [yN] n
</verb>

Seperti ekstensi frontpage, phtml juga membawa masalah keamanan
karena phtml jalan di bawah uid dari webserver. Pastikan menyalakan <em/safe mode/ dalam <tt>src/php.h</> dan batasi <em/search path/ ke lokasi yang aman. Ada beberapa
option lain dalam  php.h yang mungkin ingin Anda ganti. Jika Anda sangat memperhatikan
segi keamanan, kompilasilah php sebagai cgi. Walaupun hal ini akan mengurangi kinerja
dan tidak akan sebagus versi modulenya.

Ketikkan <tt>make</tt> untuk membuat semua file. Ketika kompilasi selesai,
copy <tt>mod_php.*</tt> dan <tt>libphp.a</tt> ke
<tt>/usr/src/apache_1.2.6/src</tt> Tambahkan
<verb>
Module php_module mod_php.o 
</verb>
ke akhir <tt>/usr/src/apache_1.2.6/src/Configuration</tt>, tambahkan juga
<verb>
-lphp -lm -lgdbm -lgd    
</verb>
ke <tt>EXTRA_LIBS</tt> dalam file yang sama,
<verb>
application/x-httpd-php phtml 
</verb>
ke <tt>mime.types</tt>-nya apache dan
<verb>
AddType  application/x-httpd-php .phtml
</verb>
ke <tt>srm.conf</tt>-nya Apache. 

Anda mungkin juga perlu menambahkan <tt>index.phtml</tt> ke <tt>DirectoryIndex</tt> dalam
file tersebut sehingga file index.phtml otomatis dipanggil ketika direktorinya diakses.

<sect1>Menambahkan SSL
<p>
<tt>cd /usr/src/SSL-0.8.0; ./Configure linux-elf; make; make rehash</tt>
perintah ini akan membuat library yang diperlukan oleh Apache. Anda dapat menggunakan perintah <tt>make test</tt>
untuk memastikan suksesnya proses kompilasi.
Anda harus menjalankan patch ke Apache. Pastikan Anda menerapkannya  
sebelum  patch-nya Frontpage, atau frontpage tidak akan jalan. 
<tt>cd</tt> ke <tt>/usr/src/apache_1.2.6/src</tt> dan jalankan
<tt>patch < /usr/src/apache_1.2.6/SSLpatch</tt>.
Set <tt>SSL_BASE=/usr/src/SSLeay-0.8.0</tt> dalam <tt>Configuration</tt>. Pastikan
bahwa <tt>Module proxy_module</tt> telah <em/disable/ atau Apache tidak akan
terkompilasi. Jika Anda perlu proxy, gunakan Squid
<url url="squid.nlanr.net">

Sekarang <tt>make certificate</tt> untuk membuat <tt>SSLconf/conf/httpsd.pem</tt>.

<sect1>Menambahkan frontpage
<p>
Ganti file <tt>fp30.linux.tar.Z</tt> ke <tt>fp30.linux.tar.gz</tt>,
atau script install tidak akan menemukannya. Jalankan <tt>./fp_install</tt>
untuk menyalin file-file  ke <tt>/usr/local/frontpage</tt>. zcat biasanya dapat
dipanggil sebagai /usr/bin/zcat.

Sekarang Anda harus menjalankan patch FP. <tt>cd</tt> ke
<tt>/usr/src/apache_1.2.6/src</tt> dan ketikkan
<tt>patch < /usr/src/frontpage/version3.0/apache-fp/fp-patch-apache_1.2.5</tt>
Yang akan membuat file2 <tt>mod_frontpage.*</tt> dan membuat beberapa perubahan
dalam <tt>Configuration</tt> etc. patch 1.2.5 akan bekerja dengan
apache 1.2.5 dan 1.2.6. Lewati bagian menginstall web, anda dapat
melakukannya nanti

<sect>Menyatukan semuanya

<sect1>Module Apache untuk dicoba
<p>
Module2 lain yang penulis pakai selain SSL, PHP dan frontpage adalah:
<verb>
Module env_module          mod_env.o
Module config_log_module   mod_log_config.o
Module mime_module         mod_mime.o
Module negotiation_module  mod_negotiation.o
Module dir_module          mod_dir.o
Module cgi_module          mod_cgi.o
Module asis_module         mod_asis.o
Module imap_module         mod_imap.o
Module action_module       mod_actions.o
Module alias_module        mod_alias.o
Module rewrite_module      mod_rewrite.o
Module access_module       mod_access.o
Module auth_module         mod_auth.o
Module anon_auth_module    mod_auth_anon.o
Module digest_module       mod_digest.o
Module expires_module      mod_expires.o
Module headers_module      mod_headers.o
Module browser_module      mod_browser.o
</verb>

<sect1>Lebih mengamankan CGI
<p>
Jika Anda adalah ISP (Mungkin, jika anda membaca ini) anda akan
ingin menambah keamanan. Utilitas suexec memungkinkan anda melakukannya; suexec akan
menjalankan CGI di bawah UID dari pemilik skrip, bukan menjalankan CGI
di bawah UID webserver. 
Ke <tt>/usr/src/apache_1.2.6/support</tt> dan <tt>make suexec</tt>.
<tt>chmod 4711 suexec</tt> dan copy ke lokasi yang disebutkan dalam
<tt>../src/httpd.h</tt> yang defaultnya akan berupa <tt>/usr/local/etc/httpd/sbin/suexec</tt>.
Jika patch-nya kelihatan sedikit cryptic bagi anda -seperti bagi penulis- edit
<tt>httpd.h</tt> dan set path ke lokasi yang lebih enak. 

<sect1>Kompilasi dan Install server daemon
<p>
Masuk ke <tt>/usr/src/apache_1.2.6/src</tt> dan edit
<tt>Configuration</tt> untuk mengeset semua Module yang ingin Anda include dalam
Apache daemon. Lalu, jalankan <tt>./Configure</tt> dan <tt>make</tt> yang akan
merupakan langkah kompilasi paling akhir dan paling rumit, jadi silakan berdoa. Jika
berhasil, <tt>cp httpsd</tt> ke <tt>/usr/sbin</tt>. daemon hasil kompilasi ini kelihatannya
besar, pikirkan hal ini ketika membangun webserver Anda. Buat direktori
<tt>/var/httpd</tt> dengan subdirektori <tt>cgi-bin</tt>, <tt>conf</tt>,
<tt>htdocs</tt>, <tt>icons</tt>, <tt>virt1</tt>, <tt>virt2</tt> dan
<tt>logs</tt>. Dalam <tt>/usr/src/apache_1.2.6/conf</tt> edit
<tt>access.conf-dist</tt>, <tt>mime.types</tt> dan <tt>srm.conf-dist</tt>
sesuai keperluan anda dan copy ke <tt>var/httpd/conf/access.conf</tt>,
<tt>srm.conf</tt> dan <tt>mime.types</tt>. Salin <tt>httpsd.pem</tt> yang telah anda buat
dengan <tt>make certificate</tt> ke <tt>/var/httpd/conf</tt>. Gunakan
<tt>httpd.conf</tt> berikut ini:
<verb>
ServerType standalone
Port 80
Listen 80
Listen 443
User wwwrun
Group wwwrun
ServerAdmin webmaster@yourhost.com
ServerRoot /var/httpd
ErrorLog logs/error_log
TransferLog logs/access_log
PidFile logs/httpd.pid
ServerName www.yourhost.com
MinSpareServers 3
MaxSpareServers 20
StartServers 3

SSLCACertificatePath /var/httpd/conf
SSLCACertificateFile /var/httpd/conf/httpsd.pem
SSLCertificateFile /var/httpd/conf/httpsd.pem
SSLLogFile /var/httpd/logs/ssl.log
 
&lt;VirtualHost www.virt1.com&gt;
SSLDisable
ServerAdmin webmaster@virt1.com
DocumentRoot /var/httpd/virt1
ScriptAlias /cgi-bin/ /var/httpd/virt1/cgi-bin/
ServerName www.virt1.com
ErrorLog logs/virt1-error.log
TransferLog logs/virt1-access.log
User virt1admin
Group users
&lt;/VirtualHost&gt;

&lt;VirtualHost www.virt1.com:443&gt;
ServerAdmin webmaster@virt1.com
DocumentRoot /var/httpd/virt1
ScriptAlias /cgi-bin/ /var/httpd/virt1/cgi-bin/
ServerName www.virt1.com
ErrorLog logs/virt1-ssl-error.log
TransferLog logs/virt1-ssl-access.log
User virt1admin
Group users
SSLCACertificatePath /var/httpd/conf
SSLCACertificateFile /var/httpd/conf/httpsd.pem
SSLCertificateFile /var/httpd/conf/httpsd.pem
SSLLogFile /var/httpd/logs/virt1-ssl.log
SSLVerifyClient 0
SSLFakeBasicAuth
&lt;/VirtualHost&gt;

&lt;VirtualHost www.virt2.com&gt;
SSLDisable
ServerAdmin webmaster@virt2.com
DocumentRoot /var/httpd/virt2
ScriptAlias /cgi-bin/ /var/httpd/virt2/cgi-bin/
ServerName www.virt2.com
ErrorLog logs/virt2-error.log
TransferLog logs/virt2-access.log
&lt;/VirtualHost&gt;
</verb>

Tergantung dari modules yang dikompilasi, tidak semua directives mungkin ada.
Anda dapat memanggil daftar direktif yang tersedia dengan <tt>httpsd -h</tt>.

<sect1>Menambahkan Frontpage extension ke web
<p>
Masuk ke <tt>/usr/local/frontpage/version3.0/bin</tt> dan panggil
<tt>./fpsrvadm</tt>. Pilih <tt>install</tt> dan <tt>apache-fp</tt>. 
Pertannyaan selanjutnya dijawab seperti ini :
<verb>
Enter server config filename: /var/httpd/conf/httpd.conf
Enter host name for multi-hosting []: www.virt2.com
Starting install, port: www.virt2.com:80, web: ""
Enter user's name []: virt2admin
Enter user's password:
Confirm password:
Creating root web
Recalculate links for root web
Install completed.
</verb>

Nama User harus berupa login unix dari pemilik web. Password tidak harus 
sama dengan password sistem. 
Anda harus secara manual menambahkan <tt>sendmailcommand:/usr/sbin/sendmail %r</tt>
ke <tt>/usr/local/frontpage/www.virt2.com:80.conf</tt>, atau user anda
tidak akan dapat mengirimkan email yang <em/web-generated/.
Agar Frontpage membaca ulang confignya , <tt>kill -HUP</tt> <tt>httpsd</tt>.
Sekarang anda dapat mengakses <tt>www.virt2.com</tt> dengan klien Frontpage Anda.

Dalam beberapa kondisi <tt>fpsrvadm</tt> mengeluhkan bahwa root web harus
diinstall terlebih dahulu, Hal yang agak tidak berguna mungkin harus anda lakukan
untuk membungkam <tt>fpsrvadm</tt>.

<sect1>Mulai menjalankan daemon
<p>
Jalankan Apache dengan <tt>httpsd -f /var/httpd/conf/httpd.conf</tt>. Sekarang 
Anda dapat mengakses <tt>www.virt1.com</tt> baik melalui http ataupun https. 
Tentu saja Anda harus membayar untuk <em/real certificate/ jika Anda ingin menawarkan
webwide SSL atau Anda akan ditertawakan oleh user anda. 

Salin salah satu file contoh dari directori examples-nya php ke<tt>virt1</tt>
untuk mengetest phtml.

<sect1>Beberapa Pertimbangan yang tertinggal
<p>
Jangan gunakan Frontpage 97 extensions yang tidak jalan, paling tidak di Linux.
Kalau anda menginstall versi spesifik dari library c++, esktensi ini kelihatanya bisa jalan,
namun nantinya logs anda akan dipenuhi dengan <tt>premature end of script
headers</tt> dan mailbox anda akan penuh complaints. 
Jangan gunakan Frontpage 98 Extension sebelum versi 3.0.2.1330. Jangan bingung,
nomor versi nampaknya inheterogenous. Ketika telnet ke port 80,
masukkan "get / http/1.0" dan tekan return dua kali, akan muncul
nomor versi 3.0.4 untuk frontpage.

<label id="fpverswarning">Anda dapat menemukan nomer versi frontpage yang lebih spesifik
dengan menjalankan
<tt>/usr/local/frontpage/currentversion/exes/_vti_bin/shtml.exe -version</tt>.
Varsi yang lebih lama mempunyai bug nakal yang meminta httpd.conf menjadi writable
oleh gid dari webserver. Hal ini dapat membuat anda menjerit jika anda peduli dengan
masalah sekuritas. Versi 3.0.2.1330 dan yang lebih baru lebih bisa digunakan.

<sect1>Bug2 yang telah diketahui
<p>
Ketika menekan <tt>Recalculate Links</tt> dalam klien frontpage, server 
memulai sebuah proses yang memakan 99% cpu cycles dand kira2 10 mb memory.
Tapi walaupun untuk web yang berukuran sedang dan mesin yang kencang,
Klien kadang menerima pesan timeout, Walaupun perhitungan akan berakhir dengan benar.
Beritahukan kepada pengguna Frontpage untuk sabar dan tidak menekan 
<tt>Recalculate Links</tt> beberapa kali. Beritahukan kepada diri Anda sendiri
untuk melengkapi server dengan minimal 64MB.

Perhatikan bahwa pada saat menulis, SSL dan frontpage keduanya jalan, namun
tidak bersamaan, yang juga berarti Anda tidak dapat mempublish web Anda dengan ssl
dan menggunakan webbots keduanya melalui https. Anda dapat mempublish web pada
port 80 dan mengaksesnya secara encrypted pada port 443, tetapi counters dan kawan-kawan akan rusak.
Penulis menganggap ini adalah bug. Masalah ini seharusnya akan diperbaiki dalam SSL 0.9.0.

<sect1>Akhir Kata
<p>
Untuk mereka yang menganggap judul howto ini hampir sepanjang isinya,
Pernahkan Anda mendengar meat loaf?

O.K. pembaca, Sekian untuk hari ini. Silakan kirim feedback, 
ucapan terima kasih, bunga, duit, mobil, kilang minyak dll.

</article>