vbulletin.com da yazdığım bir „sunucu kurulum kılavuzundan“ Türk forum sahiplerin de faydalanabilmesini istediğimden vbseoda Türkçe olarak da yayınlamak istedim.
Konunun İngilizcesi için How TO Setup a Server from A to Z through SSH - vBulletin Community Forum
Bu kılavuz Suse 10.1 üzerinde hazırlanmıştır.
Kılavuzun içeriğinde Apache, Mysql ,Php, Qmail (vpopmail ile) Xcache, Zend optimizer,Pecl Memcache Proftpd yeni alinmiş bir serverda ssh üzerinden kurulumu anlatılmakta.
Ayrıca bazı ayarlar konfigürasyonlar ve tavsiyeler içermekte.
---------------------------------------------------------------------
Yakin zaman önce eski bir sunucudan biraz daha iyi bir sunucuya taşınırken yaptığım işlemleri yazmak istedim. Sebebi bu islerlere yeni basliyanlara biraz olsun yol göstermek diyelim (:
İlk defa ssh ile sunucunuza bağlandığınızda host şirketinden aldığınız root şifrenizi değiştirmek başlayabilirsiniz.
Komut
Kullanışlı bir editör bütün yapacaklarınızda isinizi kolaylaştıracağından ilk önce bunu kuralım.
(standart VI düzenleyicisini de kullanabilirsiniz anca tavsiyem pico dur)
Code:
wget ftp://mirror.switch.ch/mirror/opensuse/distribution/SL-10.1/non-oss-inst-source/suse/i586/pico-4.64N-1.i586.rpm
rpm –i pico-4.64N-1.i586.rpm
Bir paketi kurarken ufak tefek gereklilikleri zaman kayıp etmeden yüklemek için apt-get bire bir.
Bu yüzden elimizin altında bulunmasında daima fayda var.
Kurulum
Code:
wget http://linux01.gwdg.de/~scorot/install-apt4suse.rpm
rpm -Uvh install-apt4suse.rpm
/usr/bin/install-apt4suse
İlk adımlardan sonra artik Apache kurulumuna başlayabiliriz.
Kaynak paketleri indireceğiniz bir klasör secin.
Kılavuzumuzda /usr/local/src kullanacağız.
APACHE
Code:
cd /usr/local/src
wget http://gd.tuwien.ac.at/infosys/servers/http/apache/dist/httpd/httpd-2.2.6.tar.bz2
tar -xvf httpd-2.2.6.tar.bz2
cd httpd-2.2.6
Yeni başlayan için uygun bir Konfigürasyon örneği:
Yapıştır
PHP Code:
#! /bin/sh
#
# Created by configure
CC="gcc"; export CC
"./configure" \
"--with-included-apr" \
"--with-mpm=prefork" \
"--prefix=/usr/local/apache22" \
"--enable-mods-shared=all" \
"--disable-isapi" \
"--enable-echo" \
"--enable-so" \
"--enable-rewrite" \
"--enable-ext-filter" \
"--enable-file-cache" \
"--enable-logio" \
"--enable-dumpio" \
"--enable-case_filter" \
"--enable-case_filter_in" \
"--enable-deflate" \
"--enable-cache" \
"--enable-disk-cache" \
"--enable-mem-cache" \
"CC=gcc" \
"$@"
Prefix apacheyi kuracağınız yoldur. İsterseniz bunu değiştirebilirsiniz.
Dosyayı kayıt edin (strg+x sonra y ve enter )
Code:
chmod 755 config.nice
ve çalıştırın
Yeni bir sunucuda daha önceden hiçbir şey yüklenmediyse böyle bir hata almanız olası
Checking for C compiler default output file name... configure: error: C compiler cannot create executables
Bu komutları girmeyi deneyin
Sonuç olarak böyle bir şey çıkıyorsa
-bash: gcc: command not found
Compiler (sanırım Türkçesi derleyici gibi bir şey) yüklü değil
Kurduğumuz apt-get I bunun için kullanabiliriz.
Code:
apt-get install gcc
Bu isi sizin için hal eder
Tekrar apacheye dönüp kurulumunuza başlayalım
Tekrar böyle bir hata alırsanız
configure: error: C compiler cannot create executables.
Ama compilerin kurulu olduguna eminseniz asagadaki komut sorunu cözecektir.
Konfigürasyonu oluştururken olabilecek başka bir hata
checking whether to enable mod_deflate... configure: error: mod_deflate has been requested but cannot be built due to prerequisite failures
Zlib-devel in yüklü olmadığı manasına gelir
Bu is içinde apt-get bire bir
Code:
apt-get install zlib-devel
Sorunu çözecektir
Ve yine kuruluma dönüyoruz
Code:
./config.nice
make
make install
Kurulum bittikten sonra yapılandırma dosyalarını ayarlayın
Code:
cd /usr/local/apache22/conf
pico httpd.conf
Birçok ayar dosyaların içinde açıklamalı anlatılıyor. Bunlarin her birini burada yazmak da pek
mümkün değil. Yinede 2 noktaya dikkat çekmek istiyorum sadece.
Birincisi her aktif ettiğiniz modül sistem kaynağı demektir.
Kullanmadığınız yâda ihtiyacınız olmadığı modülleri aktif etmeyin
İkincisi apache cacheinden de yararlanın. Özellikle vbseo kullanıcıları için bence bir kat
Daha önem kazanan bu özelliği aşağıdaki örnekteki gibi ayarlayabilirsiniz.
Ayrıca modül listesi olarak da bunu tavsiye ederim.
PHP Code:
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule php5_module modules/libphp5.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule cache_module modules/mod_cache.so
LoadModule mem_cache_module modules/mod_mem_cache.so
<IfModule mod_mem_cache.c>
CacheEnable mem /
MCacheSize 16096
MCacheMaxObjectCount 100
MCacheMinObjectSize 1
MCacheMaxObjectSize 2048
</IfModule>
<IfModule deflate_module>
AddOutputFilterByType DEFLATE text/css application/x-javascript
</IfModule>
MYSQL
Apache kurulumu bittiğinde göre artik Mysql e geçebiliriz. Mysql kurmak için rpm kullanacağız ancak
Apachedeki gibi kaynaktan kurmak isteyenler için kurulum örneğini yinede veriyorum.
Code:
groupadd mysql
useradd -g mysql mysql
gunzip < mysql-VERSION.tar.gz | tar -xvf –
cd mysql-VERSION
./configure --prefix=/usr/local/mysql --datadir=/var/lib/mysql --with-unix-socketpath=/var/lib/mysql.sock
Make
Make install
cp support-files/my-medium.cnf /etc/my.cnf
cd /usr/local/mysql
chown -R mysql .
chgrp -R mysql .
bin/mysql_install_db --user=mysql
chown -R root .
chown -R mysql var
bin/mysqld_safe --user=mysql
Örnegimizden sonra tektar rpmlere dönelim (:
En kısa yol. (bulunduğunuz klasörde sadece Mysql rpm dosyalarının olduğunda dikkat edin.!
Mysql yüklendi. (:
/etc/my.cnf dosyası sunucunun donanımı ile bire bir bağlantılı olduğundan herkese uyacak net bir yapılandırma vermek mümkün değil.
Yinede örneklendirme acısından standart bir server da sorunsuz fazla yük oluşturmadan çalışacak olan bir my.cnf
PHP Code:
[client]
user = username
password = password
port = 3306
socket = /var/lib/mysql/mysql.sock
[mysqld]
bind-address = 127.0.0.1
port = 3306
socket = /var/lib/mysql/mysql.sock
safe-show-database
old_passwords
back_log = 75
skip-innodb
skip-name-resolve
max_connections = 850
key_buffer = 32M
myisam_sort_buffer_size = 64M
join_buffer_size = 2M
read_buffer_size = 2M
sort_buffer_size = 3M
table_cache = 2000
thread_cache_size = 384
wait_timeout = 250
connect_timeout = 15
tmp_table_size = 64M
max_heap_table_size = 64M
max_allowed_packet = 64M
max_connect_errors = 10
thread_concurrency = 4
concurrent_insert = 2
read_rnd_buffer_size = 524288
bulk_insert_buffer_size = 8M
query_cache_limit = 3M
query_cache_size = 80M
query_cache_type = 1
query_prealloc_size = 163840
query_alloc_block_size = 32768
default-storage-engine = MyISAM
ft_min_word_len= 3
ft_max_word_len = 25
[mysqld_safe]
err-log=/var/lib/mysql/mysqld.log
open_files_limit = 8192
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
[isamchk]
key_buffer = 256M
sort_buffer_size = 256M
read_buffer = 4M
write_buffer = 4M
[myisamchk]
key_buffer = 64M
sort_buffer = 64M
read_buffer = 16M
write_buffer = 16M
ft_min_word_len=3
[mysqlhotcopy]
interactive-timeout
PHP
Php ile devam ediyoruz.
Iyi bir php konfigürasyonu icin örnek
Code:
./configure --prefix=/usr --datadir=/usr/lib/php --with-apxs2=/usr/local/apache22/bin/apxs --with-mysql --with-mysqli --with-gd --enable-gd-native-ttf --with-zlib-dir=/usr/lib --with-png-dir=/usr/lib --with-jpeg-dir=/usr/lib --with-freetype-dir=/usr/include/freetype --with-iconv
Oluşabilecek bir hata
configure: error: xml2-config not found. Please check your libxml2 installation.
configure: error: libjpeg.(a|so) not found.
configure: error: libpng.(a|so) not found.
Çözüm
Code:
apt-get install libxml2
apt-get install libxml2-devel
apt-get install jpeg
apt-get install libjpeg-devel
apt-get install libpng
apt-get install libpng-devel
apt-get install freetype
apt-get install freetype2-devel
Hala ayni hatayı alıyorsanız
configure: error: freetype.h not found.
Code:
updatedb
locate freetype.h
Dosyanın yolunu bulup yapılandırma komutunda bunu belirtin
Tekrar kuruluma devam edelim
Yine olusabilecek olan bir hata “make” asamasinda mysql kütüphanelerini (ey güzel türkce (: ) bulamasidir.
gcc: /usr/lib/mysql/libmysqlclient.so: No such file or directory
Çözüm
Code:
locate libmysqlclient.so
Sonuc asafaki gibiyse
/usr/lib/libmysqlclient.so
Sembolik linkler yapın
Code:
ln -s /usr/lib/libmysqlclient.so /usr/lib/mysql/
ln -s /usr/lib/libmysqlclient.so.15 /usr/lib/mysql/
ln -s /usr/lib/libmysqlclient.so.15.0.0 /usr/lib/mysql/
Sonra
Code:
make clean
make
make install
Code:
libtool --finish /usr/local/src/php/php-5.2.5/libs
/etc/ld.so.conf dosyasina kütüphaneleri ekliyelim
Code:
pico /etc/ld.so.conf
Yeni bir satira
PHP Code:
/usr/local/src/php/php-5.2.5/libs
Kayit edin ve cikin
Bazi sistemlerde ldconfig komutunu bulamadigi olabilir.
Bu gibi durumlarda
Sonuc komut olarak calistirin. Örnek
Php uzantisini httpd.conf icersindeki mime_module na ekleyin
PHP Code:
AddType application/x-httpd-php .php
Standart ayarlar icin Php.ini dosyasini /etc yolu altinda kopyalayin
Code:
cp php.ini-recommended /etc/php.ini
Alternatif olarak bu php.ini dosyasini da kullanabilirsiniz. (Birtakim güvenlik ve elden gecirilmis ayarlarla.)
PHP Code:
engine = On
zend.ze1_compatibility_mode = Off
short_open_tag = Off
asp_tags = Off
precision = 14
y2k_compliance = On
output_buffering = 4096
zlib.output_compression = Off
;zlib.output_compression_level = -1
implicit_flush = Off
unserialize_callback_func=
serialize_precision = 100
allow_call_time_pass_reference = Off
safe_mode = Off
safe_mode_gid = Off
safe_mode_include_dir =
safe_mode_exec_dir =
safe_mode_allowed_env_vars = PHP_
safe_mode_protected_env_vars = LD_LIBRARY_PATH
;open_basedir =
disable_functions =system, shell_exec, popen, pclose, proc_open, proc_close, proc_get_status, proc_nice, proc_terminate, passthru,show_source, escapeshellcmd, escapeshellarg
disable_classes =
expose_php = Off
max_execution_time = 30
max_input_time = 60
;max_input_nesting_level = 64
memory_limit = 128M
error_reporting = E_ALL
display_errors = Off
display_startup_errors = Off
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = Off
track_errors = Off
variables_order = "GPCS"
register_globals = Off
register_long_arrays = Off
register_argc_argv = Off
auto_globals_jit = On
post_max_size = 8M
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
;default_charset = "iso-8859-1"
doc_root =
user_dir =
extension_dir = "./"
enable_dl = On
file_uploads = On
upload_max_filesize = 2M
allow_url_fopen = On
allow_url_include = Off
default_socket_timeout = 60
sql.safe_mode = Off
mysql.allow_persistent = On
mysql.max_persistent = -1
mysql.max_links = -1
mysql.default_port =3306
mysql.default_socket =
mysql.default_host =
mysql.default_user =
mysql.default_password =
mysql.connect_timeout = 60
mysql.trace_mode = Off
mysqli.max_links = -1
mysqli.default_port = 3306
mysqli.default_socket =
mysqli.default_host =
mysqli.default_user =
mysqli.default_pw =
mysqli.reconnect = Off
session.use_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.bug_compat_42 = 0
session.bug_compat_warn = 1
session.referer_check =
session.entropy_length = 0
session.entropy_file =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
soap.wsdl_cache_enabled=1
soap.wsdl_cache_dir="/tmp"
soap.wsdl_cache_ttl=86400
Apache Mysql ve Php hazir
QMAIL
Siradaki islemimiz mail sistemizi kurmak
Gerekli paketleri indirin
Sisteminizde yüklü olan eski bir mail sisteminiz varsa kaldirin.
Sendmail in standart olarak kurulu olmassi muhtmel
Kaldirmak icin
Code:
/etc/init.d/sendmail stop
/sbin/init.d/sendmail stop
/etc/rc.d/init.d/sendmail stop
Herhangi bir sendmail islemi calisiyormu bakin
Code:
ps -ef|grep sendmail
Eger yukardaki komut sonuc verdiyse islem numarasini sonlandirin (pid)
Code:
kill PID-of-sendmail
Yüklü rom varsa kaldirmak icin
Code:
rpm -e --nodeps sendmail
Ve son olarak sendmail dosyalarini kaldirin (hata mesajlari alirsaniz bunlari göz ardi edebilirsiniz)
Code:
mv /usr/lib/sendmail /usr/lib/sendmail.old
mv /usr/sbin/sendmail /usr/sbin/sendmail.old
chmod 0 /usr/lib/sendmail.old /usr/sbin/sendmail.old
ln -s /var/qmail/bin/sendmail /usr/lib
ln -s /var/qmail/bin/sendmail /usr/sbin
Yollari olusturup ziplerimizi acalim
Code:
mkdir /package
mkdir /var/qmail
mv daemontools-0.76.tar.gz /package
chmod 1755 /package
tar -xvzf netqmail-1.06.tar.gz
tar -xvzf ucspi-tcp-0.88.tar.gz
tar -xvzf /package/daemontools-0.76.tar.gz
gerekli olan gruplari ve kullanicilarin kurulumu
Suse icin asadaki gibidir. Diger sistemler icin gerekli olanlar in INSTALL.ids dosyasinin icinde mevcut
PHP Code:
groupadd nofiles
useradd -g nofiles -d /var/qmail/alias alias
useradd -g nofiles -d /var/qmail qmaild
useradd -g nofiles -d /var/qmail qmaill
useradd -g nofiles -d /var/qmail qmailp
groupadd qmail
useradd -g qmail -d /var/qmail qmailq
useradd -g qmail -d /var/qmail qmailr
useradd -g qmail -d /var/qmail qmails
Netqmail kuralim
Code:
cd netqmail-1.06
Make setup check
./config
Asadagiki gibi bir hata aliyorsaniz
hard error
Sorry, I couldn't find your host's canonical name in DNS.
You will have to set up control/me yourself.
Asadaki komutu kullanin
Code:
./config-fast tam.host.isminiz
ucspi-tcp kurun
Code:
cd /usr/local/src/ucspi-tcp-0.88
make
böyle bir hata alirsaniz
/lib/libc.so.6: could not read symbols: Bad value
collect2: ld returned 1 exit status
bunu yapin:
3. satira ekleyin
Kayit edip cikin
Code:
Make
make setup check
ucspi-tcp-0.88 hazir
Sirada daemontools kurulumu
Code:
cd /package/admin/daemontools-0.76
cd src
pico error.h
on line 3 add
HTML Code:
#include <errno.h>
Kayit edip cikin
daemontools hazir
Qmail icin gerekli scriptlerimizi kuralim
yapıştır
PHP Code:
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start "`cat /var/qmail/control/defaultdelivery`"
Code:
chmod 755 /var/qmail/rc
Code:
echo ./Mailbox >/var/qmail/control/defaultdelivery
Qmail baslangic scripti
Code:
pico /var/qmail/bin/qmailctl
yapıştır:
PHP Code:
#!/bin/sh
PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin
export PATH
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
case "$1" in
start)
echo "qmail starts"
if svok /service/qmail-send ; then
svc -u /service/qmail-send /service/qmail-send/log
else
echo "qmail-send not running"
fi
if svok /service/qmail-smtpd ; then
svc -u /service/qmail-smtpd /service/qmail-smtpd/log
else
echo "qmail-smtpd not running"
fi
if [ -d /var/lock/subsys ]; then
touch /var/lock/subsys/qmail
fi
if svok /service/qmail-pop3d ; then
svc -u /service/qmail-pop3d /service/qmail-pop3d/log
else
echo qmail-pop3d supervise not running
fi
;;
stop)
echo "Stopping qmail..."
echo " qmail-smtpd"
svc -d /service/qmail-smtpd /service/qmail-smtpd/log
echo " qmail-send"
svc -d /service/qmail-send /service/qmail-send/log
echo " qmail-pop3d"
svc -d /service/qmail-pop3d /service/qmail-pop3d/log
if [ -f /var/lock/subsys/qmail ]; then
rm /var/lock/subsys/qmail
fi
;;
stat)
svstat /service/qmail-send
svstat /service/qmail-send/log
svstat /service/qmail-smtpd
svstat /service/qmail-smtpd/log
svstat /service/qmail-pop3d
svstat /service/qmail-pop3d/log
qmail-qstat
;;
doqueue|alrm|flush)
echo "flushing timeout table and sending alarm."
/var/qmail/bin/qmail-tcpok
svc -a /service/qmail-send
;;
queue)
qmail-qstat
qmail-qread
;;
reload|hup)
echo "Sende HUP-Signal an qmail-send."
svc -h /service/qmail-send
;;
pause)
echo "Pausing qmail-send "
svc -p /service/qmail-send
echo "Pausing qmail-smtpd "
svc -p /service/qmail-smtpd
echo "Pausing qmail-pop3d"
svc -p /service/qmail-pop3d
;;
cont)
echo "Setze qmail-send fort"
svc -c /service/qmail-send
echo "Setze qmail-smtpd fort"
svc -c /service/qmail-smtpd
echo "Continuing qmail-pop3d"
svc -c /service/qmail-pop3d
;;
restart)
echo "Restarting qmail:"
echo "* Stopping qmail-smtpd."
svc -d /service/qmail-smtpd /service/qmail-smtpd/log
echo "* Sending SIGTERM to qmail-send and restarting."
svc -t /service/qmail-send /service/qmail-send/log
echo "* Restarting qmail-smtpd."
svc -u /service/qmail-smtpd /service/qmail-smtpd/log
echo "* Restarting qmail-pop3d."
svc -t /service/qmail-pop3d /service/qmail-pop3d/log
;;
cdb)
tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
chmod 644 /etc/tcp.smtp.cdb
echo "/etc/tcp.smtp is loaded."
;;
help)
cat <<HILFE
stop -- stop Mailservice
start -- start Mailservice
pause -- stop Mailservice for a while
cont -- end of pause
stat -- Status Mailservice
cdb -- reload tcpserver cdb-file
restart -- restart qmail
doqueue -- Send all mails in queue now
reload -- reload local virtualdomain settings
queue -- Status from wait queue
alrm -- same as doqueue
flush -- same as doqueue
hup -- same as reload
HILFE
;;
*)
echo "Usage: $0 {start|stop|restart|doqueue|flush|reload|stat|pause|cont|cdb|queue|help}"
exit 1
;;
esac
exit 0
Code:
chmod 755 /var/qmail/bin/qmailctl
ln -s /var/qmail/bin/qmailctl /usr/bin
Supervise Scriptleri
Code:
mkdir /var/qmail/supervise/
mkdir /var/qmail/supervise/qmail-send/
mkdir /var/qmail/supervise/qmail-send/log/
mkdir /var/qmail/supervise/qmail-smtpd/
mkdir /var/qmail/supervise/qmail-smtpd/log/
mkdir /var/qmail/supervise/qmail-pop3d/
mkdir /var/qmail/supervise/qmail-pop3d/log/
Code:
pico /var/qmail/supervise/qmail-send/run
PHP Code:
#!/bin/sh
exec /var/qmail/rc
Code:
pico /var/qmail/supervise/qmail-send/log/run
PHP Code:
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail
Code:
pico /var/qmail/supervise/qmail-smtpd/run
(replace your.full.hostname with your hostname)
PHP Code:
#!/bin/sh
QMAILDUID=`id -u vpopmail`
NOFILESGID=`id -g vpopmail`
MAXSMTPD=`cat /var/qmail/control/concurrencyincoming`
LOCAL=`head -1 /var/qmail/control/me`
if [ -z "$QMAILDUID" -o -z "$NOFILESGID" -o -z "$MAXSMTPD" -o -z "$LOCAL" ]; then
echo QMAILDUID, NOFILESGID, MAXSMTPD oder LOCAL ist nicht gesetzt in
echo /var/qmail/supervise/qmail-smtpd/run
exit 1
fi
if [ ! -f /var/qmail/control/rcpthosts ]; then
echo "Keine /var/qmail/control/rcpthosts vorhanden!"
echo "Verweigere Start des SMTP-Listeners, weil das einen offenen Relay erzeugen wuerde."
exit 1
fi
exec /usr/local/bin/softlimit -m 5000000 \
/usr/local/bin/tcpserver -v -R -l "$LOCAL" -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" \
-u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /var/qmail/bin/qmail-smtpd \
/var/vpopmail/bin/vchkpw your.full.hostname /bin/true 2>&1
Code:
pico /var/qmail/supervise/qmail-smtpd/log/run
PHP Code:
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtpd
Code:
pico /var/qmail/supervise/qmail-pop3d/run
(replace your.full.hostname with your hostname)
PHP Code:
#!/bin/sh
exec /usr/local/bin/softlimit -m 5000000 \
/usr/local/bin/tcpserver -v -R -H -l 0 0 110 /var/qmail/bin/qmail-popup \
your.full.hostname /var/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1
Code:
pico /var/qmail/supervise/qmail-pop3d/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t \
/var/log/qmail/pop3d
Code:
chmod 755 /var/qmail/supervise/qmail-send/run
chmod 755 /var/qmail/supervise/qmail-send/log/run
chmod 755 /var/qmail/supervise/qmail-smtpd/run
chmod 755 /var/qmail/supervise/qmail-smtpd/log/run
chmod 755 /var/qmail/supervise/qmail-pop3d/run
chmod 755 /var/qmail/supervise/qmail-pop3d/log/run
Code:
mkdir /var/log/qmail/smtpd
chown qmaill /var/log/qmail /var/log/qmail/smtpd
Code:
chmod +t /var/qmail/supervise/qmail-pop3d
mkdir /var/log/qmail/pop3d
chown qmaill /var/log/qmail/pop3d
Sistem aliaslarini yapin
Code:
echo isim > /var/qmail/alias/.qmail-root
echo isim > /var/qmail/alias/.qmail-postmaster
ln -s .qmail-postmaster /var/qmail/alias/.qmail-mailer-daemon
chmod 644 /var/qmail/alias/.qmail-root /var/qmail/alias/.qmail-postmaster
Relayclients
Code:
echo '127.:allow,RELAYCLIENT=""' >>/etc/tcp.smtp
qmailctl cdb
Statik bir ip adressiniz varsa kendizi de ekliyebilirsiniz
Code:
echo 'youripadress:allow,RELAYCLIENT=""' >>/etc/tcp.smtp
qmailctl cdb
concurrencyincoming scripti
Code:
echo 20 > /var/qmail/control/concurrencyincoming
chmod 644 /var/qmail/control/concurrencyincoming
vpopmail kurulumu
Code:
tar -xzf vpopmail-5.4.25.tar.gz
cd vpopmail-5.4.25
groupadd -g 89 vchkpw
useradd -g vchkpw -u 89 -d /var/vpopmail vpopmail
mkdir /var/vpopmail
chown vpopmail.vchkpw /var/vpopmail
./configure --enable-clear-passwd=y --enable-tcpserver-file=/etc/tcp.smtp --enable-admin-email=mail@adressiniz.com --enable-logging=y
make
make install-strip
Qmail vpopmail ile hazir.
Son olarak scriplerimizi daemontools a ekleyip otomatik baslamasini saglaiyorsunuz
Code:
ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /var/qmail/supervise/qmail-pop3d /service
qmailctl komutu size asadaki gibi bir sonuc vermesi gerekir
/service/qmail-send: up (pid 26569) 2 seconds
/service/qmail-send/log: up (pid 26571) 2 seconds
/service/qmail-smtpd: up (pid 26572) 2 seconds
/service/qmail-smtpd/log: up (pid 26574) 2 seconds
/service/qmail-pop3d: up (pid 26576) 2 seconds
/service/qmail-pop3d/log: up (pid 26577) 2 seconds
messages in queue: 0
birkac saniye bekleyip tekrar qmailctl stat dediginizde bütün islemlerin uptime i yükselmis olmassi gerekmekte. Bir tanesi yükselmediyse ve takiliyorsa ilgili dosyalarinin icerigine ve izinlerine tekrar bakin.
Vpopmail ile domainizi ve mail adressinizi yapin.
Code:
cd /var/vpopmail/bin
./vadddomain yourdomainname.com yourpassword
Bir forum sahibi olarak üyeleriniz mail gönderdiginizde her ulasmayan veya var olmayan mail icin rapor almak zamanla cok sinir bozucu olabileceginden raporlari almayi kapatabilirsiniz.
Bunun icin ilgili domain isminizde
Code:
pico /var/vpopmail/domains/yourdomainname/.qmail-default
bulun
PHP Code:
| /home/vpopmail/bin/vdelivermail '' bounce-no-mailbox
degistirin
PHP Code:
| /home/vpopmail/bin/vdelivermail '' delete
Mail sisteminiz hazir (:
Sirada opcode cacher, optimizer ve memcacher var.
Forumlar ve özellikle vbseo lu olanlar icin cache vazgecilmez bir unsur dur.
Benim tavsiyem Xcache + Zend Optimizer + Pecl Memcache
XCACHE
Yeni bir sunucuda bu noktada su hatayi almaniz muhtemel
Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF
environment variable is set correctly and then rerun this script.
autoconfun yüklü olmadigi manasina gelir. Yüklemek icin
Code:
apt-get install autoconf
tekrar
Code:
./configure --enable-xcache
make
make install
cat xcache.ini >> /etc/php.ini
uzantinin nereye yüklendigini not edin.
örnek
Installing shared extensions: /usr/lib/php/extensions/no-debug-non-zts-20060613/
php.ini dosyasinizi acin
Satiri bulun
zend_extension = /usr/local/lib/php/extensions/non-debug-non-zts-xxx/xcache.so
Ve not ettiginiz uzantinin yolu ile degistirin
zend_extension = /usr/lib/php/extensions/no-debug-non-zts-20060613/xcache.so
Diger ayarlar bir bir anlatildigindan yine sunucunuzun özelliklerine göre ayarlamaniz gerekir.
Xcache kurulumu bitti.
Zend optimizer kurlumu
Ekrandaki yönergeleri takip edip kurulumu bitirin
Zend Optimizer hazır
Memcache
wget
Uzantının nereye kurulduğunu not edin
Örneğin
/usr/lib/php/extensions/no-debug-non-zts-20060613
php.ini dosyanizi acin
ve ekleyin
PHP Code:
extension=/usr/lib/php/extensions/no-debug-non-zts-20060613/memcache.so
Zend uzantılarını daima en son olarak yüklemek daha iyi olduğundan örneğin yukarıdaki satiri aşağıdaki satirin üstüne ekleyebilirsiniz
zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-3.3.0)
Buraya kadar geldiğinizde apache + php + mysql + qmail + xcache + zend optimizer + memcache sunucunuzda kurmuş olacaksanız
Scriptleriniz 90 % çoğunluğu init*.d üzerinden başlatılır ve bu iyidir de ancak apache konusu tavsiyem
Daemontools üzerinden başlatmaktır. Apache bazı durumlarda belleğin dolduğunda vs (ddos larda) kıtlanır ve çöker.Apache daemontools servisi olarak çalıştırıldığında da otomatik olarak yeniden baslar.
Yukarıdaki anlattığım qmail kurulumu esansında daemontools u kurmuştuk.
daemontools and ucspi-tcp kurulu olduğunu varsayarak
Code:
cd /usr/local/apache22
mkdir apachedaemon
pico run
paste
PHP Code:
#!/bin/sh
exec 2>&1
exec /usr/local/apache22/bin/httpd -DNO_DETACH 2>&1
Code:
mkdir log
cd log
pico run
paste
PHP Code:
#!/bin/sh
exec setuidgid root multilog t ./main
Code:
chmod 755 /usr/local/apache22/apachedaemon/run
chmod 755 /usr/local/apache22/apachedaemon/log/run
Son olarak service e link ekleyelim
Code:
ln -s /usr/local/apache22/apachedaemon /service
PROFTPD
Sunucumuzda tabiki bir de ftp server sina ihtiyac duyacagiz
Kurulumu
Code:
cd /usr/local/src
wget ftp://ftp.servus.at/ProFTPD/distrib/source/proftpd-1.3.1.tar.gz
tar -xf proftpd-1.3.1.tar.gz
cd proftpd-1.3.1
./configure
make
make install
Konfigürasyon dosyalarını ihtiyacınıza göre düzenleyin.
Code:
pico /usr/local/etc/proftpd.conf
Örnek (anonim girişe izin verilmemekte ve identlookups/reverse dns kapatılmış durumda, ftpnin daha hızlı çalışmasını sağlar)
PHP Code:
ServerName "www.domainismi.com"
ServerType standalone
DefaultServer on
Port 21
Umask 022
MaxInstances 5
User nobody
Group nogroup
DefaultRoot /ftp/kullanici/baslangic/klasörun/yolu/
AllowOverwrite on
<Limit SITE_CHMOD>
DenyAll
</Limit>
IdentLookups off
UseReverseDNS off
Ftp sunucusunu aşağıda ki komutla başlatabilirsiniz
Code:
/usr/local/sbin/proftpd
Tabi her defasinda elle baslatmayacagimiz icin bir init scriptine ihtiyacimiz var.
Code:
cd /etc/init.d/
pico proftpd
Yapistir
PHP Code:
#!/bin/sh
case $1 in
'start' )
/usr/local/sbin/proftpd
;;
'stop' )
kill `ps -ef | grep proftpd | grep -v grep | awk '{print $2}'` > /dev/null 2>&1
;;
*)
echo "usage: $0 {start|stop}"
esac
Çalıştırılır hale getirin
Başlangıca ekleyin
Code:
chkconfig -a proftpd
Kullanıcı eklemek
Örneğin forum yolunuz:
/home/httpd/vhosts/siteismi/
(-d kullanicinin ftpye baglandiginda cikacagi klasörün yolunu belirtmek icin vardir)
Code:
useradd myusername -d/home/httpd/vhosts/yoursitename/
(örneğin grup hakları ile eklemek için
(useradd myusername -d/home/httpd/vhosts/yoursitename/ -Ggroupname)
Kullanıcının şifresini belirlemek
Belirlediğiniz yol için kullanıcıya hakları vermeyi unutmayın /home/httpd/vhosts/siteismi/
(-R seçtiğiniz klasörü ve altındaki bütün dosyaları ve klasörleri kapsar..
Belli bir klasörde yâda dosyada hak vermek istiyorsanız komutu –R olmadan çalıştırın)
Code:
chown -R myusername /home/httpd/vhosts/yoursitename/
(with group; chown -R myusername:myusersgroupname) /home/httpd/vhosts/yoursitename/
Ftp sunucunuz hazır
Ben ilk başladığımda bu tarz bir kılavuz çok aramıştım. Sanırım bulmadığım için yazma gereksimi duydum. Pek mesaj yazmakla aram olmadığından benim için epey uğraş istedi bunu hazırlamak.
Bu sebeple lütfen kılavuzu paylaşırken bu konuya link verin veya benzer bir şekilde alıntınızı belirtin.
Selamlar Lethe