Apache多实例运行

首先

我想建立多个Web服务器,但不想准备多个物理服务器
可以通过Apache的多实例化来解决
复制单元文件和其他文件,终于成功了
由于这种方法似乎也适用于其他进程,所以做个备忘录
我在一篇类似的博客中看到有人做过(参考文献参见),我尝试了在Ubuntu22.10上进行改进的发布几天前发布的那个。

创建管理命令

进入/usr/sbin/目录
复制apache2ctl并重命名为apache3ctl
创建apache3ctl的符号链接并命名为apachectl3
复制apache2并重命名为apache3

打开apache3ctl,并将每一行中的apache2替换为apache3,将apache2ctl替换为apache3ctl(省略修复的部分太多)。
虽然使用sed也可以,但由于我觉得有些可怕,所以我选择手动更改。

模块设置变更

趁着去CD店的机会,顺便处理一下。

复制a2enmod为a3enmod
创建a3enconf的符号链接指向a3enmod

编辑a3enmod的$basename如下:
这时候像之前一样将每一行的apache2替换为apache3.
虽然也可以用sed (某种意义上可以的)。

$basename =~ /^a3(en|dis)(mod|site|conf)((?:-.+)?)$/

让我将apachectl3这个符号链接引用到稍后要创建的单元文件中。

创建单元文件

复制/lib/systemd/system/apache2.service至/etc/systemd/system/apache3.service。

修改ExecStart

ExecStart=/usr/sbin/apachectl3 start
ExecStop=/usr/sbin/apachectl3 graceful-stop
ExecReload=/usr/sbin/apachectl3 graceful

然后,我会创建一个名为/etc/apache3的主要配置文件,并将其放置在那里。

各种文件复制 (Gè

如果这附近有任何复制错误或疏漏,请在评论中指出,这可能因环境而有所不同。

复制 /etc/apache2 到 /etc/apache3
复制 /run/apache2 到 /run/apache3
复制 /run/lock/apache2 到 /run/lock/apache3
复制 /usr/lib/apache2 到 /usr/lib/apache3
复制 /usr/share/bash-completion/completions/a2enconf 到 /usr/share/bash-completion/completions/a3enconf
复制 /usr/share/doc/apache2 到 /usr/share/doc/apache3
复制 /var/lib/apache2 到 /var/lib/apache3
复制 /var/log/apache2 到 /var/log/apache3
复制 /etc/init.d/apache2 到 /etc/init.d/apache3

各种文件编辑 (Gè

由于/etc/init.d/apache3和环境变量文件(/etc/apache3/envvars)的编辑部分太多,所以省略了。可以使用sed(译者注,一种文本编辑工具)等。其他内容如下所示。

ServerRoot "/etc/apache3"
Listen 8080
command ls /etc/apache3/$1 2>/dev/null

重新加载

重新加载守护进程 systemctl.

如果启动了apache2和apache3,并且在运行ss命令后进程ID不同,则表示成功。

文献引用

以下是您提供的链接的中文翻译:

– https://natswell.com/techcolumn/2012/08/23/apacheを複数のプロセスで起動する方法/:如何在多个进程中启动Apache

– https://tech-lab.sios.jp/archives/12738:在多个进程中启动Apache的方法

– https://neil-sk.hatenadiary.org/entry/20110602/1307024490:启动Apache的方法(来自neil-sk的博客)

广告
将在 10 秒后关闭
bannerAds