ubuntu上配置Apache和centeros好像还不太一样,里面的配置文件好像有点区别,centeros上是httpd.conf,ubuntu是apache2.conf,记录一下ubuntu18.04系统下的操作:
一、安装Apache
1.直接用命令安装,sudo apt-get install apache2
2.安装完后,查看Apache的版本信息,apache2 -v
3.安装完,访问localhost,会显示默认页面,显示apache2 ubuntu default page
apache已经安装成功。因为是使用命令安装,可以使用service命令操作apache:
Service apache2 start;
Service apache2 stop;
Service apache2 restart;
Service apache2 status;
配置文件都在/etc/apache2目录下面(可以用whereis apache2命令查看位置,具体目录的作用可百度)
二、配置多个虚拟主机
1.修改hosts文件,sudo /etc/hosts,添加:
127.0.0.1 www.t1.com
127.0.0.1 www.t2.com
2.进入目录/etc/apache2,其中有两个目录,sites-avaliable和sites-enabled,作用自己百度
3.在sites-avaliable中,复制000-default.conf文件,命名为test.conf
sudo cp 000-default.conf test.conf
4.修改test.conf,添加:
<VirtualHost *:80>
ServerName www.t1.com
ServerAdmin t1@qq.com
DocumentRoot /home/test/apache/test1
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName www.t2.com
ServerAdmin t2@qq.com
DocumentRoot /home/test/apache/test2
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
注意:此处在配置的时候,在每行后面都有个空格,导致报错,找了好长时间才找到错误
5.建立软链接
sudo ln -s /etc/apach2/sites-avaliable/test.conf /etc/apache2/sites-enabled/test.conf
注意:建立软连接,如果失败,那么配置的test.conf将不会生效,因为在apache2.conf中引入的是sites-enabled目录中的文件
6.开放目录权限,进入目录/etc/apache2下面,修改配置文件apache2.conf,添加:
<Directory /home/test/apache/test1/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<Directory /home/test/apache/test2/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
或者
<Directory /home/test/apache/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
注意:这里的Directory需要和test.conf中的DocumentRoot内容保持一致,或者Directory的目录要包含test.conf中DocumentRoot的目录
7.创建目录, /home/test/apache/test1 | test2 ,并在里面放置index.html,内容随意
8.最后重启一下apache,service apache2 restart,访问www.t1.com,www.t2.com,会出现不同的页面
三、安装tomcat
在/home/test/中安装2个tomcat,修改里面的端口,保证能同时运行,并修改里面index.jsp的内容,方便查看访问的是哪个tomcat,其他配置默认
四、开始整合apache和tomcat
1.使用命令安装mod_jk模块,负责转发消息到tomcat
sudo apt-get install libapache2-mod-jk
2.此时,/etc/apache2/mods-available目录下会多出jk.conf和jk.load文件,apache启动时,会加载load文件,从而加载jk.conf文件
3.先看jk.conf文件(源文件注释已被删除)
<IfModule jk_module>
# 指出mod_jk模块工作所需要的工作文件workers.properties的位置
JkWorkersFile /etc/libapache2-mod-jk/workers.properties
JkLogFile /var/log/apache2/mod_jk.log
JkLogLevel info
JkShmFile /var/log/apache2/jk-runtime-status
JkWatchdogInterval 60
<Location /jk-status>
# Inside Location we can omit the URL in JkMount
JkMount jk-status
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
<Location /jk-manager>
# Inside Location we can omit the URL in JkMount
JkMount jk-manager
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
# 将所有请求都让tomcat来处理
#JkMount /* worker1
</IfModule>
注意:
1.JkMount /* worker1,表示所有请求都交给worker1来处理,这里是全局配置,因为想根据域名来分配到不同的worker,把他注释掉;
2.这里的worker可以看做是tomcat实例,worker是在workers.properties中定义的;
3.jk.conf文件中的JkWorkersFile属性来指定worker.properties文件的位置;
4.再来看worker.properties文件(源文件注释已删除)
workers.tomcat_home=/usr/share/tomcat8
workers.java_home=/usr/lib/jvm/default-java
ps=/
worker.list=ajp13_worker,worker1,worker2
worker.ajp13_worker.port=8009
worker.ajp13_worker.host=localhost
worker.ajp13_worker.type=ajp13
worker.ajp13_worker.lbfactor=1
# Set properties for worker1
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
worker.worker1.lbfactor=50
worker.worker1.cachesize=10
worker.worker1.cache_timeout=600
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=300
# Set properties for worker2
worker.worker2.type=ajp13
worker.worker2.host=localhost
worker.worker2.port=8010
worker.worker2.lbfactor=50
worker.worker2.cachesize=10
worker.worker2.cache_timeout=600
worker.worker2.socket_keepalive=1
worker.worker2.socket_timeout=300
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=ajp13_worker
1.worker.list是定义tomcat实例,多个用逗号分隔,worker1和worker2是自己定义的,worker1是本地的8009端口的tomcat关联,worker2是本地的8010端口的tomcat关联;
2.worker.korker1.port=8009,代表apache的mod_jk模块与tomcat交换数据的端口(通过AJP协议),需要与tomcat配置文件中<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />所在端口保持一致;
5.此时修改/etc/apache2/sites-available目录下的test.conf文件,在虚拟主机的节点下,配置JkMount,如下:
<VirtualHost *:80>
ServerName www.t1.com
ServerAdmin t1@qq.com
DocumentRoot /home/test/apache/test1
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
JkMount /*.jsp worker1
JkMount /*.css worker1
JkMount /*.png worker1
JkMount /*.ico worker1
</VirtualHost>
表示.jsp,.css,.png,.ico的请求,发送给worker1这个tomcat实例来处理
6.访问不同域名下的index.jsp和index.html,会访问到对应的apache和对应的tomcat