当前位置:   article > 正文

Ubuntu平台Apache2发布多个静态网站_ubuntu aptche 多个网站

ubuntu aptche 多个网站

一、首先你需要有一台装有Ubuntu系统的PC或VPS,然后还要安装Apache2:

      1. 终端下安装Apache2:

  1. #安装apache2
  2. ubuntu@ip:~$sudo apt install apache2

     2. 安装完成后进入/var/www建立站点目录,Apache2安装完成后默认会在/var目录下创建/www/html目录,如果只建立一个站点可以不做修改,如果是多个站点,那么就需要将html目录修改成便于区别的名字,例如“site1”和“site2”等,然后

  1. #进入www目录
  2. ubuntu@ip:~$ cd /var/www
  3. #修改目录用mv命令
  4. ubuntu@ip:/var/www$sudo mv html site1
  5. #建立第二个站点目录
  6. ubuntu@ip:/var/www$sudo mkdir site2

    3. 站点目录处理完后将编辑好的网站源码复制到站点目录下,远程连接的话可以用WinSCP或FileFTP等软件上传。如果只是测试,那么可以在两个目录下分别新建两个index.html文件,为了区别不同网址打开的不同目录站点,index.html中的内容要有区别。

  1. #进入站点目录
  2. ubuntu@ip:~$ cd /var/www/site1
  3. #新建index.html主页文件
  4. ubuntu@ip:/var/www/site1$sudo vi index.html
  5. #按“Insert”插入文本
  6. This is site1 page
  7. ~
  8. ~
  9. ~
  10. ~
  11. ~
  12. --INSERT-- 1,1 ALL

      Esc退出编辑,输入“:wq”写入并退出。

    4. 定义网址指向的目录,编辑000-default.conf

  1. #进入/etc/apache2/sites-available,编辑站点指向文件
  2. ubuntu@ip:/etc/apache2/sites-available$sudo vi 000-default.conf
  3. #将以下代码前的注释取消
  4. <VirtualHost *:80>
  5. ServerName www.website1.com
  6. ServerAdmin webmaster@localhost
  7. DocumentRoot /var/www/site1
  8. #这是第二个站点的指向
  9. ServerName www.website2.com
  10. ServerAdmin webmaster@localhost
  11. DocumentRoot /var/www/site2
  12. </VirtualHost>
  13. #输入“:wq”回车保存并退出编辑

   

  1. #启动rewrite mod
  2. ubuntu@ip:/etc/apache2/sites-available$sudo a2enmod rewrite
  3. #重启Apache2服务
  4. ubuntu@ip:/etc/apache2/sites-available$sudo service apache2 restart

    此时两个站点已经建好了,在终端可以用“lynx www.website1.com”命令查看你的网站,可能会让你安装“lynx”组件。

二、加入SSL证书

      网站建好了,但浏览器打开时显示不安全,没有证书,给人感觉很不好,这时候你需要申请建站必备的SSL证书,Apache2本身可以创建证书,但目前大多浏览器对Apache2生成的证书很不友好,所以建议去申请权威机构的证书,免费收费都可以,看个人财力,这里以腾讯云为例。

    登录腾讯云,进入控制器,搜索“SSL证书”,全中文界面,无需赘述,申请亚信的一年免费证书,申请过程中你需要在你的域名DNS里添加一条识别记录,让腾讯云知道你对域名有绝对的控制权,解析记录添加也略过。

   记录添加完以后稍等片刻就会收到验证通过的短信和邮件通知,这时候继续下一步,很快就会申请成功,然后根据自己的服务器类型下载相应的证书文件,这里以Apache2为例,证书压缩包解压后得到四个文件,这里要用到“website1.com.crt”、“website1.com.key”和“root_bundle.crt”这三个文件,下面开始介绍证书的添加方式。

    1. 建立SSL目录,可以直接在apache2的目录下建一个SSL文件夹,如果是多个站点就在SSL目录下再建相应数量的子目录:

  1. #在/etc/apache2下创建SSL目录
  2. ubuntu@ip:/etc/apache2$sudo mkdir ssl
  3. #在/etc/apache2/ssl下创建不同站点的子目录
  4. ubuntu@ip:/etc/apache2/ssl$sudo mkdir site1 #以及site2等

     2. 目录创建完成后可以用FTP软件将前文提到的三个证书文件上传到SSL目录下的子目录里。

     3. 修改/etc/apache2/sites-available下defualt-ssl.conf文件

  1. #编辑defualt-ssl.conf
  2. ubuntu@ip:/etc/apache2/sites-acailable$sudo vi defualt-aal.conf
  3. #每个网站都要单独写一组<VirtualHost>……</VirtualHost>区间的代码
  4. #将以下行的注释取消
  5. <IfModule>
  6. <VirtualHost _default_:443>
  7. ServerAdmin webmaster@localhost
  8. ServerName www.website1.com #指定对应的域名
  9. DocumentRoot /var/www/site1 #指定对应的站点目录
  10. ErrorLog ${APACHE_LOG_DIR}/error.log
  11. CustomLog ${APACHE_LOG_DIR}/access.log combined
  12. SSLEngine on
  13. #将以下行修改为你的站点SSL证书所在目录
  14. SSLCertificateFile /etc/apache2/ssl/site1/website1.crt
  15. SSLCertificateKeyFile /etc/apache2/ssl/site1/website1.key
  16. SSLCertificateChainFile /etc/apache2/ssl/site1/root_bundle.crt
  17. <FilesMatch "\.(cgi|shtml|phtml|php)$">
  18. SSLOptions +StdEnvVars
  19. </FilesMatch>
  20. <Directory /usr/lib/cgi-bin>
  21. SSLOptions +StdEnvVars
  22. </Directory>
  23. </VirtualHost>
  24. #第二个站点SSL证书指向代码
  25. <VirtualHost _default_:443>
  26. ServerAdmin webmaster@localhost
  27. ServerName www.website2.com #指定对应的域名
  28. DocumentRoot /var/www/site2 #指定对应的站点目录
  29. ErrorLog ${APACHE_LOG_DIR}/error.log
  30. CustomLog ${APACHE_LOG_DIR}/access.log combined
  31. SSLEngine on
  32. #将以下行修改为你的站点SSL证书所在目录
  33. SSLCertificateFile /etc/apache2/ssl/site2/website2.crt
  34. SSLCertificateKeyFile /etc/apache2/ssl/site2/website2.key
  35. SSLCertificateChainFile /etc/apache2/ssl/site2/root_bundle.crt
  36. <FilesMatch "\.(cgi|shtml|phtml|php)$">
  37. SSLOptions +StdEnvVars
  38. </FilesMatch>
  39. <Directory /usr/lib/cgi-bin>
  40. SSLOptions +StdEnvVars
  41. </Directory>
  42. </VirtualHost>
  43. #如果某个网站打开时不能加载上SSL证书,可对其单独再写一个<VirtualHost>的区间代码,例如“website2.com"
  44. <VirtualHost _default_:443>
  45. ServerAdmin webmaster@localhost
  46. ServerName website2.com #指定对应的域名,无"www"
  47. DocumentRoot /var/www/site2 #指定对应的站点目录
  48. ErrorLog ${APACHE_LOG_DIR}/error.log
  49. CustomLog ${APACHE_LOG_DIR}/access.log combined
  50. SSLEngine on
  51. #将以下行修改为你的站点SSL证书所在目录
  52. SSLCertificateFile /etc/apache2/ssl/site2/website2.crt
  53. SSLCertificateKeyFile /etc/apache2/ssl/site2/website2.key
  54. SSLCertificateChainFile /etc/apache2/ssl/site2/root_bundle.crt
  55. <FilesMatch "\.(cgi|shtml|phtml|php)$">
  56. SSLOptions +StdEnvVars
  57. </FilesMatch>
  58. <Directory /usr/lib/cgi-bin>
  59. SSLOptions +StdEnvVars
  60. </Directory>
  61. </VirtualHost>
  62. </IfModule>

    4. "Esc"退出编辑模式,":wq"写入并退出,启用Apache默认SSL主机

