ctrl+点击可以跳转到对应文档
本文记录从零开始搭建web服务器环境,服务器采用ubuntu18.04操作系统
如果是采用虚拟机进行服务器搭建:
首先保证虚拟机设置里面的网络连接采用net模式(主机连接虚拟机需要保证和主机在同一网段),之后再虚拟机终端键入 ifconfig -a 查看虚拟机ipv4地址,如下
接着在主机(这里采用的是windows)打开命令行,键入ping 虚拟机的ip地址 如果显示如下,即表示主机和虚拟机连接成功(连接不成功检查虚拟机网络设置是否是net模式)
如果采用的是阿里云服务器,直接使用公网ipv4地址即可
要让主机和虚拟机连接起来(采用ssh协议)
注意是虚拟机的话服务器要安装ssh:
打开虚拟机命令行终端输入:sudo apt install ssh
另外如果不是root用户很多操作都是需要提高需求权限的。
下面环境的搭建以阿里云ubuntu18.04为例,虚拟机上操作步骤是一致的,首先为了在主机上操作服务器准备两个工具 xshell7(连接服务器的命令行终端) winscp(为了从主机上传输文件到服务器)
首先打开xshell连接命令行
之后输入服务器的用户名和密码即可连接成功,winscp用于传输文件连接操作一样
连接成功就可以在主机上控制服务器了
- 这里安装的是jdk1.8,首先在官网上下载压缩包到本地,然后利用winscp工具传输压缩包到服务器/usr/local目录下
虚拟机作为服务器如果是非root用户下传文件到local需要使用命 令行:
sudo chmod 777 local 增加权限以此来传输文件到local目录,
传输完成之后sudo chmod 755 local可还原权限
将文件传输到local目录之后,在该目录终端键入即可解压文件:
- 之后配置环境变量:
打开/etc/profile文件底部输入(注意文件修改权限问题):
JAVA_HOME:jdk安装的路径
之后输入重启配置文件:
- source /etc/profile,然后 输入 java -version查看版本信息即安装成功
- apt-get install:更新软件源
- apt-get install mysql-server:安装mysql
中途会提示你设置mysql的密码
- 安装成功之后启动mysql:
查看3306端口监听状态,可以看到mysql以及安装并且启动成功
- 之后设置mysql可以远程连接
终端登入数据库:
use mysql
赋权限给所有用户:
其中 '2003'应该用之前安装mysql设置的密码代替
刷新:
进入/etc/mysql/mysql.conf.d/mysql.cnf修改配置文件(注意权限!)
注释掉 # bind-address = 127.0.0.1
之后重启mysql
这样远程连接数据库就成功了
首先官网http://nginx.org/en/download.html下载对应的nginx安装包,同上面一样采用远程文件传输把安装包传输到 /usr/local这个目录,然后解压到该目录
之后需要安装nginx编译器 gcc-c++ 安装nginx依赖包 pcre zlib
命令截图:
首先安装gcc-c++:
之后安装依赖库
apt-get install libssl-dev
apt-get install libpcre3 libpcre3-dev
apt-get install openssl libssl-dev
apt-get install zlib1g-dev
然后进入到刚刚解压的nginx目录,进行nginx的编译安装:
使用默认安装配置:
编译安装:
安装完成可以看到在/usr/local目录下面生成了nginx文件,这时候进入到该文件下面的sbin目录,启动nginx
在浏览器输入结果如下:
至此nginx环境安装完成
首先官网https://tomcat.apache.org/下载对应的tomcat安装包,同上面一样采用远程文件传输把安装包传输到 /usr/local这个目录,然后解压到该目录
之后进入到解压的tomcat文件下面的bin目录,修改bin目录下面的startup.sh和shutdown.sh文件
在最后一行前面加入(注意java_home路径)
export JAVA_HOME=/usr/local/jdk1.8.0_291
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:%{JAVA_HOME}/lib:%{JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
#tomcat
export TOMCAT_HOME=/usr/local/apache-tomcat-8.5.69
之后bin目录下面启动tomcat
浏览器放入即成功
前端采用vue框架,对vue进行打包npm run build生成dist文件夹,将dist文件夹放到/usr/local/nginx/html下面
修改nginx配置文件(位于nginx目录conf文件下面的nginx.conf)
在8080端口进行监听
后端采用spring boot框架,利用maven自动打包工具进行打包生成.jar包
在pom.xml文件当中配上
之后再命令行键入:
mvn clean package打包为.jar包
在把.jar包文件传输到服务器上面,运行因为spring boot自带tomcat所以直接运行.jar包
然后在nginx目录的sbin下面启动nginx
之后在网页上输入http://120.76.247.130:8080/category/main:就可以看到宠物商店首页(目前该公网端口已经上线其他项目)
首先官网下载对应的redis版本,同上面一样采用远程文件传输把安装包传输到 /usr/local这个目录,然后解压到该目录
解压
之后进入redis进行编译安装
命令行输入分别输入(先安装gcc-c++)
make
make install
之后输入 src/redis-server打开redis服务
也可以输入 src/redis-cli进入redis客户端
与此同时项目中进行配置:
引入依赖:
#配置文件
spring.redis.database=0
#redis服务器地址
spring.redis.host=127.0.0.1
#redis服务器端口
spring.redis.port=6379
#redis连接密码
spring.redis.password=
#链接超时时间 单位 ms
spring.redis.timeout=3000
################ Redis 线程池设置 ##############
# 连接池最大连接数(使用负值表示没有限制) 默认 8
spring.redis.lettuce.pool.max-active=8
# 连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1
spring.redis.lettuce.pool.max-wait=-1
# 连接池中的最大空闲连接 默认 8
spring.redis.lettuce.pool.max-idle=8
# 连接池中的最小空闲连接 默认 0
spring.redis.lettuce.pool.min-idle=0
首先后端打包为war包放到tomcat/webapps目录下,利用maven打包为war包需要做的:
后端spring boot项目应该加入依赖:
<packaging>jar</packaging>
<!-- 剔除掉自带的tomcat依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<!--在build标签里面加入 -->
<!-- 跳过测试-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<!-- 没有web.xml文件的情况下构建WAR-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.3</version>
</plugin>
同时在启动类目录新创建一个类:
public class MypetstoreApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(MypetstoreApiApplication.class);//这里是加载项目的启动类
}
}
之后再进行打包操作
打包完成之后
在tomcat中conf目录下面server.xml文件更改(主要是为了访问端口根路径就直接访问war包,docBase放的就是war的路径)
<Context path="/" docBase="/usr/local/apache-tomcat-8.5.69/webapps/mypetstore-api-0.0.1-SNAPSHOT" reloadable="false"></Context>
注意前端若是vue打包,在vue打包的时候在main里面配的axios请求根路径注释掉(利用nginx做反向代理):
axios.defaults.baseURL='http://127.0.0.1:8088/'
之后进入到tomcat目录下的bin目录下启动tomcat:
到此项目就启动成功了,这个时候网页输入服务器地址+端口+路径显示如下:
接下来nginx配置:
先向之前一样nginx的dist放在html目录下面:
然后在nginx.conf里面再对需要请求服务器的路径进行代理,即加上
下面这个表示前端对后端请求是/catalog/categories就进行代理转发,其中 proxy_pass是代理转发的根路径,注意根路径后面加上'/'和不加到导致根路径不一样,其余是请求头
location /catalog/categories{
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_pass http://127.0.0.1:8080;
}
之后再重启nginx服务,可以看到 nginx+tomcat的部署就完成了。
前端已经拿到服务器给的数据
到这里我们再进行nginx+tomcat的集群配置
这里采用一台服务器多个tomcat的形式,先在/usr/local下面新建一个目录 tomcat2.0存在准备安装的第二个tomcat:
可以看到有两个tomcat目录,这个时候再按照上文所讲的再重新配一个tomcat环境。
同时因为是跑在一个服务器上面,所以我们改变第二个tomcat的端口号,进入tomcat下面的conf目录的server.xml文件,找到8080,8005,8009这几个端口,把8080改为自己想要设置的端口,其余的改变就可
之后再到bin目录(首先保证这个tomcat环境配好了)下面再运行这个tomcat,这个时候就有两个tomcat运行了。
为了实现集群,我们再回到nginx的配置文件里面:
在相应位置加上:
upstream mypetstore{
//weight表示权重
server 127.0.0.1:8080 weight=5;
server 127.0.0.1:8081 weight=3;
}
然后修改之前的请求转发路径为:
好的这是时候可以看到集群就部署完成了,经过测试,我们再断掉一个tomcat之后,网站仍然能够正常访问