阿里云ECS部署web项目的常见问题及解决方法
云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。
本次使用的ECS配置请参考云翼计划,操作系统镜像 CentOS 7.3 64位(更换系统盘的步骤和注意事项)
一、使用PuTTY通过SSH连接到ECS时提示Disconnected
- 通过 控制台终端 进入系统并登录
- 输入
vim /etc/ssh/sshd_config
打开sshd_config文件 - 将光标移到最后一行,按下i键。将
PasswordAuthentication no
改为PasswordAuthentication yes
- 按下esc键,输入:wq
- 输入
service sshd restart
重启sshd服务
二、安装Tomcat
与Apache和MySQL不同,CentOS的yum源中不包括Tomcat,所以需要自行下载。可在本地Windows系统中访问Tomcat官网下载,推荐下载当前最新版本的上一版本(或当前最新版本)。下载完成后通过FileZilla传到云服务器的/usr/local目录下。依次执行如下命令即可
cd /usr/local
tar -zxvf apache-tomcat-8.0.26.tar.gz // 解压压缩包
rm -rf apache-tomcat-8.0.26.tar.gz.tar.gz // 删除压缩包
mv apache-tomcat-8.0.26 tomcat
三、如何通过IP(域名)直接访问Tomcat中部署的项目
- 配置默认的项目名称
打开tomcat/conf/server.xml,找到
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>
在<Host>
和</Host>
中间加上
<Context path="" docBase="[Tomcat的目录]/webapps/[项目名]" />
修改后的结果:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="/usr/local/Tomcat/webapps/WebStore" />
</Host>
保存退出
2. 配置80端口
在tomcat/conf/server.xml中找到
<Connector port="8080" protocol="HTTP/1.1"
maxThreads="600"
minSpareThreads="100"
maxSpareThreads="500"
acceptCount="700"
connectionTimeout="20000"
redirectPort="8443" />
把port="8080"
改为port="80
“即可
3.配置welcome-file
打开项目中的WEB-INF/web.xml
welcome-file就是默认访问的第一个页面,如果想设置为index.jsp
那么只要在<welcome-file-list>
和</welcome-file-list>
中加入<welcome-file>index.jsp</welcome-file>
即可
至此修改全部完成。部署好项目后需要通过输入[IP]:8080/[项目名]/[文件名]才能访问的文件,修改后只需要输入[IP]即可
四、MariaDB和MySQL数据库
CentOS 7以后,MySQL 已经不再包含在 CentOS的源中,而改用了 MariaDB。MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。
如何安装MariaDB
MariaDB完全继承了MySQL的命令,使用起来并没有太大区别,在此推荐CentOS 7用户使用MariaDB。在使用MariaDB代替MySQL时需要注意以下三点:
- 下载MariaDB驱动包,放到Tomcat和项目的lib目录下
- 数据库驱动由
"com.mysql.jdbc.Driver"
改为"org.mariadb.jdbc.Driver"
- 建立连接的url由
"jdbc:mysql://localhost:3306/webstore"
改为"jdbc:mariadb://localhost:3306/webstore"
关于MySQL和MariaDB之间的更多故事,还请感兴趣的读者自行搜索,在此就不多赘述了。
五、数据库中文问题
MySQL和MariaDB对中文很不友好,默认编码是latin1。如果要写入中文,需要将其改为utf-8
1. 使用mysql -uroot -p
登录数据库
2. 执行show variables like 'character%';
结果如下
3. 修改配置文件,执行vim /etc/my.cnf
4. 在[mysqld]字段下加上character-set-server = utf8
(按下i键进入编辑模式)
5. 保存并退出(按下esc键,输入:wq)
6. 重启数据库服务(systemctl restart mariadb
)CentOS 7以后用systemctl命令代替了service命令
六、防火墙与安全组
部署好Tomcat和MariaDB之后可能无法从外部访问,可能是防火墙或安全组的设置导致
- 关闭CentOS 7默认使用的firewall防火墙
systemctl stop
firewalld.service
#停止firewall
systemctl disable firewalld.service
#禁止firewall开机启动
firewall-cmd --state
#查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
- 在安全组中添加80端口和3306端口的访问。(如何添加?)
安全组是一个逻辑上的分组,这个分组是由同一个地域内具有相同安全保护需求并相互信任的实例组成。安全组,类似防火墙,用于设置单台或多台云服务器的网络访问控制,它是重要的安全隔离手段。每个实例至少属于一个安全组,在创建的时候就需要指定。不同安全组的实例之间默认内网不通,可以授权两个安全组之间互访。