ubuntu@ip:/etc/apache2/sites-available$sudo a2ensite defualt-ssl

      之后重启Apache服务

ubuntu@ip:/etc/apache2/sites-available$sudo service apache2 restart

     浏览器访问刚添加的两个域名,在地址栏开头会显示小锁头标志,说明SSL证书已加载。

三、强制转换“http”为“https”

      当在浏览器地址栏中输入“www.website1.com”时,浏览器一般都默认将地址前加上“https://”,但如果输入“http://www.website1.com”时,浏览器则不会自动转为“https”,这时候就需要在配置文件中修改几行代码将来自80端口的访问强制转到443端口,代码如下:

  1. #修改000-default.conf中的代码,
  2. ubuntu@ip-172-31-0-251:/etc/apache2/sites-available$sudo vi 000-default.conf
  3. #在<virtualHost *:80>代码区间加入以下内容:
  4. RewriteEngine on
  5. RewriteCond %{HTTPS} !=on
  6. RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R]

      "Esc"退出编辑模式,":wq"写入并退出,启动rewrite mod

ubuntu@ip-172-31-0-251:/etc/apache2/sites-available$sudo a2enmod rewrite

      重启Apache服务

ubuntu@ip:/etc/apache2/sites-available$sudo service apache2 restart

四、建议将两个网站的配置文件分开,避免访问A域名却显示的是B域名的内容,方法:

     将“000-defualt.conf”复制一份为"site2.conf",然后将“site2.conf”文件中的site1部分删除,相同也要把“000-defualt.conf”中的site2部分删除,注意:每个site的配置文件的<VirtualHost>代码区间都要包含“http”强制转“https”的代码,每个站点完整有效的配置代码如下:

Site1

  1. <VirtualHost *:80>
  2. ServerName www.website1.com
  3. ServerAdmin webmaster@localhost
  4. DocumentRoot /var/www/site1
  5. RewriteEngine on
  6. RewriteCond %{HTTPS} !=on
  7. RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R]
  8. ErrorLog ${APACHE_LOG_DIR}/error.log
  9. CustomLog ${APACHE_LOG_DIR}/access.log combined
  10. </VirtualHost>

Site2

  1. <VirtualHost *:80>
  2. ServerName www.website2.com
  3. ServerAdmin webmaster@localhost
  4. DocumentRoot /var/www/site2
  5. RewriteEngine on
  6. RewriteCond %{HTTPS} !=on
  7. RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R]
  8. ErrorLog ${APACHE_LOG_DIR}/error.log
  9. CustomLog ${APACHE_LOG_DIR}/access.log combined
  10. </VirtualHost>

  更多站点可依此类推,注意:配置文件修改完后要执行“sudo a2enmod rewrite”,之后重启Apache2服务。

至此就大功告成了,两个网站经全部部署完成了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/335975
推荐阅读
相关标签
  

闽ICP备14008679号