मैं एक विशिष्ट संस्करण के साथ अपाचे कैसे स्थापित कर सकता हूं?


26

उबंटू अपडेट के कारण, मैंने अपाचे 2.2 से 2.4 को अपग्रेड करने की गलती की - कई चीजें गलत हो गईं।

मुझे नहीं पता कि इसके बाद के संस्करण को कैसे निर्दिष्ट किया जाए apt-get remove apache2apt-get install apache2हमेशा 2.4 स्थापित करता है।

मैं यह कैसे कर सकता हूं?

जवाबों:


22

आपको निम्नलिखित करने की आवश्यकता है:

apt-cache showpkg <pachagename>

उपरोक्त आदेश इस पैकेज के लिए उपलब्ध संस्करणों की सूची प्रदर्शित करेगा। फिर आवश्यक संस्करण का चयन करें और निम्नलिखित करें।

apt-get install <packagename>=<complete version name>

उदाहरण:

apt-cache showpkg apache2
apt-get install apache2=2.2.14-5ubuntu8.7

2
एकमात्र संस्करण जो मेरे लिए दिखाता है, उबंटू 16 पर 2.4 है। यह एक बड़ी समस्या है क्योंकि 2.4 ने उन मुद्दों को जाना है जिन्होंने मेरी साइट को पूरी तरह से तोड़ दिया है।
felwithe

2
Apache2 के लिए संस्करण 2.2.14-5ubuntu8.7 नहीं मिला
ब्रायन मेलर

धन्यवाद - इसने पीपीए मार्ग पर जाने की कोशिश से बेहतर काम किया।
एम थॉमस

5

अपाचे 2.2 को उबंटू डिस्ट्रो पर कैसे स्थापित करें जो रिपॉजिटरी में नहीं है।

आवश्यकताओं

ऐसा करने के लिए आपको बिल्ड-एसेंशियल पैकेज स्थापित करना होगा।

~# sudo apt-get install build-essential

अपाचे को इसका समर्थन करने वाले ब्राउज़रों को आउटपुट संपीड़ित करने की क्षमता देने के लिए, आपको zlib स्थापित करने की आवश्यकता है। ज़िप्ल होमपेज (zlib-1.2.11.tar.gz लेखन के रूप में) से वर्तमान रिलीज़ डाउनलोड करें , इसे निकालें, निकाले गए फ़ोल्डर में नेविगेट करें, निर्माण करें, और इंस्टॉल करें।

wget http://www.zlib.net/zlib-1.2.11.tar.gz
tar -xvf zlib-1.2.11.tar.gz
cd zlib-1.2.11/
./configure --prefix=/usr/local
make
sudo make install

अपाचे 2.2 स्थापित करें

अपाचे डाउनलोड पृष्ठ (httpd-2.2.32.tar.gz लेखन के रूप में) से घुमावदार संस्करण डाउनलोड करें , इसे निकालें, निकाले गए फ़ोल्डर में नेविगेट करें, निर्माण करें, और इंस्टॉल करें।

wget http://www-eu.apache.org/dist/httpd/httpd-2.2.32.tar.gz
tar -xvf httpd-2.2.32.tar.gz
cd httpd-2.2.32/
./configure --prefix=/usr/local/apache2 --enable-mods-shared=all --enable-deflate --enable-proxy --enable-proxy-balancer --enable-proxy-http
make
sudo make install

अपाचे शुरू करें:

sudo /usr/local/apache2/bin/apachectl start

जांचें, यदि सब कुछ ठीक है

अपने ब्राउज़र में http: // localhost पर नेविगेट करें, जहाँ आपको "यह काम करता है!"

वैकल्पिक रूप से, आप इसे टर्मिनल के माध्यम से कर सकते हैं:

wget -qO- http://localhost | grep "It works!"

जो टर्मिनल में कुछ इस तरह उत्पादन करना चाहिए:

<html><body><h1>It works!</h1></body></html>

Apache2 के लिए "सेवा" बनाएं

sudo cp /usr/local/apache2/bin/apachectl /etc/init.d/apache22
sudo chmod +x /etc/init.d/apache22

संकेत: आप sudache सेवा को अपाचे 22 के साथ अपाचेक्टल कह सकते हैं।

अपाचे को बूट समय पर शुरू करें

sudo sed -i '2i #\n### BEGIN INIT INFO\n# Provides:             apache2\n# Required-Start:       $remote_fs\n# Required-Stop:        $remote_fs\n# Default-Start:        2 3 4 5\n# Default-Stop:         0 1 6\n# Description:          apache2\n# Short-Description:    The Apache webserver\n### END INIT INFO' /etc/init.d/apache22
sudo /usr/sbin/update-rc.d apache22 defaults

