注册过程:
1、注册amazon aws帐号,需要一张信用卡和一个固定电话,过程不再赘述。此过程中可得到一个.pem文件。
2、进入aws management console,在EC2部分,点击launch instance按钮启动一个ec2 instance。
3、 用puttygen(随putty安装)选择conversions->import key菜单项导入前面获得的.pem文件,然后点击save private key按钮即得到.ppk文件。(参考链接)
配置过程:
接下来是按需要配置instance,这里以免费的AMI为例,先运行“sudo su”进入root身份:
1、创建用户
useradd xxx
passwd xxx
2、设置时区
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
3、MySQL
安装:yum install mysql mysql-server mysql-libs
启动MySQL:service mysqld start
安装phpMyAdmin(需添加额外yum源):yum install phpmyadmin
创建数据库和导入数据:
进入命令行:mysql -uroot
创建一个空的数据库create database mydatabase;
创建所需用户同时授予权限: grant all privileges ON mydatabase.* TO 'username'@'localhost' identified by 'mypassword' with grant option; flush privileges;
导入所需数据(先退出mysql命令行,输入文件一般由mysqldump命令导出得到): mysql -uroot mydatabase < myexportedfile.sql
4、vsftp
安装:yum install vsftpd,缺省安装目录在/etc/vsftpd
配置:vi /etc/vsftpd/vsftpd.conf,把anonymous_enable=YES改为NO,在文件最后部分加上下面内容:
以上配置让vsftpd只接受pasv模式的连接,所以ftp客户端需要注意一下相应配置。
5、Apache
安装:yum install httpd
启动命令:service httpd start
6、Tomcat
安装:yum install tomcat6,缺省安装目录在/usr/share/tomcat6
如果你的webapp里有连接池等资源,需要在/usr/share/tomcat6/conf/server.xml里配置好,以下是一个例子:
</Context>
注:linux下使用tomcat6 dbcp会报classnotfound的问题。暂时解决方法:复制tomcat-dbcp.jar到
/usr/share/tomcat6/lib。( 参考链接)如果用连接池,还需要把数据库的驱动程序复制到/usr/share/tomcat6/lib下,仅仅在webapp里包含驱动是不行的。
此外,server.xml里<Connector>标签常常需要加上“URIEncoding="UTF-8"”的设置。
7、整合apache http与tomcat
在apache网站下载mod_jk(文件名如mod_jk-1.2.31-httpd-2.2.x.so), 放到/etc/httpd/modules目录下。
进入/etc/httpd/conf目录,创建一个workers.properties文件,内容如下:
编辑/etc/httpd/conf/httpd.conf文件,把下面的内容放在所有LoadModule命令的最后,其中JkMount命令后面的参数根据需要调整:
发布web应用(webapp)时应直接放到apache页面目录下(/var/www/html/mywebapp),而不需要在tomcat/webapps下发布。注意apache不会像tomcat那样自动解压缩.war文件,所以需要手动解压缩,命令是:unzip mywebapp.war -d mywebapp。
要让你的域名能直接访问到这个web应用,有两处需要注意。1)在/etc/httpd/conf/httpd.conf里修改DocumentRoot,指向你的web应用所在目录;2)在/usr/share/tomcat6/conf/server.xml里该web应用的<context>的path属性应设置为“”(不能设置为“/”,否则tomcat里request.getContextPath()将返回"/"而非空字符串,可能导致一些URL失效,参考链接)。
使用中遇到的问题和解决:
1、instance运行正常但无法访问(ssh, http, ftp)
这种情况应该比较少遇到,forum给的答案是host环境出了些问题,解决方法是强制停止并重启,这时aws会在其他host上部署这个instance,问题也就随之解决。原话引用:
“The instance is on a host that is experiencing some issues, at this point the best way to recover your instance would be to perform a force stop (adding --force to ec2-stop-instances command or by using the "force stop" action in ElasticFox) in order to have the instance stopped and be able to start it again on a new host. ”