स्व-होस्टिंग वेब सामग्री छोटी से मध्यम कंपनियों, व्यापार मालिकों, गैर-लाभकारी संगठनों और व्यक्तियों के लिए प्रासंगिक है।
इस बात की कोई वास्तविक सीमा नहीं है कि कौन स्व-मेजबानी कर सकता है, लेकिन गोपनीयता के प्रति जागरूक समूहों को सीधे लाभ होगा और वे तत्काल परिणाम देखेंगे। छोटी से मध्यम कंपनियों को पूरी तरह से काम करने वाली प्रणाली मिलेगी जो सभी मौजूदा एन्क्रिप्शन और सुरक्षा प्रोटोकॉल का पालन करती है, विशेष रूप से पीसीआई विनिर्देश।
सेल्फ़-होस्टिंग के फ़ायदेमंद होने के कई कारण हैं, यहाँ उनमें से कुछ हैं:
यह लेख वेब सर्वर होस्टिंग के बारे में है, अगर आप ईमेल होस्टिंग के बारे में रुचि रखते हैं तो कृपया अपने स्वयं के ईमेल सर्वर की सेल्फ-होस्टिंग पर लेख पढ़ें।
कृपया सुनिश्चित करें कि आपके सर्वर के पास पूरी तरह से योग्य डोमेन नाम (एफक्यूडीएन) है और /etc/hosts
फ़ाइल में सर्वर का आईपी एफक्यूडीएन को इंगित करता है और संक्षिप्त नाम नहीं है। OpenDKIM जैसे कुछ उपकरणों के लिए यह एक आवश्यकता है, जो FQDN के बिना कार्य करने में विफल हो जाएगा।
यह जांचने के लिए कि आपका FQDN ठीक से सेटअप है या नहीं, दौड़ें:
# hostname -f server.example.tld
यदि आप केवल सर्वर का नाम देखते हैं और FQDN नहीं तो अपने FQDN को सेट करने के लिए systemd hostnamectl
कमांड का उपयोग करें:
# hostnamectl set-hostname server.example.tld
पहला कदम कुछ बुनियादी पैकेजों को स्थापित करना है, अपने पैकेज मैनेजर का उपयोग करें:
dnf EL8/EL9 के नए संस्करणों के लिए:
# dnf install php php-cli php-pdo php-mbstring epel-release unzip wget
EL7 के लिए यम:
# yum install php php-cli php-pdo php-mbstring epel-release unzip wget
फेडोरा के लिए पैकेज थोड़े अलग हैं:
# dnf install php php-cli php-pdo php-mbstring unzip wget
दूसरे चरण में हम Aetolos वर्चुअल होस्टिंग कंट्रोल पैनल स्थापित करेंगे, जो केवल कॉन्फ़िगरेशन फ़ाइलें उत्पन्न करता है और सिस्टम में कोई अन्य संशोधन नहीं करता है:
# wget -O /root/master.zip 'https://gitlab.com/noumenia/aetolos/-/archive/master/aetolos-master.zip' # unzip /root/master.zip -d /root/ # mv /root/aetolos-master /root/aetolos # rm -rf /root/master.zip
नवीनतम विकास कोड git रिपॉजिटरी से डाउनलोड किया जा सकता है:
गिट क्लोन 'https://gitlab.com/noumenia/aetolos.git'
अब यह चुनने का समय है कि सर्वर कौन सी सेवाएं प्रदान करेगा। सभी उपलब्ध सेवाओं का अंदाजा लगाने के लिए स्टेटस पैरामीटर के साथ ऐटोलोस चलाएं:
# ~/aetolos/aetolos --status +---------+--------------+---------+------------+--------------+ | Enabled | Module | SystemD | Repository | Dependencies | +---------+--------------+---------+------------+--------------+ | [ ] | apache | | | | | [ ] | clamav | | epel | postfix | | [ ] | dehydrated | | | | | [ ] | dovecot | | | | | [ ] | haproxy | | | | | [ ] | mariadb | | | | | [ ] | mtasts | | | apache | | [ ] | nsd | | epel | | | [ ] | opendkim | | epel | postfix | | [ ] | opendmarc | | epel | postfix | | [✓] | php | | | | | [ ] | postfix | | | | | [ ] | postgrey | | epel | postfix | | [ ] | spamassassin | | | postfix | | [✓] | virtualhost | | | | +---------+--------------+---------+------------+--------------+
चूंकि यह एक स्व-होस्टेड वेब सर्वर होने जा रहा है, हम उन सेवाओं को सक्षम करने जा रहे हैं जो हमें वेब होस्टिंग के लिए सुविधाओं का एक पूरा सेट प्रदान करती हैं:
यदि आपके पास DKIM हस्ताक्षर वाले ईमेल के लिए एक अलग सर्वर है, तो आपको इस सर्वर में OpenDKIM को भी सक्षम करना चाहिए। फिर उचित हस्ताक्षर के लिए कुंजी को सर्वरों के बीच साझा करें।
आइए इन सेवाओं को एटोलोस के साथ सक्षम करें:
# ~/aetolos/aetolos --enable=apache # ~/aetolos/aetolos --enable=dehydrated # ~/aetolos/aetolos --enable=mariadb
अब हम निम्न तालिका देखने के लिए एटोलोस को स्थिति पैरामीटर के साथ फिर से चला सकते हैं:
+---------+--------------+---------+------------+--------------+ | Enabled | Module | SystemD | Repository | Dependencies | +---------+--------------+---------+------------+--------------+ | [✓] | apache | dead | | | | [ ] | clamav | | epel | postfix | | [✓] | dehydrated | | | | | [ ] | dovecot | | | | | [ ] | haproxy | | | | | [✓] | mariadb | dead | | | | [ ] | mtasts | | | apache | | [ ] | nsd | | epel | | | [ ] | opendkim | | epel | postfix | | [ ] | opendmarc | | epel | postfix | | [✓] | php | dead | | | | [ ] | postfix | | | | | [ ] | postgrey | | epel | postfix | | [ ] | spamassassin | | | postfix | | [✓] | virtualhost | | | | +---------+--------------+---------+------------+--------------+
SystemD कॉलम को नोट करें जो अधिकांश सेवाओं को dead
के रूप में दिखाता है। यह कोई समस्या नहीं है, क्योंकि हमने अभी तक उन सेवाओं को कॉन्फ़िगर/प्रारंभ नहीं किया है।
अंत में, हम आवश्यक RPM पैकेजों को स्थापित करने और सभी कॉन्फ़िगरेशन फ़ाइलों को उत्पन्न करने के लिए Aetolos सेटअप चला सकते हैं। हम वर्बोज़ आउटपुट को अतिरिक्त --verbose
पैरामीटर के साथ देखना पसंद करते हैं।
आपको निर्जलित स्क्रिप्ट के बारे में एक चेतावनी दिखाई देगी, जो हमें लेट्स एनक्रिप्ट के लिए पंजीकरण ईमेल पता निर्दिष्ट करने के लिए कहती है
# ~/aetolos/aetolos --verbose --setup [DEBUG] Check running system [DEBUG] Detected: AlmaLinux 8.7 (Stone Smilodon) [DEBUG] Check system memory [DEBUG] Detected: 460MiB [DEBUG] Check CPU cores [DEBUG] Detected: 2 [DEBUG] Check proxy [DEBUG] Loading Aetolos configuration [DEBUG] Starting operating system setup [DEBUG] Checking repository dependencies [DEBUG] Checking package dependencies [DEBUG] Installing package: php-fpm [DEBUG] Checking SELinux requirements [DEBUG] SELinux: enable httpd_can_network_connect [DEBUG] SELinux: enable httpd_can_sendmail [DEBUG] SELinux: enable httpd_read_user_content [DEBUG] SELinux: enable httpd_enable_homedirs [DEBUG] SELinux: enable httpd_home_tmp_aetolos.pp [DEBUG] Checking certificate requirements [DEBUG] Generating a self-signed certificate [DEBUG] Certificate: /etc/pki/tls/certs/localhost.crt [DEBUG] Fullchain: /etc/pki/tls/certs/localhost.fullchain [DEBUG] Key: /etc/pki/tls/private/localhost.key [DEBUG] Checking ACME client [DEBUG] Downloading ACME client: dehydrated 0.7.1 [DEBUG] Installing ACME client under: /root/dehydrated/ [WARNING] ACME registration email set to: postmaster [WARNING] Please change the ACME registration email by executing: '/root/aetolos/aetolos --verbose --module=dehydrated --registration-email=new-email' [DEBUG] Checking module dependencies [DEBUG] Save configuration: apache [DEBUG] Writing to file: /etc/httpd/conf/httpd.conf [DEBUG] Writing to file: /etc/httpd/conf.d/ssl.conf [DEBUG] Writing to file: /etc/sysconfig/htcacheclean [INFO] System memory: 460MB [INFO] Allocate 50% of system memory to MariaDB: 230MB [INFO] 70% of the above usage goes to total thread memory: 161MB [INFO] The rest 30% goes to server buffers: 69MB [INFO] MariaDB memory per connection: 18MB [INFO] MariaDB max connections: 10 [INFO] MariaDB temporary table size: 16MB [INFO] MariaDB query cache: 16MB [INFO] Allocate 40% of system memory to Apache/PHP-FPM: 184MB [INFO] Estimated average number of connections per CPU core: 9 [INFO] Apache StartServers: 1 [INFO] Apache ServerLimit: 2 [INFO] Apache ThreadsPerChild: 18 [INFO] Apache MinSpareThreads: 18 [INFO] Apache ThreadLimit: 22 [INFO] Apache MaxRequestWorkers: 36 [INFO] Apache maximum number of concurrent connections: 108 [DEBUG] Writing to file: /etc/logrotate.d/httpd [DEBUG] Save configuration: dehydrated [DEBUG] Writing to file: /root/dehydrated/config [DEBUG] Writing to file: /root/dehydrated/hook.sh [DEBUG] Writing to file: /etc/pki/letsencrypt/domains.txt [DEBUG] Writing to file: /etc/cron.daily/dehydrated.cron [DEBUG] Save configuration: mariadb [DEBUG] Writing to file: /etc/systemd/system/mariadb.service.d/limitnofile.conf [DEBUG] Writing to file: /etc/my.cnf.d/mariadb-server.cnf [DEBUG] Save configuration: php [DEBUG] Writing to file: /etc/php.ini [DEBUG] Writing to file: /etc/php.d/10-opcache.ini [DEBUG] Save configuration: virtualhost [DEBUG] Writing to file: /etc/tmpfiles.d/hometmp.conf [DEBUG] Reloading systemd
चेतावनी के अनुसार, हम लेट्स एनक्रिप्ट के लिए एक ईमेल पता जोड़ते हैं:
# ~/aetolos/aetolos --verbose --module=dehydrated [email protected]
अन्य सेवाओं के विपरीत, एटोलोस के लिए वर्चुअल होस्ट और संबंधित डेटाबेस अनुमतियों को जोड़ने के लिए मारियाडीबी को शुरू करने और काम करने की आवश्यकता है। तो आइए मारियाडीबी को सक्षम और शुरू करें:
# systemctl --now enable mariadb
इस बिंदु पर हम चलकर मारियाडीबी उदाहरण को सुरक्षित कर सकते हैं:
/usr/bin/mysql_secure_installation
इसके लिए आवश्यक है कि आप रूट के लिए लॉगिन विवरण के साथ /root/.my.cnf
फ़ाइल भी बनाएँ:
[client] default-character-set="utf8mb4" user="root" password='the_password_set_in_the_previous_step'
अब हम जितने चाहें उतने वर्चुअल होस्ट जोड़ने के लिए तैयार हैं (या जितने सर्वर संभाल सकते हैं)।
किसी भी आदेश को चलाने से पहले, हमें यह सोचने में एक सेकंड लग सकता है कि कौन से वर्चुअल होस्ट के पास उपसर्ग सबडोमेन होगा, कभी-कभी हमारे पास www सबडोमेन (www.example.tld) के साथ example.tld जैसा डोमेन हो सकता है, दूसरी बार हम ऐसा नहीं करना चाहेंगे एक उपसर्ग का उपयोग करें क्योंकि हम अपने ईमेल पते केवल शीर्ष डोमेन पर चाहते हैं ([email protected] और [email protected] नहीं)।
एक उदाहरण के रूप में, हम तीन वर्चुअल होस्ट जोड़ेंगे, उनमें से दो उपडोमेन के बिना:
# ~/aetolos/aetolos --verbose --module=virtualhost --add-virtualhost=example1.tld --no-prefix [DEBUG] Verify domain: example1.tld [DEBUG] Add virtual host: example1.tld # ~/aetolos/aetolos --verbose --module=virtualhost --add-virtualhost=example2.tld --no-prefix [DEBUG] Verify domain: example2.tld [DEBUG] Add virtual host: example2.tld # ~/aetolos/aetolos --verbose --module=virtualhost --add-virtualhost=example3.tld [DEBUG] Verify domain: example3.tld [DEBUG] Add virtual host: example3.tld
अब हम सभी वर्चुअल होस्ट सूचीबद्ध कर सकते हैं:
# ~/aetolos/aetolos --module=virtualhost --list-virtualhosts +----+---------------------+--------------+-------------+----------------+--------+--------------+ | ID | Timestamp | Virtual host | System user | MariaDB prefix | Parked | Prefix alias | +----+---------------------+--------------+-------------+----------------+--------+--------------+ | 1 | 2023-01-10 08:51:36 | example1.tld | example1tld | example1 | [ ] | | | 2 | 2023-01-10 08:51:40 | example2.tld | example2tld | example2 | [ ] | | | 3 | 2023-01-10 08:51:45 | example3.tld | example3tld | example3 | [ ] | www | +----+---------------------+--------------+-------------+----------------+--------+--------------+
प्रत्येक वर्चुअल होस्ट अपने स्वयं के उपयोगकर्ता / समूह के स्वामित्व के साथ, अपने स्वयं के होम डायरेक्टरी के भीतर "लाइव" होगा, इसलिए हमारे / होम पर एक नज़र डालते हैं:
# ls -la /home total 0 drwxr-xr-x. 5 root root 63 Jan 20 10:51 . dr-xr-xr-x. 17 root root 224 Dec 21 2021 .. drwx--x--x. 8 example1tld example1tld 159 Jan 10 08:51 example1tld drwx--x--x. 8 example2tld example2tld 159 Jan 10 08:51 example2tld drwx--x--x. 8 example3tld example3tld 159 Jan 10 08:51 example3tld
एटोलोस कमांड के साथ संशोधन करने के बाद, हमें सभी प्रासंगिक सेवाओं (अपाचे, पीएचपी-एफपीएम, निर्जलित, आदि) के लिए नई कॉन्फ़िगरेशन फ़ाइलें उत्पन्न करने की आवश्यकता है। इस प्रकार, हम ऐटोलोस सेटअप को अंतिम बार निष्पादित करते हैं।
# ~/aetolos/aetolos --setup
इस बिंदु पर सभी सेवाएं एक ही स्व-हस्ताक्षरित प्रमाणपत्र का उपयोग करेंगी, इस प्रकार अब यह सभी वर्चुअल होस्ट प्रमाणपत्रों को इकट्ठा करने के लिए मैन्युअल रूप से निर्जलित चलाने का एक अच्छा समय है। चूंकि Aetolos HTTP पोर्ट 80 के माध्यम से डोमेन सत्यापन के साथ ACME प्रोटोकॉल का उपयोग करता है, हम पहले उन अनुरोधों को पूरा करने के लिए अपना Apache सर्वर शुरू करते हैं।
# systemctl start httpd # ~/dehydrated/dehydrated --cron --config /root/dehydrated/config --keep-going # systemctl stop httpd # ~/aetolos/aetolos --setup
अब हम सभी सेवाओं को सक्षम और प्रारंभ कर सकते हैं।
# systemctl --now enable httpd [email protected] [email protected] [email protected] mariadb php-fpm Created symlink /etc/systemd/system/multi-user.target.wants/[email protected] → /usr/lib/systemd/system/[email protected]. Created symlink /etc/systemd/system/multi-user.target.wants/[email protected] → /usr/lib/systemd/system/[email protected]. Created symlink /etc/systemd/system/multi-user.target.wants/[email protected] → /usr/lib/systemd/system/[email protected].
आप देखेंगे कि प्रत्येक वर्चुअल होस्ट की अपनी अपाचे सेवा होती है, यह सिस्टमड द्वारा प्रदान की जाने वाली एक विशेषता है और हमें वर्चुअल होस्ट को अलग सिस्टमड सेवाओं में परिभाषित करने की अनुमति देती है। --now
पैरामीटर सभी सेवाओं को शुरू करेगा।
वेबसाइटों को होस्ट करने के लिए उपयोग किए जाने वाले आर्किटेक्चर के बारे में विशेष उल्लेख होना चाहिए। सुरक्षा कारणों से, प्रत्येक वर्चुअल होस्ट अपने स्वयं के /home
निर्देशिका के अंतर्गत संग्रहीत यूनिक्स खातों में अलग-थलग है। सार्वजनिक वेब सामग्री को public_html
निर्देशिका में संग्रहित किया जाना चाहिए।
/home/example1tld -> virtual host home /home/example1tld/etc -> email accounts /home/example1tld/mail -> email storage /home/example1tld/public_html -> web content /home/example1tld/www -> symbolic link to public_html /home/example1tld/tmp -> temp directory
इस बिंदु पर Aetolos ने बिना किसी कस्टम संशोधन के सर्वर को कॉन्फ़िगर किया है, सभी परिवर्तन डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइलों पर किए जाते हैं। हम सर्वर से एटोलोस को हटा सकते हैं और मैन्युअल रूप से संशोधन जारी रख सकते हैं या यदि हम भविष्य में और वर्चुअल होस्ट जोड़ना चाहते हैं तो हम एटोलोस को रख सकते हैं।
Pexels से मैनुएल गीसिंगर द्वारा आलेख तस्वीर