सुरक्षित अपाचे

sudo service apache22 stop
sudo adduser --system apache
sed -i -e 's/User daemon/User apache/g' /usr/local/apache2/conf/httpd.conf
sed -i -e 's/Group daemon/Group nogroup/g' /usr/local/apache2/conf/httpd.conf
sudo service apache22 start

नई सेटिंग्स की जाँच करें

ps -aux | grep httpd

यदि अंतिम कमांड का टर्मिनल आउटपुट "अपाचे" से शुरू होने वाली कुछ लाइनों को दिखाता है तो सब कुछ ठीक है।

अपनी साइट कॉन्फ़िगर करें

यदि आप अपनी अपाचे को सिर्फ एक साइट के लिए कॉन्फ़िगर करना चाहते हैं, तो बस httpd.conf को संपादित करें

nano /usr/local/apache2/conf/httpd.conf

आप जिन आवश्यक मापदंडों को संशोधित करना चाहते हैं, वे हैं:

ServerName www.example.com:80
DocumentRoot "/usr/local/apache2/htdocs"

<Directory "/usr/local/apache2/htdocs">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

यदि आप एक से अधिक साइट को कॉन्फ़िगर करना चाहते हैं, तो httpd-vhosts.conf पर एक नज़र डालें

nano /usr/local/apache2/conf/httpd.conf

आपको ऊपर दिए गए एक के समान <VirtualHost> के साथ एक <Directory> अनुभाग जोड़ना होगा, लेकिन VitualHost के दस्तावेज़ रूट के लिए। उदाहरण के लिए:

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/usr/local/apache2/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/dummy-host.example.com-error_log"
    CustomLog "logs/dummy-host.example.com-access_log" common
    <Directory "/usr/local/apache2/docs/dummy-host.example.com">
        Options Indexes FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

इन निर्देशों का पालन करते हुए, मैं इस पर चलता हूं: dzenan @ ubuntu16-i386: ~ / httpd-2.2.34 $ sudo /usr/sbin/update-rc.d apachectl डिफॉल्ट्स इंसर्वर: स्क्रिप्ट apachectl: सर्विस Apache2 पहले से ही प्रदान की गई है! insserv: अब बाहर निकलना! update-rc.d: error: insserv ने स्क्रिप्ट हेडर को अस्वीकार कर दिया
Dženan

दरअसल, Ubuntu 16.04 पर पहले से ही /etc/init.d/apache2मौलिक रूप से अलग सामग्री के साथ फ़ाइल है।
दिजेनन

अपमानजनक फ़ाइल को हटाने से हम उस कदम पर पहुँच जाते हैं, लेकिन sudo service apachectl stopसेवा बंद नहीं करते हैं।
दिजेनन

"sudo service apachectl stop" केवल काम नहीं करेगा, अगर आप बूट समय पर मेक अपाचे स्टार्ट के तहत दिए गए चरणों का पालन नहीं करते हैं । मेरे उत्तर को पढ़ने के बाद, मैंने इसे बदलने का फैसला किया ... पहला, अपाचेक्टल वास्तव में एक "सेवा" के लिए एक बुरा नाम है और इसे उस खंड का हिस्सा बनाने के लिए बुरा था। इसलिए, इसके बजाय आप अब Apache2 के लिए "सेवा" के तहत चरणों का पालन करते हुए sudo सेवा apache22 स्टार्ट / स्टॉप , करेंगे ।
जोहानो फिएरा

मैंने इस दृष्टिकोण को त्यागने और अपाचे 2.4 के साथ संगत होने के लिए अपनी कॉन्फ़िगरेशन फ़ाइल को अपडेट करने का निर्णय लिया। इस तरह से कम सिरदर्द। लेकिन विस्तृत जवाब के लिए धन्यवाद!
दुजेन

4

पैकेज पिनिंग पर ubuntu howto देखें :

फ़ाइल संपादित करें /etc/apt/preferences

'प्राथमिकताएँ' फ़ाइल वह जगह है जहाँ वास्तविक पिनिंग होती है। एक पैकेज को पिन करने के लिए, इसकी पिन-प्राथमिकता को उच्च संख्या पर सेट करें। यहाँ एक उदाहरण है:

Package: apache2
Pin: release n=raring
Pin-Priority: 1000

दौड़ने से पहले apt-get updateया apt-get installसाथ में टेस्ट करेंapt-cache policy apache2

man apt_preferencesविवरण के लिए देखें। मैंने पिनिंग raringकी रिलीज़ को चुना क्योंकि इस तरह से आपको 2.2.x ब्रांच पर अपडेट मिलेगा। मत भूलो कि आपको APT के raringरिपॉजिटरी URL को जोड़कर APT को पैकेज उपलब्ध कराना है ।

