İşletmemiz için birkaç uygulamayı barındırmak için kullanılacak bir makineye işletim sistemini yeniden yükleme sürecindeyim. Başvurular sadece yerel olacaktır; harici istemcilerden erişim yalnızca VPN üzerinden yapılacaktır.
Önceki kurulum, yöneticinin çoğu için bir barındırma kontrol paneli (Plesk) kullandı ve yeniden yükleme için benzer bir yazılım parçası kullanmaya bakıyordum - ama sonunda nasıl çalıştığını öğrenmem gerektiğini düşündüm. Yazılımın benim için yapacağı şeylerin çoğunu yapabilirim, ancak hepsinin simbiyozundan emin değilim. Bu , mümkünse, kendimi Yapılandırma Programcısı / Programcısı ülkesinden daha fazla uzaklaştırma girişimidir .
Aradığım şey için hiçbir yerde tam bir yol bulamıyorum, bu yüzden bu soruyu ortaya koyacağımı düşündüm ve insanlar bana yardımcı olabilirse, cevapları ile bunu düzenleyeceğim ve ilerlememi belgeleyeceğim / tuzaklar. Umarım bir gün bu birisine yardımcı olacaktır.
Ayrıntılar:
- CentOS 5.5 x86_64
- httpd: Apache / 2.2.3
- MySQL: 5.0.77 (yükseltilecek)
- PHP: 5.1 (yükseltilecek)
Gereksinimler:
- GÜVENLİK!!
- Güvenli dosya aktarımı
- Güvenli istemci erişimi (SSL Sertifikaları ve CA)
- Güvenli veri depolama
- Başka bir yerel makineye güvenli bağlantı (MySQL)
- Sanal ana bilgisayarlar / çoklu alt alanlar
- Yerel e-posta iyi olurdu, ancak kritik değildir
Adımlar:
sırasında, başka bir Plesk benzeri yönetici kullanacağımı düşünerek Sunucu Bileşenleri seçeneğini kontrol ettim. Geçmişte, kendi yoluma gitmeye karar verdiğimi düşünürsek, bu muhtemelen en iyi fikir değildi.
Kullanıcıları, ağ / IP adresini vb. Kurun. Yum güncelleme / yükseltme.
PHP ve MySQL'i en son sürümlere yükseltmek için CentOS dışında başka bir repota bakmak zorunda kaldım. IUS harika görünüyor ve bulduğum için mutluyum!
IUS deposunu paket yöneticimize ekleyin
cd /tmp
wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/epel-release-1-1.ius.el5.noarch.rpm
rpm -Uvh epel-release-1-1.ius.el5.noarch.rpm
wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/ius-release-1-4.ius.el5.noarch.rpm
rpm -Uvh ius-release-1-4.ius.el5.noarch.rpm
yum list | grep -w \.ius\. # list all the packages in the IUS repository; use this to find PHP/MySQL version and libraries you want to install
PHP'nin eski sürümünü kaldırın ve IUS'dan daha yeni bir sürümü yükleyin
rpm -qa | grep php # to list all of the installed php packages we want to remove
yum shell # open an interactive yum shell
remove php-common php-mysql php-cli #remove installed PHP components
install php53 php53-mysql php53-cli php53-common #add packages you want
transaction solve #important!! checks for dependencies
transaction run #important!! does the actual installation of packages.
[control+d] #exit yum shell
php -v
PHP 5.3.2 (cli) (built: Apr 6 2010 18:13:45)
MySQL'i IUS deposundan yükseltin
/etc/init.d/mysqld stop
rpm -qa | grep mysql # to see installed mysql packages
yum shell
remove mysql mysql-server #remove installed MySQL components
install mysql51 mysql51-server mysql51-devel
transaction solve #important!! checks for dependencies
transaction run #important!! does the actual installation of packages.
[control+d] #exit yum shell
service mysqld start
mysql -v
Server version: 5.1.42-ius Distributed by The IUS Community Project
Yükseltme talimatları IUS wiki'nin izniyle: http://wiki.iuscommunity.org/Doc/ClientUsageGuide .
scp
ve sftp
izin vermeden erişimi, ssh
girişcd /tmp
wget http://dag.wieers.com/rpm/packages/rssh/rssh-2.3.2-1.2.el5.rf.x86_64.rpm
rpm -ivh rssh-2.3.2-1.2.el5.rf.x86_64.rpm
useradd -m -d /home/dev -s /usr/bin/rssh dev
passwd dev
Düzenleme /etc/rssh.conf
rssh kullanıcılara SFTP erişim vermek.
vi /etc/rssh.conf
Uncomment veya ekle:
allowscp
allowsftp
Bu, Transmit'teki SFTP protokolü ile makineye bağlanmamı sağlıyor (benim tercih ettiğim FTP programı; eminim diğer FTP uygulamalarına benzer).
http://www.cyberciti.biz/tips/linux-unix-restrict-shell-access-with-rssh.html adresinden uygun rssh talimatları (takdirle!) .
ifconfig eth1:1 192.168.1.3 up #start up the virtual interface
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth1 ifcfg-eth1:1 #copy default script and match name to our virtual interface
vi ifcfg-eth1:1 #modify eth1:1 script
# ifcfg-eth1: 1 | şu şekilde değiştirin:
DEVICE = eth1: 1
IPADDR = 192.168.1.3
NETMASK = 255.255.255.0
AĞ = 192.168.1.0
ONBOOT = evet
İSİM = eth1: 1
Tekrarlayarak daha fazla Sanal arabirim ekleyin. ONBOOT=yes
İfcfg-eth1: 1 dosyasındaki satır nedeniyle , bu arabirim sistem önyüklendiğinde veya ağ başlatıldığında / yeniden başlatıldığında ortaya çıkar.
service network restart
Eth0 arabirimini kapatma: [OK]
eth1 arabirimini kapatma: [OK]
geridönüş arabirimini kapatma: [OK]
geridönüş arabirimini açma: [OK]
eth0 arabirimini açma: [OK]
eth1 arabirimini açma: [OK]
ping 192.168.1.3
192.168.1.3'ten 64 bayt: icmp_seq = 1 ttl = 64 zaman = 0.105 ms
Yukarıdaki rssh bölümünde SFTP için kullanmak üzere bir kullanıcı ekledim. Bu kullanıcıların giriş dizininde 'https' adında bir klasör oluşturdum. Burası bu site için belgeler yaşayacağı yerdir, bu yüzden onu işaret edecek bir sanal ev sahibi eklemem gerekiyor. Bu site için yukarıdaki sanal arayüzü kullanacağım (burada dev.site.local olarak adlandırılır).
vi /etc/http/conf/httpd.conf
Httpd.conf sonuna şunu ekleyin:
<VirtualHost 192.168.1.3:80>
ServerAdmin dev@site.local
DocumentRoot /home/dev/https
ServerName dev.site.local
ErrorLog /home/dev/logs/error_log
TransferLog /home/dev/logs/access_log
</VirtualHost>
Her şeyi kontrol etmek için https dizinine bir kukla index.html dosyası koydum. Ona göz atmayı denedim ve izin verilmedi hatalarla karşılandı. Günlükler yalnızca olup bitenler hakkında belirsiz bir referans verdi:
[Pzt 17 Mayıs 14:57:11 2010] [hata] [müşteri 192.168.1.100] (13) İzin reddedildi: /index.html dosyasına erişim reddedildi
Ben chmod 777 et denedim. al, ama boşuna. Görünüşe göre, https dizinini ve onun üst dizinlerini chmod + x yapmam gerekiyordu.
chmod +x /home
chmod +x /home/dev
chmod +x /home/dev/https
Bu sorunu çözdü.
DNS'yi yerel Windows Server 2003 kutumuz aracılığıyla kullanıyorum. Bununla birlikte, BIND için CentOS belgeleri burada bulunabilir: http://www.centos.org/docs/5/html/Deployment_Guide-en-US/ch-bind.html
SSL'nin çalışması için httpd.conf'da aşağıdakileri değiştirdim:
NameVirtualHost 192.168.1.3:443 #make sure this line is in httpd.conf
<VirtualHost 192.168.1.3:443> #change port to 443
ServerAdmin dev@site.local
DocumentRoot /home/dev/https
ServerName dev.site.local
ErrorLog /home/dev/logs/error_log
TransferLog /home/dev/logs/access_log
</VirtualHost>
Ne yazık ki, SSL ile bir sayfaya erişmeye çalışırken (Hata kodu: ssl_error_rx_record_too_long) hataları almaya devam ediyorum. JamesHannah'ın aşağıda açıkça belirttiği gibi , httpd.conf'daki certs konumlarını ayarlamamıştım ve bu nedenle tarayıcı tarayıcısı yapan sertifika olarak broswer'da sayfa atıldı.
Bu yüzden önce bir CA kurmam ve sertifika dosyaları oluşturmam gerekiyordu. Buradaki süreçte büyük (eskiyse) bir yol buldum: http://www.debian-administration.org/articles/284 .
İşte bu makaleden attığım ilgili adımlar:
mkdir /home/CA
cd /home/CA/
mkdir newcerts private
echo '01' > serial
touch index.txt #this and the above command are for the database that will keep track of certs
Dizin içinde bir openssl.cnf
dosya oluşturun /home/CA/
ve yukarıda bağlantılı adım başına düzenleyin. (Referans olarak, bitmiş openssl.cnf dosyam şöyle görünüyordu: http://pastebin.com/raw.php?i=hnZDij4T )
openssl req -new -x509 -extensions v3_ca -keyout private/cakey.pem -out cacert.pem -days 3650 -config ./openssl.cnf #this creates the cacert.pem which gets distributed and imported to the browser(s)
Adım openssl.cnf
adım talimatlara göre tekrar değiştirildi .
#generates certificate request, and key.pem which I renamed dev.key.pem.
openssl req -sha1 -new -nodes -out dev.req.pem -config ./openssl.cnf
Adım openssl.cnf
adım talimatlara göre tekrar değiştirildi .
#create and sign certificate.
openssl ca -out dev.cert.pem -md sha1 -config ./openssl.cnf -infiles dev.req.pem
ÖNEMLİ!
Dosyaları taşıyın ve yeni konumdaki httpd.conf dosyasından referans alın
cp dev.cert.pem /home/dev/certs/cert.pem
cp dev.key.pem /home/certs/key.pem
Ben httpd.conf certs yansıtmak ve SSLEngine açmak için güncelledim:
NameVirtualHost 192.168.1.3:443
<VirtualHost 192.168.1.3:443>
ServerAdmin dev@site.local
DocumentRoot /home/dev/https
SSLEngine on
SSLCertificateFile /home/dev/certs/cert.pem
SSLCertificateKeyFile /home/dev/certs/key.pem
ServerName dev.site.local
ErrorLog /home/dev/logs/error_log
TransferLog /home/dev/logs/access_log
</VirtualHost>
CA cert.pem dosyasını web'den erişilebilen bir yere koyun ve indirip tarayıcıya aktarın. Şimdi https: //dev.site.local adresini hiçbir hata veya uyarı olmadan ziyaret edebilirim .
Ve işte buradayım. İlerledikçe bunu düzenlemeye devam edeceğim. SSL e-postasının nasıl yapılandırılacağı ve / veya MySQL sunucusu olacak başka bir Box'a güvenli bağlantı yapılandırılmasına ilişkin ipuçları takdir edilecektir.