ubuntu18.04 安装配置apache2笔记

默认配置目录
环境名称 路径
配置目录 /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/ 使用a2enconfa2disconf启用与禁用。
/etc/apache2/mods-available/使用a2enmoda2dismod命令启用和禁用模块。
``

修改端口:
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. 1_root_bundle.crt 证书文件
    2. 2_www.domain.com.crt 证书文件
    3. 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
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容