अपडेट :

जैसा raringकि EOL है, आप http://old-releases.ubuntu.com से अभी भी समर्थित preciseया संग्रहीत raringपैकेज का उपयोग कर सकते हैं ।

इसका उपयोग करके /etc/apt/sources.list.d/raring.listआप पुराने पैकेजों को स्थापित कर सकेंगे:

deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ raring-updates main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ raring-updates main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ raring-backports main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ raring-backports main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ raring-proposed main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ raring-proposed main restricted universe multiverse

नमस्ते। यह वही है जो मैं चाहता हूं। क्या आप कृपया रेयरिंग रिपॉजिटरी URL जोड़ने के लिए कमांड भी जोड़ सकते हैं? मैं सही लोगों को खोजने के लिए प्रतीत नहीं कर सकते।
रविश भागदेव

मैंने अपना उत्तर अपडेट कर दिया है।
फूरो

अच्छी पकड़ है, मैंने APT मिररलिस्ट को सही किया है raring। बेशक यदि आप preciseसंस्करण का उपयोग करना चाहते हैं , तो /etc/apt/preferencesउसके अनुसार भी बदलना होगा।
फूआरो

बहुत बहुत धन्यवाद। वैसे भी कीड़े का एक कैन हो सकता है ... निर्दिष्ट कदमों के प्रदर्शन के बाद निम्नलिखित के रूप में वीएम मार्ग लेना होगा (और स्थापित -f विकल्प और स्वच्छ भी कोशिश कर रहा है) निम्नलिखित पैकेजों में बिना आश्रितता के हैं। apache2: निर्भर करता है: apache2-mpm-कार्यकर्ता (= 2.2.22-1ubuntu1.7) लेकिन यह स्थापित नहीं होने वाला है या apache2-mpm-prefork (= 2.2.22-1ubuntu1.7) स्थापित या .... इत्यादि
रवीश भागदेव

2

Apache2.2 स्थापित करने के लिए निम्नलिखित प्रक्रिया का उपयोग करें:

बाद के डिस्ट्रो पर (उदाहरण के लिए 16.04), मैंने Apache साइट से 2.2.31 डाउनलोड किया।

मैंने इसे निम्न कॉन्फ़िगरेशन का उपयोग करके बनाया है:

./configure --enable-so --enable-ssl --with-included-apr --enable-mods-shared=all --enable-load-all-modules --enable-rewrite --enable-proxy --enable-proxy_connect --enable-proxy_http --enable-proxy_ajp --enable-authn_alias --with-npm=prefork --enable-proxy_balancer --enable-proxy_ftp --enable-cache --enable-suexec --enable-disk_cache  > conf.txt

फिर निश्चित रूप से httpd.conf और ssl.conf फ़ाइलों को ट्विक करना।

उसके बाद मैं सिर्फ / .httpd -k स्टार्ट चलाता हूं

और यह काम करता है!

ध्यान दें कि मैंने apt-get के माध्यम से apache2.4 को जोड़ा लेकिन इसे कभी नहीं हटाया। इसका मतलब है कि सिस्टम शुरू होने के बाद, मुझे अपाचे 2 प्रक्रिया को मारने की आवश्यकता है। और फिर मैं apache2.2 शुरू करने में सक्षम हूं। मुझे Apachectl का उपयोग करने के लिए Apache2.4 स्थापित करना था लेकिन बाद में भंग कर दिया क्योंकि मैं उपयोग करता हूं ।/httpd


Apache 2.2 के लिए Apachectl का उपयोग करने के बारे में मेरे जवाब पर एक नज़र डालें, आपको पहले 2.4 संस्करण को निकालना पड़ सकता है (हालांकि /usr/sbin/update-rc.d -f apachectl remove)।
जोहानो फ़िएरा

1

आपने Ubuntu 13.04 से 13.10 तक अपग्रेड किया है? Ubuntu पैकेज रिपॉजिटरी के बाहर जाने के बिना Apache 2.2 वापस पाने का कोई तरीका नहीं है। अपने अपाचे कॉन्फ़िगरेशन को ठीक करना बेहतर है ताकि यह 2.4 के साथ काम करे।


1
वास्तव में नहीं, मेरा जवाब देखें
कोएन डेमन

@CoenDamen वास्तव में आप का जवाब है "उबंटू पैकेज रिपॉजिटरी के बाहर जा रहा है"। इसके अलावा, आपका जवाब किसी भी नए उबंटू इंस्टॉलेशन के लिए "जैसा है" काम नहीं करेगा, क्योंकि यह काफी कुछ निर्भरताएं गायब कर देगा।
जोहानो फ़िएरा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.