在AWS上建立多个web站点的Step by Step指南
时间:2023-07-16 00:06:02 | 来源:网站运营
时间:2023-07-16 00:06:02 来源:网站运营
在AWS上建立多个web站点的Step by Step指南:申请出国留学时制作的个人作品集,都需要搞一个网站向申请学校进行展示, 如果申请的是美国的学校,建议把站点还是放到美国本地以保证本地访问速度和良好的体验。
Amazon的云服务给我们提供了非常棒的服务,让我们可以把自己的网站免费的架设在全球自己想放置的地方,大概有20G的空间,也不用考虑流量问题,不要去做各种搞不清楚的备案,作为留学狗真是极大的福利
这篇文档就是面向申请了AWS上的一个EC2主机实例后,几个同学各自制作了作品集PS网站,各自申请了域名,然后域名都指向这台EC2主机搭建web公用狗窝的step by step指南...
1. 申请AWS上的主机
去
http://aws.amazon.com 上注册一个账号,然后按照AWS上给出的说明,启用长达1年免费的EC2主机实例,按照AWS给出的规则, AWS免费套餐包括为期一年、每月 750 小时 Linux 和 Windows t2.micro 实例的使用时间。意味着这台主机可以24小时开机在线。这个在网上有过程说明吧?我这里启动的是Linux实例。
AWS上申请EC2主机,按照自己的需求可以选择全球不同的区域,比如美国东部(俄亥俄)。如果选择了浙江的数据中心,是不是就要网站备案了,咱也不知道...
启动了EC2主机后,在AWS控制台,可以看到现在这个云主机实例的状态,并进行启动、重启、停止、休眠和终止等操作。 启动、重启、停止都不会把主机上的内容清除,但终止实例后,AWS会把主机彻底删除,内容都抹去,上面的内容就找不回来了
2. 关于访问主机的关键信息:IP地址、用户名、密钥
特别注意:在初始启动EC2实例过程中,可以下载EC2主机的私钥文件,一定要保存好这个私钥文件,这里我们简单存为mykey.pem,在使用SSH客户端访问EC2主机的时候需要这个文件,EC2主机是不使用账户密码方式访问的,而是更安全的用户名加密钥文件方式。详见我丢失在风中的文档《使用SSH访问Linux主机的各种姿势》
当你的AWS EC2已经启动后,意味着你在云端已经有了一台Linux服务器,关键信息应该有:
IPv4 公有IP : ____________
主机用户名 : ec2-user
主机密钥文件: mykey.pem
- 如果这个文件丢失,你可以从控制台重新生成新的密钥对,然后就是比较麻烦的过程,最后还是保留好。但如果你的EC2是团队共享使用的,同时又小伙伴离职时,这时候又必要注销或者更换一个新的密钥。这些内容详见我不知道放哪里去的《Linux Root 最佳实践》
密钥文件一般都是这样的内容...
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCA..................一大堆字符
.... ...... .. . . ... . ... . .. . . .. . . .. . ...
................... .......... ......... . ...... ...
-----END RSA PRIVATE KEY-----
3. 用SSH工具访问你的AWS主机
我们可以用putty工具,或者用更功能强大的MobaXterm来访问管理EC2主机。
使用MobaXterm的方法:
1)启动xterm后,增加一个新的连接(New session)
2) 设置相关的信息
在SSH选项中,Remote host 填写IP地址,具体的IP信息可以从AWS的控制台查看EC2实例
用户名: ec2-user
端口: 22
Use private key : 选择你下载的AWS密钥文件 mykey.pem
完成后,可以双击你刚刚建立的session,连接EC2主机,连接主机后, 运行 sudo su - 命令,从ec2-user身份升级为root身份
用sudo命令提升为root最高权限有了root权限后,可以安装应用软件和配置各种服务啦。
4. 在EC2主机上安装网站服务(apache http服务)
网站服务在默认的EC2实例中是没有安装的,要查看当前的服务器是否启动了web服务,可以用netstat 命令检查是否有80端口对外开放。
4.1 安装http服务用如下命令#yum install httpd
httpd 服务就安装好啦。现在就启动试试吧~
4.2 httpd的基础管理命令- 启动httpd服务,使用命令
#systemctl start httpd
- 停止httpd服务,使用命令
#systemctl stop httpd
- 重启httpd服务,使用命令
#systemctl restart httpd
- 查看httpd服务的状态,使用
#systemctl status httpd
- 查看ec2主机正在运行了哪些服务,监听外部的那些端口,使用
#netstat -anp|more
查看httpd状态,查看主机监听的所有端口和现有的连接4.3 httpd服务的核心文件在/etc/httpd/conf目录中,有http服务的配置文件: httpd.conf 这个文件控制着httpd服务的各种方方面面的功能,例如:监听的ip和端口,网站目录,默认首页文件,多个网站的分流判断方法,是基于域名的,还是基于端口的等等。
默认的配置会把网站目录指向/var/www/html 目录。
5. 打开EC2的防火墙,让外部可以访问你的web
web服务默认对外的端口是80,就像ssh服务监听22一样,而https协议默认的监听端口是443 , 所以我们需要配置EC2的安全组,在安全策略中增加允许外部访问80端口,当然,为了方便可以一并将443也打开。
为AWS EC2配置安全策略,对所有IP源,开放80端口这时,你用浏览器可以从任何地方访问你的IP,应该能看见某个页面啦,
6. 配置httpd虚拟主机,让一台EC2向外提供多个网站服务
Apache httpd服务可以用一个linux服务器向外提供多个网站(提供多个virtual host ),这里的httpd虚拟主机是指的应用层的,和vpc,vm不是一个概念,这里不说了吧,再解释就让人怀疑你申请了美国克莱登大学...
现在EC2主机上将要架设tom和jerry两位同学的web站点,我们的规划如下图:
在单台EC2主机上,架设多个web站点6.1 在EC2主机的目录中放置多个网站目录和文件推荐在/data目录中,我们建立两个目录
/data/web_www.tom.xyz 和 /data/
http://web_www.jerry.com ,分别copy好各自的文件,
这些文件可以用winscp直接从本地电脑copy到远端的EC2主机中,也可以在EC2主机中,用svn update拉取svn服务器上的代码,... 详见我的不知道讲了多少遍不知道放在哪里的《码农小伙伴的文档管理最佳实践》
6.2 配置http,启用基于域名的多个站点使用vi,打开文件/etc/httpd/conf/httpd.conf
如果,我是说如果你的键盘不能很好地配合你使用vi进行编辑,你可以安装一个非常友好的mc软件来愉快地编辑文本文件,安装mc的命令是
#yum install mc , 安装完成后输入
mc进入,F4是编辑文件,mc软件支持鼠标操作,但我们还是用vi直接说吧~
在/etc/httpd/conf.d 目录中,增加一个vhost.conf文件,这个目录中的*.conf文件都会作为httpd的配置文件,被/etc/httpd/conf/httpd.conf主配置文件引用,vhost.conf文件内容就是定义多个网站的目录和域名访问规则,其内容是:
<VirtualHost *:80>
ServerAdmin admin@tom.xyz
DocumentRoot /data/web_www.tom.xyz
ServerName www.tom.xyz
<Directory /data/web_www.tom.xyz>
Options -Indexes +FollowSymLinks
AllowOverride All
Allow from all
Require all granted
</Directory>
ErrorLog /var/log/httpd/tom-error.log
CustomLog /var/log/httpd/tom-access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@jerry.com
DocumentRoot /data/
http://web_www.jerry.com ServerName www.jerry.com
<Directory /data/web_web_www.jerry.com>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/httpd/jerry-error.log
CustomLog /var/log/httpd/jerry-access.log combined
</VirtualHost>
当然,这个文件还可以增加许多站点... 写好这个文件后,重启一下httpd服务,这样你就可以用浏览器访问不同的域名,看看是否进入了不同的网站。
web服务更多的内容,比如高可用性及水平扩展,负载均衡,性能及压力测试,SSL证书与CA建设,应用服务器等等,详见我的散落在互联网海洋中的《企业应用之基础构架的各种折腾》。
7. 其他的一些细节
有一些内容还是可以让你的这个web狗窝更加完备, 当EC2服务器重启后,httpd服务应当自动启动。
你的web站点应该加入用户访问探针,哪个学校访问了你的网站,浏览了多长时间,第几次访问,这都可以详见google,zhihu...
还有一个比较基础的问题,当EC2服务器停止,再次启动后,公网IP地址会变的,这样域名服务器的配置就失效了,别人就访问不到站点了,为了保障有相对永久的公网IP,你应该启用AWS EC2的弹性IP,这个详见... AWS 非常详细的视频教学和文档,所有的系统最好的方法都是读他们的文档...
-end-