默认配置目录
环境名称 | 路径 |
---|---|
配置目录 | /etc/apache2 |
网站目录 | /var/www/html |
卸载和安装apache2
sudo apt --purge remove apache2
sudo apt --purge remove apache2-common
sudo apt --purge remove apache2-utils
sudo rm -rf /etc/apache2
sudo rm -rf /etc/init.d/apache2
# /var/www下文件随意
sudo apt install apache2
配置防火墙
在测试Apache之前,我们需要修改我们的防火墙以允许外部访问默认的Web端口。即配置一个UFW防火墙来限制对服务器的访问。
列出ufw
程序配置文件:
sudo ufw app list
通常至少会显示三个项目:
- Apache :此配置文件仅打开端口80(正常,未加密的Web流量)
- Apache Full :此配置文件打开端口80(正常,未加密的Web流量)和端口443(TLS / SSL加密流量)
- Apache Secure :此配置文件仅打开端口443(TLS / SSL加密流量)
下面选择允许Apache Full配置文件的传入流量:
sudo ufw allow 'Apache Full'
查看目前apache2的状态
sudo service apache2 status
启动、重启、停止服务
sudo /etc/init.d/apache2 start
# sudo service apache2 start
sudo /etc/init.d/apache2 restart
# sudo service apache2 restart
sudo /etc/init.d/apache2 stop
# sudo service apache2 stop
# 重载:apache可以重新加载而不会丢弃连接
sudo service apache2 reload
配置
/etc/apache2
为配置目录
/etc/apache2/apache2.conf
主配置文件。
/etc/apache2/ports.conf
指定Apache将监听的端口。
/etc/apache2/sites-available/
可以存储每个站点“虚拟主机”的目录。 Apache不会使用此目录中找到的配置文件,除非它们符号链接(ln -s)到sites-enabled目录。 通常,所有服务器块配置都在此目录中完成,然后通过使用a2ensite
命令链接到另一个目录来启用。
/etc/apache2/conf-available/
使用a2enconf
与a2disconf
启用与禁用。
/etc/apache2/mods-available/
使用a2enmod
和a2dismod
命令启用和禁用模块。
``
修改端口:
sudo vim /etc/apache2/ports.conf
# 将`Listen 80` 改为 `Listen 9090`
sudo vim /etc/apache2/sites-enabled/000-default.conf
# 修改为` <VirtualHost *:9090> `
同时需要将服务器的出站与入站规则的允许端口范围应包含9090在内.
但是,只更改上面两个文件只能实现<域名:9090>访问主页, 默认域名似乎还是80端口。
http的默认标准端口是80
而更安全的https的标准端口是443
下面给Apache安装证书以实现https的访问:
-
下载SSL证书,解压后会得到三个文件:
-
1_root_bundle.crt
证书文件 -
2_www.domain.com.crt
证书文件 -
3_www.domain.com.key
私钥文件
-
-
ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/000-default-ssl.conf
将available文件夹下conf文件软连接到enabled路径下
-
修改这个ssl.conf文件以下内容:
sudo vim /etc/apache2/sites-available/default-ssl.conf <VirtualHost 0.0.0.0:443> DocumentRoot "/var/www/html" #填写证书名称 ServerName www.domain.com #启用 SSL 功能 SSLEngine on #证书文件的路径 SSLCertificateFile /xxx/2_www.domain.com.crt #私钥文件的路径 SSLCertificateKeyFile /xxx/3_www.domain.com.key #证书链文件的路径 SSLCertificateChainFile /xxx/1_root_bundle.crt </VirtualHost>
-
重启
sudo a2enmod ssl #加载SSL sudo /etc/init.d/apache2 restart
-
此时已经可以通过https访问了,但是并不是域名默认的访问方式,也就是说直接输入域名依旧会使通过http访问.
强制使用https的方式:sudo vim /etc/apache2/sites-enabled/000-default.conf RewriteEngine on RewriteCond %{HTTPS} !=on RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R]
以及
sudo vim etc/apache2/apache2.conf AllowOverride All
上面实际上就是实现了对http:80的重定向https:443 (默认)
保存后重启:sudo a2enmod rewrite sudo /etc/init.d/apache2 restart