阿里云服务器搭建java环境详细步骤5
前面的文章已经分析如何将项目部署到自己的服务器上,这里我们对服务器上的项目可能遇到的问题进行解决.
1.图片资源访问不到的问题
图片资源不同于css, js等静态资源,可以直接放置在项目中,图片资源需要独立于项目以外,这就导致了在储存图片资源的时候,只是存储图片的相对路径,而不是绝对路径.因为如果储存的是绝对路径,一旦项目要从本地上传到服务器上,那么就需要重新修改数据库中的图片地址信息或者在服务器上重新构造数据库中的图片地址,无论是哪种都是比较麻烦的.但是如果储存的只是相对路径,我们就可以直接将相对路径下的文件打包上传到服务器,然后再修改对应的文件路径前缀,与数据库中的图片地址构成图片的绝对路径.
比如类似于这样的,在项目中储存的只是图片的相对路径
但是只有相对路径,项目又如何访问到图片资源呢?
换句话就是说,如何在项目访问相对路径的时候,在前面加上文件路径前缀,将相对路径补全成图片的绝对路径地址呢?
解决方案:
我们一般都是通过tomcat来启动和访问项目的,所以解决方法也是在tomcat上,
核心方法就是设置虚拟路径
虚拟路径的用作就是在访问虚拟路径的时候,自动给路径添加(这个取决于你将图片放置的目录)相应的文件前缀,
比如我将图片放置在
这个是绝对路径
F:\javaCode\OfferProduct\xioayuanshangpu\Image\win\upload\images\item\shop\15\
也就是15文件夹下
根据项目中的需要,我这里将相对路径设置为upload以后的文件路径
相对路径
\upload\images\item\shop\15\
那么文件前缀就是
F:\javaCode\OfferProduct\xioayuanshangpu\Image\win
这个时候我们需要去项目使用的tomcat中修改配置文件
配置文件一般就在apache-tomcat-8.0.53o2o\conf\server.xml,打开该文件,在配置文件几乎最下面的地方添加一行,然后保存退出即可.
<Context docBase="F:/javaCode/OfferProduct/xioayuanshangpu/Image/win/upload" path="/upload"/>
!这里需要注意,相关路径都要根据自己的情况修改
这样项目在访问数据库中的upload的时候就会自动添加上文件前缀,去访问绝对路径下的图片资源.
这一点在解决Linux服务器上的相同问题也是一样,只不过可能会变成这样
绝对路径是
/root/image/upload/…
相对路径是
/upload/…
文件前缀是
/root/image/
解决方法是跟上面windos一样的,也是建立虚拟路径.
2.如何在服务器上设置Nginx
下载和安装Nginx和tomcat这里就不提了.
1.因为要配置Nginx为多个tomcat转发,所以需要将解压后的tomcat多复制出几份,这里我准备复制两份.
- 因为要配置Nginx为多个tomcat转发,所以需要将解压后的tomcat多复制出几份,这里我准备复制两份.
- 对于复制出来的tomcat我们需要修改配置文件来修改端口,使得三个tomcat的三个端口各不一样,否则在同时启动三个tomcat会发生端口冲突导致启动失败.
每个tomcat配置文件有三个端口,这三个端口都需要重新配置,比如其中一个tomcat的配置如下
<Server port="18005" shutdown="SHUTDOWN"> :关闭时使用的端口
<Connector port="18080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> : 一般应用使用的端口
<Connector port="18009" protocol="AJP/1.3" redirectPort="8443" />:为AJP端口,即容器使用的端口,如 APACHE能通过AJP协议访问Tomcat的8009端口
# 上面的3个端口,复制的时候,一定要修改;不然启动时端口会冲突。
# 这里我们把复制的tomcat中这3个端口对应都加上1。
# 18006/18081/18010
这时候我们在访问的时候,就不再是原来默认的8080了.比如以上的tomcat,启动后,我们访问的路径就是
localhost:18080
- 修改Nginx的配置文件,配置文件一般就在Nginx文件下的子文件conf下,就是nginx.conf文件
#服务器的Nginx配置
upstream zzw.com { #服务器名字
server 127.0.0.1:18080 weight=1;#服务器配置 weight是权重的意思,权重越大,分配的概率越大。
server 127.0.0.1:17080 weight=2;#这里就是Nginx可以转发的服务器列表,这里设置了三个
server 127.0.0.1:16080 weight=1;
}
#当前的Nginx的配置
server {
listen 80;#监听80端口,可以改成其他端口
server_name localhost;############## 当前服务的域名
location / {
proxy_pass http://zzw.com; #这里的服务器的名字,需要于上面的服务器的名字保持一致
proxy_redirect default;
}
- 以上设置完毕,就可以去访问项目中的欢迎界面.然后可以发现经过不断的刷新,可能是tomcat在处理请求,如果次数足够多,会发现端口18080:17080:16080 的tomcat次数比例为 = 1:2:1,这也就是上面设置的权重的作用.
Nginx对于缓解服务器压力十分有效,可以通过tomcat集群来解决服务器压力过大的问题,而且实现较为简单,可以多多利用.
十分感谢以下两篇文章:
翔仔老师的文章
SIHAIloveYAN大佬的文章