मैं एक मशीन पर ओएस को फिर से स्थापित करने की प्रक्रिया में हूं, जिसका उपयोग हमारे व्यवसाय के लिए कुछ अनुप्रयोगों को होस्ट करने के लिए किया जाएगा। आवेदन केवल स्थानीय होंगे; बाहरी ग्राहकों से पहुंच केवल वीपीएन के माध्यम से होगी।
पूर्व सेटअप ने अधिकांश व्यवस्थापक के लिए एक होस्टिंग कंट्रोल पैनल (Plesk) का उपयोग किया था, और मैं पुनर्स्थापना के लिए एक अन्य समान सॉफ्टवेयर का उपयोग कर रहा था - लेकिन मुझे लगा कि मुझे यह सीखना चाहिए कि यह कैसे काम करता है। मैं सॉफ्टवेयर का सबसे ज्यादा काम मेरे लिए कर सकता हूं, लेकिन मैं यह सब के सहजीवन पर स्पष्ट नहीं हूं। यह सब विन्यास प्रोग्रामर / प्रोग्रामर की भूमि से खुद को दूर करने का एक प्रयास है , यदि संभव हो तो।
मैं जो कुछ भी खोज रहा हूं, उसके लिए मुझे पूरा वॉकथ्रू नहीं मिल रहा है, इसलिए मुझे लगा कि मैं इस सवाल को उठाऊंगा, और अगर लोग इस तरह से मेरी मदद कर सकते हैं तो मैं इसे उत्तर के साथ संपादित करूंगा, और अपनी प्रगति का दस्तावेज दूंगा / नुकसान। उम्मीद है कि किसी दिन यह किसी को लाइन में मदद करेगा।
विवरण:
- सेंटोस 5.5 x86_64
- httpd: अपाचे / 2.2.3
- MySQL: 5.0.77 (अपग्रेड किया जाना है)
- PHP: 5.1 (अपग्रेड किया जाना है)
आवश्यकताएँ:
- सुरक्षा !!
- सुरक्षित फ़ाइल स्थानांतरण
- सुरक्षित क्लाइंट एक्सेस (SSL Certs और CA)
- सुरक्षित डेटा संग्रहण
- किसी अन्य स्थानीय मशीन से सुरक्षित कनेक्शन (MySQL)
- Virtualhosts / कई उप डोमेन
- स्थानीय ईमेल अच्छा होगा, लेकिन महत्वपूर्ण नहीं
कदम:
से गुजरने के दौरान, मैंने सर्वर कंपोनेंट्स के विकल्प की जाँच करते हुए सोचा कि मैं एक और Plesk- जैसे एडमिन का उपयोग करने जा रहा हूँ। दृष्टिहीनता में, मैंने अपने तरीके से जाने का प्रयास करने का विचार किया, यह शायद सबसे अच्छा विचार नहीं था।
सेटअप उपयोगकर्ता, नेटवर्किंग / आईपी पता, आदि यम अद्यतन / उन्नयन।
को अपग्रेड करें : PHP और MySQL को नवीनतम संस्करणों में अपग्रेड करने के लिए, मुझे CentOS के बाहर एक और रेपो को देखना होगा। IUS बहुत अच्छा लग रहा है और मुझे खुशी है कि मैंने इसे पाया!
हमारे पैकेज मैनेजर में IUS रिपॉजिटरी जोड़ें
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 के पुराने संस्करण को निकालें और IUS से नया संस्करण स्थापित करें
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)
IUS रिपॉजिटरी से MySQL अपग्रेड करें
/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
आईयूएस विकी के सौजन्य से अपग्रेड निर्देश: http://wiki.iuscommunity.org/Doc/ClientUsageGideide ।
scp
और sftp
उपयोग करने के लिए rssh (प्रतिबंधित शेल) स्थापित करेंssh
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
/etc/rssh.conf
Rssh उपयोगकर्ताओं को SFTP तक पहुंच प्रदान करने के लिए संपादित करें ।
vi /etc/rssh.conf
Uncomment या जोड़ें:
allowscp
allowsftp
यह मुझे ट्रांसमिट में SFTP प्रोटोकॉल के माध्यम से मशीन से कनेक्ट करने की अनुमति देता है (मेरी पसंद का एफ़टीपी प्रोग्राम; मुझे यकीन है कि यह अन्य एफ़टीपी अनुप्रयोगों के साथ समान है)।
rssh निर्देश http://www.cyberciti.biz/tips/linux-unix-restrict-shell-access-with-rssh.html से विनियोजित (प्रशंसा के साथ!) ।
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 | संशोधित करें तो यह इस तरह दिखता है:
DEVICE = eth1: 1
IPADDR = 192.168.1.3
NETMASK = 255.255.255.0
NETWORK = 192.168.1.0
ONBOOT = हाँ
NAME = eth1: 1
दोहराने से आवश्यकतानुसार अधिक वर्चुअल इंटरफेस जोड़ें। की वजह से ONBOOT=yes
ifcfg-eth1 में लाइन: 1 फ़ाइल, इस इंटरफेस ऊपर लाया जाएगा जब सिस्टम जूते, या नेटवर्क शुरू होता है / पुनरारंभ।
service network restart
शट डाउनिंग इंटरफ़ेस eth0: [ओके]
शट डाउन इंटरफ़ेस एथ 1: [ओके]
शट डाउन लूपबैक इंटरफ़ेस: [ओके]
लूपबैक इंटरफ़ेस लाना: [ओके]
इंटरफ़ेस एथ0 लाना: [ओके]
इंटरफ़ेस एथ 1 लाना: [ओके]
ping 192.168.1.3
192.168.1.3 से 64 बाइट्स: icmp_seq = 1 ttl = 64 समय = 0.105 एमएस
ऊपर के rssh अनुभाग में मैंने SFTP के लिए उपयोग करने के लिए एक उपयोगकर्ता जोड़ा। इस उपयोगकर्ता की होम निर्देशिका में, मैंने 'https' नामक एक फ़ोल्डर बनाया। यह वह जगह है जहां इस साइट के लिए दस्तावेज़ लाइव होंगे, इसलिए मुझे एक वर्चुअलहोस्ट जोड़ना होगा जो इसे इंगित करेगा। मैं इस साइट के लिए उपरोक्त आभासी इंटरफ़ेस का उपयोग करूँगा (यहाँ dev.site.local कहा जाता है)।
vi /etc/http/conf/httpd.conf
Httpd.conf के अंत में निम्नलिखित जोड़ें:
<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>
मैंने https निर्देशिका में एक डमी index.html फ़ाइल डाल दी है ताकि सबकुछ ठीक से जांचा जा सके। मैंने इसे ब्राउज़ करने की कोशिश की, और अनुमति से इनकार त्रुटियों के साथ मुलाकात की। लॉग्स ने केवल एक अस्पष्ट संदर्भ दिया कि क्या चल रहा था:
[सोम 17 मई 14:57:11 2010] [त्रुटि] [ग्राहक 192.168.1.100] (13) अनुमति से इनकार: /index.html तक पहुंच से इनकार किया गया
मैंने 777 एट चामोड की कोशिश की। अल।, लेकिन कोई फायदा नहीं हुआ। पता चला, मुझे https निर्देशिका और इसके 'मूल निर्देशिका' को chmod + x करने की आवश्यकता है।
chmod +x /home
chmod +x /home/dev
chmod +x /home/dev/https
इससे वह समस्या हल हो गई।
मैं अपने स्थानीय विंडोज सर्वर 2003 बॉक्स के माध्यम से DNS को संभाल रहा हूं। हालाँकि, BIND के लिए CentOS प्रलेखन यहाँ पाया जा सकता है: http://www.centos.org/docs/5/html/Deployment_Guide-en-US/ch-bind.html
SSL काम करने के लिए, मैंने httpd.conf में निम्नलिखित बदलाव किए:
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>
दुर्भाग्य से, मुझे SSL के साथ पृष्ठ तक पहुँचने का प्रयास करते समय त्रुटि (त्रुटि कोड: ssl_error_rx_record_too_long) मिलती रहती है। जैसा कि जेम्सहन्ना ने इनायत से नीचे बताया , मैंने httpd.conf में समारोहों के स्थानों की स्थापना नहीं की थी, और इस तरह ब्रॉसर पर फेंके गए पेज को प्रमाणित किया जा रहा था, क्योंकि ब्राउज़र को बाल्क बनाया गया था।
इसलिए पहले, मुझे एक CA सेट करने और प्रमाण पत्र फ़ाइलें बनाने की आवश्यकता थी । मुझे इस प्रक्रिया पर एक महान (यदि पुराना) walkthrough मिला: http://www.debian-administration.org/articles/284 ।
यहाँ उस लेख से प्रासंगिक कदम उठाए गए हैं:
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
डीआईआर openssl.cnf
में एक फाइल बनाएं /home/CA/
और इसे ऊपर दिए गए वाकथ्रू के अनुसार संपादित करें। (संदर्भ के लिए, मेरी समाप्त हुई Opensl.cnf फ़ाइल इस तरह दिखती है: 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)
openssl.cnf
फिर से चलने वाले निर्देशों के अनुसार संशोधित किया गया।
#generates certificate request, and key.pem which I renamed dev.key.pem.
openssl req -sha1 -new -nodes -out dev.req.pem -config ./openssl.cnf
openssl.cnf
फिर से चलने वाले निर्देशों के अनुसार संशोधित किया गया।
#create and sign certificate.
openssl ca -out dev.cert.pem -md sha1 -config ./openssl.cnf -infiles dev.req.pem
जरूरी!
फ़ाइलों को स्थानांतरित करें और उन्हें नए स्थान पर httpd.conf से संदर्भित करें
cp dev.cert.pem /home/dev/certs/cert.pem
cp dev.key.pem /home/certs/key.pem
मैंने httpd.conf को अपडेट किया कि वे सिल्ट को प्रतिबिंबित करें और SSLEngine को चालू करें:
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 रखो, और इसे मेरे ब्राउज़र में डाउनलोड / आयात किया। अब मैं कोई त्रुटि या चेतावनी के साथ https: //dev.site.local पर जा सकता हूं ।
और यह वह जगह है जहां मैं हूं। प्रगति करते ही मैं इसका संपादन करता रहूंगा। SSL ईमेल कैसे कॉन्फ़िगर करें, और / या MySQL सर्वर होगा एक अन्य बॉक्स के लिए सुरक्षित कनेक्शन कॉन्फ़िगर करने के बारे में कोई सुझाव।