我如何安装Apache的特定版本?

由于Ubuntu更新,我错误地将Apache 2.2升级到2.4-出现了许多问题。

我不知道如何指定apt-get remove apache2后的版本。 apt-get install apache2总是安装2.4。

我该怎么做?

您需要执行以下操作:

 apt-cache showpkg <pachagename> 

上面的命令将显示这个包的可用版本列表。 然后select所需的版本并执行以下操作。

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

例:

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

请参阅ubuntu howto 软件包固定 :

编辑文件/etc/apt/preferences

“首选项”文件是实际固定发生的地方。 要打包一个包,请将其“Pin-Priority”设置为较高的数字。 这是一个例子:

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

在使用apt-cache policy apache2运行apt-get updateapt-get install之前进行testing

有关man apt_preferences信息,请参阅man apt_preferences 。 我select了pinning raring的版本,因为这样你仍然可以在2.2.x版本上得到更新。 不要忘了,你必须通过添加raring的仓库URL来使这个软件包可用于APT。

更新

由于raring是EOL,你可以使用http://old-releases.ubuntu.com上仍然支持&#x7684;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 

如何在Ubuntu发行版中安装Apache 2.2,但发行版中没有。

要求

您需要安装build-essentials软件包才能执行此操作。

 ~# sudo apt-get install build-essential 

为了使Apache能够将输出压缩到支持它的浏览器,您需要安装zlib。 从zlip Hompage (zlib-1.2.11.tar.gz开始撰写)下载当前版本,解压缩,导航到解压缩的文件夹,构build和安装。

 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 

安装Apache 2.2

从Apache下载页面 (httpd-2.2.32.tar.gz 下载)下载 curent版本,提取它,导航到提取的文件夹,构build和安装。

 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 

启动Apache:

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

检查,如果一切正常

在浏览器中导航到http:// localhost ,在那里你应该看到一条消息“It works!”。

或者,你可以通过terminal来做到这一点:

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

在terminal中应该输出这样的内容:

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

为Apache2创build“服务”

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

提示:你现在可以用sudo service apache22调用apachectl。

让Apache在启动时启动

 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 

安全的Apache

 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 

如果最后一个命令的terminal输出显示了一些以“apache”开头的行,那么一切正常。

configuration您的网站

如果你想为一个站点configuration你的apache,只需编辑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> 

如果要configuration多个站点,请查看httpd-vhosts.conf

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

您必须添加<Directory>部分,其中<VirtualHost>类似于上面的,但是对于VitualHost的文档根目录。 例如:

 <VirtualHost *:80> ServerAdmin [email protected] 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> 

你从Ubuntu 13.04升级到13.10? 没有超越Ubuntu软件包仓库,无法获得Apache 2.2。 最好修正你的Apacheconfiguration,以便它可以与2.4一起工作。

要安装apache2.2,请使用以下过程:

在后来的发行版(例如16.04)中,我从Apache站点下载了2.2.31。

我使用以下configuration构build它:

 ./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 start

它的工作原理!

请注意,我通过apt-get添加了apache2.4,但从未删除它。 这意味着系统启动后,我需要杀死apache2进程。 然后我能够启动apache2.2。 我不得不安装apache2.4使用apachectl,但后来解散,因为我使用./httpd