上次使用EC2的步骤没有记下来,导致这次配置新帐号时比较麻烦。
注册过程:
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
数据库文件位于/var/lib/mysql, 配置文件是/etc/my.cnf 。
启动MySQL:service mysqld start
创建远程用户admin并授予所有权限:GRANT ALL PRIVILEGES ON *.* TO admin@"%" IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
安装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
为了避免8小时自动关闭连接,在my.cnf里的[mysqld]下增加wait_timeout=288000,即把默认8小时改为80小时,一般够用了。
4、vsftp
安装:yum install vsftpd,缺省安装目录在/etc/vsftpd
配置:vi /etc/vsftpd/vsftpd.conf,把anonymous_enable=YES改为NO,在文件最后部分加上下面内容:
pasv_enable=YES
pasv_min_port=62222
pasv_max_port=63333
以上配置让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 path="" docBase="/var/www/html/mywebapp" debug="0" reloadable="true" crossContext="true">
<Resource name="jdbc/myresourcename" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true"
username="myusername" password="mypassword" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/mydatabase?characterEncoding=utf8"/>
</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文件,内容如下:
workers.tomcat_home=/usr/share/tomcat6
workers.java_home=/usr/lib/jvm/jre
ps=/
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.lbfactor=1
编辑/etc/httpd/conf/httpd.conf文件,把下面的内容放在所有LoadModule命令的最后,其中JkMount命令后面的参数根据需要调整:
LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.x.so
JkWorkersFile /etc/httpd/conf/workers.properties
JkLogFile "logs/mod_jk.log"
JkLogLevel info
JkMount /*.jsp ajp13
JkMount /*.do ajp13
发布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失效,参考链接)。
8、安装Discuz!论坛(7.2)
可参考此链接。 其中可能需要yum install php, yum install php-mysql,php安装以后会自动配置apache的参数(配置文件在conf.d下),重启apache即可。
然后进入http://hostname/install/index.php即可完成后续配置,包括config.inc.php文件都可以在向导里完成了。
使用中遇到的问题和解决:
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. ”
2、Tomcat吃掉过多VIRT内存的问题
问题与这个链接所述类似,尚未找到解决方案。