我们要部署的网站是 http://zlingspace.com
专注于众包的网站,理念是我们的程序猿遍布天下。所以在这个基础上,我们对服务器的稳定还有安全性可靠性的要求非常之高。
首先在阿里云上必须有一台自己的服务器,我装的Linux操作系统,非常的稳定高效,那我们就谈谈选择阿里云
选择阿里云
我就是看中了阿里云的高可用性 网站最重要的就是高可用性了,以及数据的安全,如果哪个IDC动不动数据就全部丢失了,我想没哪个站长敢用,其实我之前和很多站长一样,都是对国内的IDC有偏见的。这也是我为啥第一个网站是选择国外的虚拟主机。其实在很多站长的眼里,国外的那些大的IDC才靠谱,数据放在他们那里才不会丢失。所以Linode这样的VPS以及像Hostmonster这样的虚拟主机商才被国内的人看好,说实话,他们做的确实不错,我这些都用过,数据真没有丢失过。
刚开始用阿里云的时候,说实话,我对阿里云也是不放心的,所以我的数据全部通过rsync同步到了国外的AWS上,每天一备份,数据库也做了主从同步。后来当我用了一年多,以及对阿里云的了解更加深入之后,我才发现,我的担心多余了。
先要从架构角度去说。好吧,又要谈到架构了,很多站长可能不知道,阿里云的云主机是架构在非常着名的飞天云计算系统上。你可能不知道,但是了解架构的技术员都会知道,这是淘宝、天猫等都在用的底层架构,你有看到过淘宝和天猫挂掉吗?(当然一两个页面偶尔不能访问和这个没关系,很多是上层应用的问题),相反,再看看京东、苏宁之流,搞个小活动动不动服务器就瘫了,你有看到双11的时候,大家在0点疯抢天猫红包的时候,天猫有挂掉吗?我想没有吧。这都得益于整个底层架构啊。
你想想,你的云主机和天猫都是架构在同一种集群上,你能不放心吗?相反,你再想想那些自称自己是“云”的所谓VPS服务商,搞个VPS就叫云来骗人,你敢用吗?只要母鸡一挂,你的VPS就挂了。再者,相比很多人都知道AWS曾经出现过很大的故障,但是你看过淘宝和天猫这几年有出过这么大的故障么?
再谈数据。数据我也不用说太多了,刚才在说架构的时候已经谈过了。普通VPS的数据是写到母鸡的硬盘上的,其实大家都知道,硬盘是易耗品,本身机械硬盘还是会出故障,用个两三年,说不定就出故障了,而且母鸡的硬盘坏掉了,你的数据肯定就回不来了,一般的VPS服务商也不会花巨款去给你恢复数据的。所以很多VPS商才声称自己做了RAID几几之类的。RAID是个好技术,是能保证一定的数据完整性的,但是还是几块硬盘,还是会坏,所以Linode有单独的备份系统。
阿里云就不一样了,刚才说过了,阿里云的云主机的硬盘是放在单独的网络存储集群上,而且你的数据每份都给保存3份,你每次写入一次数据,就会通过集群的交换机写入到集群的不同位置上。集群最重要的特点就是数据高可用,这么大的集群,随便坏掉几块硬盘影响么?直接拿另外地方存储的数据同步过来就行了。
那你会问,如果这3份数据所在的硬盘都坏掉了,那岂不是就没救了?好吧,其实我告诉你,这相当于你从一个沙滩上画出一平方米(当然只是假设啊,别当真),然后从这一平方米里面选3粒沙子,然后涂上颜色,然后混入到这一平方米里面,蒙上眼睛,再把这3粒沙子一起挑出来,你觉得这和你中5百万有啥区别呢。。。除非整个集群或者集群的百分之几十挂掉,才能轮到你的数据丢失吧,不过话说回来了,你在淘宝上注册的帐号有丢失过么(排除自己的违规导致删号一类的)?
所以总结一句话,阿里云是web应用的首选。
下面我们三步走
1:Linux下安装jdk7
2:Linux下装Tomcat安装并使用
3:Linux下装mysql并搞定编码问题
1 Linux下安装jdk7
我们文件上传之类的就是用跟linux联系的WinSCP,下载安装即可。
链接:http://pan.baidu.com/s/1boLOcAN 密码:ltjy
装好之后把我们要安装的jdk用这个软件放到我们想要放置的文件夹类。
把这个传上去之后,比如我们这里放在opt目录下。
tar.gz包:解压缩
# mkdir /usr/java
# cd /usr/java
# tar -zxvf /software/jdk-7u79-linux-x64.tar.gz
生成链接以便版本升级(这一步可做可不做)
# ln -s jdk1.7.0_55 latest
# ln -s latest default
rpm包:(如果你是rpm包就用这个命令)
# rpm -ivh jdk-7u55-linux-x64.rpm
执行成功之后,你可以在WinSCP看到解压好的jdk,可以重命名。
接下来就是配置环境变量了。
# vi /etc/profile
进到如下的界面,按一下 i 就会进入编辑模式。
用键盘把光标移到最下边,加上
export JAVA_HOME=/usr/java/default
export JAVA_BIN=$JAVA_HOME/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
这里介绍几个常用命令,如果要退出编辑页面就按Esc。然后输入指令。
不保存退出 :q!
保存并退出 :wq
重 启 reboot
记得source一下使配置生效
# source /etc/profile
这个时候报错了,很常见的错误,因为我的default是没有配置的,所以我得去改成我现在的文件名。
export JAVA_HOME=/usr/java/jdk1.7
export JAVA_BIN=$JAVA_HOME/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
在测试,jdk已经装好了。
2 Linux下装Tomcat安装并使用
我们继续利用WinSCP上传tomcat到Linux。同时也放在opt下。
Tomcat的安装 解压缩
# mkdir /usr/local/tomcat
# cd /usr/local/tomcat
# tar -zxvf /software/apache-tomcat-7.0.54.tar.gz
生成链接以便版本升级
# ln -s apache-tomcat-7.0.54 server
启动Tomcat
# cd /usr/local/tomcat/server/bin
# ./startup.sh
启动成功了。
这个时候我们在本地访问以下tomcat测试成功了没。
如果不能成功很有可能是防火墙的原因。
打开防火墙,使外部能访问
# /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
# service iptables save
# service iptables restart
或直接修改文件/etc/sysconfig/iptables.
# vi /etc/sysconfig/iptables
-A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
停止Tomcat
# ./shutdown.sh
Tomcat的使用
1. 配置web管理帐号
修改文件conf/tomcat-users.xml,在<tomcat-users>
元素中添加帐号密码,需要指定角色.
# vi /usr/local/tomcat/server/conf/tomcat-users.xml
<tomcat-users>
<user name="admin" password="admin" roles="admin-gui,manager-gui" />
</tomcat-users>
2.配置web访问端口
可以修改conf目录下的文件server.xml,修改Connector元素(Tomcat的默认端口是8080),需要重新启动Tomcat服务生效.
# vi /usr/local/tomcat/server/conf/server.xml
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
3.配置https安全连接(ssl加密连接)
https连接需要用到数字证书与数字签名(MD5算法)
网站https连接首先需要申请数字证书,配置加密连接器,浏览器安装证书.
·使用Java的工具keytool产生数字证书
# keytool -genkey -alias tomcat -keyalg RSA
生成文件.keystore
注意:CN为主机名称,本机可用localhost
·将文件.keystore放到Tomcat服务器的conf目录下
# cp .keystore /usr/local/tomcat/server/conf/
·修改conf/server.xml文件,修改加密连接器,添加keystoreFile与keystorePass
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="conf/.keystore" keystorePass="123456"/>
·重新启动tomcat.浏览器输入https://localhost:8443访问,并安装证书.
4.Tomcat的目录结构
·bin //存放Tomcat的命令脚本文件
·conf //存放Tomcat服务器的各种配置文件,最主要是server.xml
·lib //存放Tomcat服务器支撑jar包
·logs //存放日志文件
·temp //存放临时文件
·webapps //web应用所在目录,外界访问web资源的存放目录
·work //Tomcat的工作目录
5.web应用的目录结构
webapp – web应用所在目录
|— html, jsp, css, js文件等 – 这些文件一般在web应用根目录下,根目录下的文件外界可以直接访问.
|— WEB-INF 目录 – java类、jar包、web配置文件存在这个目录下,外界无法直接访问,由web服务器负责调用.
|— classes 目录 – java类
|— lib 目录 – java类运行所需要的jar包
|— web.xml 文件 – web应用的配置文件
6.虚拟主机的配置
指定虚拟主机名,修改conf/server.xml,添加<host>
元素.
<host name="hostname.domainname" appBase="/webapps">
<Context path="/webapp" docBase="/webapps/webapp"/>
</host>
例:
<host name="www.163.com" appBase="/webapps">
</host>
<host name="mail.163.com" appBase="/mailapps">
</host>
须设置DNS解析(host文件或DNS系统).
7.web应用和虚拟目录的映射.
可以修改xml配置文件的元素来设置web应用和虚拟目录的映射.
·conf/server.xml //在元素下添加,需要重新启动Tomcat服务生效,不建议使用.
·conf/context.xml //添加元素所有web应用有效.
·conf/[enginename]/[hostname]/context.xml.default //[enginename]一般是Catalina,主机[hostname]的所有web应用有效.
·conf/[enginename]/[hostname]/ //在目录下任意建一个文件(扩展名xml),文件名即为虚拟目录名.多级目录使用#分割. //缺省值web应用目录可以定义为ROOT.xml,添加,需重新启动Tomcat服务器.
·META-INF/context.xml //
可以将web应用放在webapps目录下让Tomcat服务器自动映射,适用开发环境,实际运用环境中不用自动映射。
如没有修改配置文件,web应用目录为ROOT时则为默认web应用。
8.web应用首页(welcome file)的配置
修改web应用的配置文件: [webapp]/WEB-INF/web.xml
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
3 Linux下装mysql并搞定编码问题
开始我准备下载gz文件装的,这种也行,给个下载地址吧
http://dev.mysql.com/downloads/mysql/#downloads
下载完了解压,然后配两个文件就行,也不是很难,自己百度哈。
下面介绍一个超级简单的方法,但是要在线下载。
1.首先检查系统是否安装了MySQL
#netstat -tap | grep mysql
如果是上图就说明安装了需要先卸载掉。没安装会不现实。
2.安装MySQL
#apt-get install MySQL-server mysql-client
过一会儿会让你输入一个密码(忘记截图了),那是你数据库root用户的密码,输入两遍就好了。
接下来等着完成就好了,然后我们登录测试一下。
mysql -uroot -p
然后输入你的密码就能成功登录说明装好了。
3. MySQL数据库的一些简单管理
1)停止服务
#/etc/init.d/mysql stop
2)开始服务
#/etc/init.d/mysql start
3)修改管理员密码:
#/mysqladmin -u root password newpassword
4)设置远程访问(正常情况下,MySQL占用3306端口只是在IP127.0.0.1 上监听,拒绝了其他IP的访问(通过netstat命令可以查看到),取消本地监听需要修改配置文件 my.cnf)
#vim /etc/mysql/my.cnf
找到以下内容并且注释
bind-address = 127.0.0.1 //找到并注释
解决编码问题
在my.cnf文件的[client]后面添加一句
default-character-set=utf8
( 不是default_character_set=utf8[i][/i],这个配置我没有试过,不知道能不能成功)
在[mysqld]后面添加如下三句:没有client的自行添加即可
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci;
下面改一下时间,默认是如果隔八个小时没人访问,数据库关了,我们设置一下延时。
修改操作:打开/etc/my.cnf,在属性组mysqld下面添加参数如下:
[mysqld]
interactive_timeout=28800000
wait_timeout=28800000
保存退出;
重新启动mysql服务器就可以。
再来查看字节编码,就全部都是utf-8了
MySQL安装后的目录结构分析(只针对 apt-get在线安装情况)
数据库存放目录: /var/lib/mysql/
相关配置文件存放目录: /usr/share/mysql
相关命令存放目录: /usr/bin (mysqladmin mysqldump等命令)
启动脚步存放目录: /etc/rc.d/init.d/
MySQL图像化管理软件
有两个:
1)开源:MySQL workbench
2)商业:Navicat
说在后面
说在后面的话就是告诉读者,从我们在选择阿里云之后,阿里云没有辜负我们的期望,我们的要求阿里云都能满足,而且能保质保量,值得信奈。