1、软件安装方式
镜像版本:Ubuntu 12.04 64位/nginx1.6-jdk1.7-tomcat7-mysql5.5-vsftpd
1.1、镜像环境里相应软件的安装,是基于阿里云linux版的一键安装包源码1.3.0版本,在此基础上修改、优化了相应功能,编译安装完成。
1.2、在镜像环境中,/root/sh-1.3.0-ubuntu.zip是安装镜像环境的脚本,您可以在ubuntu 12.04系统中自行采用此脚本安装,安装后的环境跟镜像里初始化的环境一致。值得注意的是,如果采用此脚本安装镜像环境,需要chmod 777 -R sh-1.3.0-ubuntu赋予777安装权限。
1.3、在镜像环境中,/root/sh-1.3.0-ubuntu是安装环境的主目录,镜像中的环境是在此目录下编译安装的。
1.4、更多版本的安装地址备注:
http://help.aliyun.com/view/11108189_13435438.html
2、云服务器配置要求
镜像需要云服务器最低配置要求:1核/512M及以上
具体云服务器配置要求,根据您的业务情况来定。比如您的业务访问量不高,可以选择中低配云主机来使用镜像。如果您的业务访问量很高,则需要选择中高配云主机来使用镜像。
3、软件版本号、协议列表
nginx
版本:1.6.0
协议:类BSD
http://nginx.org/LICENSE
jdk
版本:1.7.0
协议:OTN
http://www.oracle.com/technetwork/java/javase/downloads/366879
tomcat
版本:7.0.54
协议:Apache
http://www.apache.org/licenses/
mysql
版本:5.5.37
协议:GPL
http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
vsftpd
版本:2.3.5
协议:GPL
http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
备注:系统目录下/alidata/website-info.log文件为安装软件版本详细列表。
4、mysql及ftp密码
mysql的用户名/密码、ftp的用户名/密码保存在系统目录下:
/alidata/account.log文件中。
关于如何修改mysql及ftp的密码,可以参考如下:
1、修改mysql密码:
mysqladmin -uroot -p老密码 password 新密码
注意:老密码即您mysql的root用户当前的密码,新密码即您修改后的密码。 -p跟老密码之间没有空格。老密码跟“password”之间有空格,password跟新密码之间有空格。
2、修改ftp密码:
用root用户登录系统,然后执行下面命令:
passwd www
然后输入您的ftp新密码。
注意:用户名www为镜像默认采用的ftp用户,关于如何再添加新的ftp用户,在这里不再做过多介绍,可以参考/etc/vsftpd.conf主配置文件,再相应配置。
5、软件目录及配置列表
所有软件都采用apt-get安装, 安装目录未单独分离
nginx配置目录: /etc/nginx/
nginx 默认网站目录: /var/www/
JAVA_HOME=/usr/lib/jvm/java-7-oracle
tomcat配置目录: /usr/local/tomcat7/conf/
tomcat默认网站目录: /usr/local/tomcat7webapps/ROOT/
mysql配置目录: /etc/mysql/
vsftpd配置文件: /etc/vsftpd.conf
软件的主目录:/alidata
web主目录:/alidata/www
ftp主目录:/alidata/www
nginx主目录:/alidata/server/nginx
nginx配置文件主目录:/alidata/server/nginx/conf
JAVA_HOME=/alidata/sever/java
tomcat配置目录: /alidata/sever/tomcat7/conf/
tomcat默认网站目录: /alidata/sever/tomcat7/webapps/ROOT/
mysql主目录:/alidata/server/mysql
mysql配置文件:/etc/my.cnf
日志目录:
/alidata/log/nginx 为nginx存放日志主目录
/alidata/server/tomcat7/logs 为tomcat存放日志主目录
/alidata/log/mysql 为mysql存放日志主目录
init目录:
/alidata/init 为当用户用镜像创建系统后,当且仅当用户在第一次启动系统的时候,调用此目录下的脚本来初始化ftp及mysql的密码(随机密码)。
6、软件操作命令汇总
nginx:
/etc/init.d/nginx start|stop|restart
tomcat:
/etc/init.d/tomcat7 start|stop|restart
mysql:
/etc/init.d/mysqld start|stop|restart
ftp:
/etc/init.d/vsftpd start|stop|restart
7、开机自启动
已将相关软件启动脚本加入/etc/rc.local开机自启动。
比如在/etc/rc.local中加入以下命令:
/etc/init.d/mysqld start
/etc/init.d/nginx start
/etc/init.d/tomcat7 start
/etc/init.d/vsftpd start
8、环境变量
已将相关软件的环境变量加入到/etc/profile文件中。选择的镜像版本是nginx+jdk+tomcat的镜像初始化系统的话,则会在/etc/profile文件中加入的信息如下:
export JAVA_HOME=/alidata/server/java
export JRE_HOME=/alidata/server/java/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$PATH:/alidata/server/mysql/bin:/alidata/server/nginx/sbin:$JAVA_HOME/bin
备注:
nginx的bin主目录为:/alidata/server/nginx/sbin
java的bin主目录:$JAVA_HOME/bin
mysql的bin主目录:/alidata/server/mysql/bin
9、系统变更列表
安装此软件包,系统变更过的地方如下:
1、安装软件,系统安装过的一些依赖包如下:
apt-get -y install unzip build-essential libncurses5-dev libfreetype6-dev libxml2-dev libssl-dev libcurl4-openssl-dev libjpeg62-dev libpng12-dev libfreetype6-dev libsasl2-dev libpcre3-dev autoconf libperl-dev libtool libaio*
2、openssl版本升级为1.0.1h。
3、源码编译安装过相应的依赖包,/usr/local目录下:
/usr/local/freetype.2.1.10
/usr/local/libpng.1.2.50
/usr/local/jpeg.6
4、安装软件的主目录:/alidata
5、环境变量设置:/etc/profile
6、开机自启动:/etc/rc.local
7、文件打开数:/etc/security/limits.conf
8、vsftpd以apt-get方式安装,/etc/vsftpd.conf为ftp的主配置文件。
10、更多支持和帮助
更多使用帮助和支持请联系作者:qrj@jiagouyun.com
11、关于卸载
如何卸载镜像环境中安装的软件,可以参考如下命令完成卸载:
cd /root/sh-1.3.0-ubuntu
./uninstall.sh
备注一:执行以上卸载,会清理镜像环境的/alidata目录,请卸载前自行备份好相应数据。
备注二:如果/root/sh-1.3.0-ubuntu被误删,则也可以解压/root/sh-1.3.0-ubuntu.zip,可以参考以下命令:
cd
unzip sh-1.3.0-ubuntu.zip
chmod 777 -R sh-1.3.0-ubuntu
cd sh-1.3.0-ubuntu
./uninstall.sh
12、附录教程一:部署项目
1、在使用镜像安装系统后,在/etc/nginx/conf.d目录下,我们可以看到一个默认的配置文件default.conf。关于如何配置项目,我们可以参考该文件中的内容(#号后面为注释说明):
server {
listen 80 default; #默认监听80端口
server_name _; #默认ip访问
index index.html index.htm index.jsp; #定义默认首页的名称
root /alidata/www/default; #定义nginx的默认站点根目录位置
location ~ \.jsp$ { #截取所有jsp的请求
proxy_pass http://127.0.0.1:8080; #反向代理给后端tomcat
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${
expires 30d;
}
location ~ .*\.(js|css)?${
expires 1h;
}
access_log /alidata/log/nginx/access/default.log;
}
2、根据以上默认配置,我们用ls -l /alidata/www/default命令,会发现/alidata/www/default其实是软链接到/alidata/server/tomcat7/webapps/ROOT/目录下的。
我们直接在浏览器中输入“http://*.*.*.* /index.jsp”(*.*.*.*为我们服务器的公网ip),就可以默认访问到tomcat部署项目的webapps目录下,默认ROOT项目中的index.jsp运行后的结果。可以看到,我们熟悉的tomcat主界面了。当然你输入一个不存在的文件访问,就会出现404 Not Found的错误。
3、假如我们有个demo.jiagouyun.com的域名的项目需要部署在云主机上。以下我们以部署项目的名称为demo为例,来详细介绍一下项目的部署:
备注:demo为自己在MyEclipse中新建的一个项目,仅仅只是在index.jsp中添加了“welcome index.jsp”的测试文字。
3.1、首先,我们需要备案此域名。如果没备案域名,此域名会被运营商拉入黑名单不能使用的哦。针对备案问题,您可以在阿里云以工单的形式反馈,在这里不再过多阐述。
如果您的域名已成功备案,您需要把此域名解析的ip地址设置为云主机的公网ip。demo.jiagouyun.com是驻云公司的二级域名,由于此域名是在万网购买注册的,所以我们登陆到www.net.cn的管理后台,在域名管理中,我们增加一个demo.jiagouyun.com的二级域名,记录值即我们域名解析的ip,这里填写我们云主机的公网ip。
3.2、删除/alidata/www/defaul目录中的内容。然后我们将我们项目名为demo的项目在MyEclipse中发布后,将demo目录中的内容全部拷贝至服务器/alidata/www/defaul目录中(不带项目名)。并且用命令chown www:www -R /alidata/www/default赋予权限。
3.3、最后,我们需要配置nginx,我们在/etc/nginx/conf.d目录下新建一个demo.conf文件(文件名必须以.conf结尾,demo为自取名称,可以为其它名称),并且加入以下内容:
server {
listen 80;
server_name demo.jiagouyun.com;
index index.jsp;
root /alidata/www/default;
location ~ \.jsp$ {
proxy_pass http://127.0.0.1:8080;
}
access_log /alidata/log/nginx/access/demo.log;
}
3.4、最终我们用命令/etc/init.d/nginx reload 以及/etc/init.d/tomcat7 restart重启tomcat来完成我们项目的配置。然后我们在浏览器中输入http://demo.jiagouyun.com即可看到我们部署的demo项目:
备注1:关于多项目部署
假如我们还有另外一个demo2.jiagouyun.com的java项目要部署。在/etc/nginx/conf.d目录下新建一个demo2.conf文件(文件名必须以.conf结尾,demo2为自取名称,可以为其它名称),并且加入以下内容:
server {
listen 80;
server_name demo2.jiagouyun.com;
index index.jsp;
#项目必须要放在webapps目录下
root /alidata/server/tomcat7/webapps/demo2;
location ~ \.jsp$ {
proxy_pass http://127.0.0.1:8080;
}
access_log /alidata/log/nginx/access/demo2.log;
}
然后用chown www:www -R /alidata/server/tomcat7/webapps/demo2赋予权限, 再用命令/etc/init.d/nginx reload 以及/etc/init.d/tomcat7 restart重启tomcat来完成我们项目的配置。
注意:1、此项目部署指定的项目目录为/alidata/server/tomcat7/webapps/demo2,跟《附录教程:部署项目》示例中/alidata/www/default(软链接到/alidata/server/tomcat7/webapps/ROOT/默认项目目录)有所不同。所以部署demo2.jiagou.com后,我们访问项目的路径要变成:
http://demo2.jiagou.com/demo2/index.jsp
2、如果输入http://demo2.jiagou.com/index.jsp,则访问的是webapps目录中默认ROOT项目中的index.jsp运行后的结果。
13、附录教程二:将项目迁移至数据盘中
镜像部署的项目一般存在系统盘的/alidata/server/tomcat7/webapps目录中,我们知道系统盘只有20G,一般不适合存放很大的数据文件等。假如我们部署的项目在实际运行中需要占用很大的硬盘空间,此部分我们就需要考虑将项目迁移至数据盘中。
以《附录教程:部署项目》中部署的项目为例,我们迁移至数据盘中流程如下:
1、停止nginx及tomcat:
/etc/init.d/nginx stop
/etc/init.d/tomcat7 stop
2、mount /dev/xvdb1 /mnt/ #将第一块数据盘挂载至mnt目录下,也可以根据您自己的需要,挂载至其他数据盘中。
#mnt为数据盘的挂载目录,根据您的需求,数据盘也可以挂载其他目录中。
mkdir -p /mnt/tomcat7
3、cp -a /usr/local/tomcat7/* /mnt/tomcat7
4、vim /etc/init.d/tomcat7编辑,将文件中以下内容:
TOMCAT_HOME=/alidata/server/tomcat7
修改为:
TOMCAT_HOME=/mnt/tomcat7
5、修改软链接,将/alidata/www/default软链接到新的目录:
rm -rf /alidata/www/default
ln -s /mnt/tomcat7/webapps/ROOT /alidata/www/default
6、启动tomcat及nginx:
/etc/init.d/tomcat7 start
/etc/init.d/nginx start
14、附录教程三:将mysql迁移至数据盘中
镜像部署的mysql的安装目录及数据目录都存放在系统盘中,同样考虑到系统盘空间不够用的情况,后面如果我们部署的mysql数据量很大,这里就需要我们将我们的mysql迁移至数据盘中。mysql迁移至数据盘中,一般指将mysql的数据目录迁移至数据盘中。具体操作步骤可以参考如下:
1、首先格式化磁盘,并将数据盘挂载在mnt目录下(根据您自己的需求,也可以挂载在其他目录下)
mkdir -p /mnt/data
2、用mysqldump命令导出您项目所有的数据,命令参考如下:
mysqldump -p --all-databases > all.sql
3、停止mysql :
/etc/init.d/mysqd stop
4、vim /etc/init.d/mysqd 将文件中“datadir=/alidata/server/mysql/data”中的目录地址更改为您迁移至数据盘中的目录地址,即“datadir=/mnt/data”。
5、然后用以下命令初始化一个全新的数据库环境:
/alidata/server/mysql/scripts/mysql_install_db --basedir=/alidata/server/mysql --datadir=/mnt/data --user=mysql
值得注意的是datadir为您mysql的数据目录。
6、启动mysql,然后将数据还原至新的数据盘中:
/etc/init.d/mysqld start
mysql < all.sql
/etc/init.d/mysqld restart
15、附录教程四:如何配置mysql远程连接
很多用户反馈,用镜像生成系统后,云主机本地能够连接mysql,为何远程连接不上mysql呢?这是因为默认安装的mysql,出于安全考虑,只能本地连接。如果您需要远程连接,这里就需要设置一下mysql的权限表。具体设置的步骤如下:
1、在您的云主机上连接进入mysql。
2、执行以下mysql命令:
use mysql #打开mysql数据库
#将host设置为%表示任何ip都能连接mysql,当然您也可以将host指定为某个ip
update user set host='%' where user='root';
flush privileges; #刷新权限表,使配置生效
然后我们就能远程连接我们的mysql了。
3、如果您想关闭远程连接,恢复mysql的默认设置(只能本地连接),您可以通过以下步骤操作:
use mysql #打开mysql数据库
#将host设置为localhost表示只能本地连接mysql
update user set host='localhost' where user='root';
flush privileges; #刷新权限表,使配置生效
备注:您也可以添加一个用户名为yuancheng,密码为123456,权限为%(表示任意ip都能连接)的远程连接用户。命令参考如下:
grant all on *.* to 'yuancheng'@'%' identified by '123456';
flush privileges;