web服务器环境搭建

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 Tair(兼容Redis),内存型 2GB
简介: 这里主要讲述如何搭建web服务器环境
  1. 前言
  2. JDK环境配置
  3. mysql环境配置
  4. nginx环境配置
  5. tomcat环境配置
  6. 项目的部署(nginx+tomcat实现部署)
  7. redis环境配置
  8. nginx+tomcat集群配置

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用于传输文件连接操作一样

连接成功就可以在主机上控制服务器了

JDK环境安装(建议在root模式下面)

  1. 这里安装的是jdk1.8,首先在官网上下载压缩包到本地,然后利用winscp工具传输压缩包到服务器/usr/local目录下

虚拟机作为服务器如果是非root用户下传文件到local需要使用命 令行:

​ sudo chmod 777 local 增加权限以此来传输文件到local目录,

​ 传输完成之后sudo chmod 755 local可还原权限

​ 将文件传输到local目录之后,在该目录终端键入即可解压文件:

  1. 之后配置环境变量:

    打开/etc/profile文件底部输入(注意文件修改权限问题):

JAVA_HOME:jdk安装的路径

之后输入重启配置文件:

  1. source /etc/profile,然后 输入 java -version查看版本信息即安装成功

mysql环境安装

  1. apt-get install:更新软件源
  2. apt-get install mysql-server:安装mysql

    中途会提示你设置mysql的密码

  3. 安装成功之后启动mysql:

查看3306端口监听状态,可以看到mysql以及安装并且启动成功

  1. 之后设置mysql可以远程连接

    终端登入数据库:

use mysql

赋权限给所有用户:

其中 '2003'应该用之前安装mysql设置的密码代替

刷新:

进入/etc/mysql/mysql.conf.d/mysql.cnf修改配置文件(注意权限!)

注释掉 # bind-address = 127.0.0.1

之后重启mysql

这样远程连接数据库就成功了

nginx环境配置

首先官网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环境安装完成

tomcat环境配置

首先官网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

浏览器放入即成功

项目的部署(nginx+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环境配置

首先官网下载对应的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

nginx+tomcat集群配置流程

首先后端打包为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之后,网站仍然能够正常访问

相关文章
|
1月前
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
46 3
|
2月前
|
分布式计算 资源调度 Hadoop
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
91 4
|
2月前
|
Java PHP
PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。理解其垃圾回收机制有助于开发高效稳定的PHP应用。
【10月更文挑战第1天】PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。其垃圾回收机制包括引用计数与循环垃圾回收,对提升应用性能和稳定性至关重要。本文通过具体案例分析,详细探讨PHP垃圾回收机制的工作原理,特别是如何解决循环引用问题。在PHP 8中,垃圾回收机制得到进一步优化,提高了效率和准确性。理解这些机制有助于开发高效稳定的PHP应用。
53 3
|
3月前
|
存储 安全 Linux
离线Linux服务器环境搭建
【9月更文挑战第3天】在离线环境下搭建Linux服务器需按以下步骤进行:首先确定服务器用途及需求,准备安装介质与所需软件包;接着安装Linux系统并配置网络;然后设置系统基础参数,如主机名与时区;安装必要软件并配置服务;最后进行安全设置,包括关闭非必要服务、配置防火墙、强化用户认证及定期备份数据。整个过程需确保软件包的完整性和兼容性。
|
4月前
|
JavaScript 搜索推荐 前端开发
从零搭建到部署:Angular与Angular Universal手把手教你实现服务器端渲染(SSR),全面解析及实战指南助你提升Web应用性能与SEO优化效果
【8月更文挑战第31天】服务器端渲染(SSR)是现代Web开发的关键技术,能显著提升SEO效果及首屏加载速度,改善用户体验。Angular Universal作为官方SSR解决方案,允许在服务器端生成静态HTML文件。本文通过具体示例详细介绍如何使用Angular Universal实现SSR,并分享最佳实践。首先需安装Node.js和npm。
106 1
|
4月前
|
API C# 开发框架
WPF与Web服务集成大揭秘:手把手教你调用RESTful API,客户端与服务器端优劣对比全解析!
【8月更文挑战第31天】在现代软件开发中,WPF 和 Web 服务各具特色。WPF 以其出色的界面展示能力受到欢迎,而 Web 服务则凭借跨平台和易维护性在互联网应用中占有一席之地。本文探讨了 WPF 如何通过 HttpClient 类调用 RESTful API,并展示了基于 ASP.NET Core 的 Web 服务如何实现同样的功能。通过对比分析,揭示了两者各自的优缺点:WPF 客户端直接处理数据,减轻服务器负担,但需处理网络异常;Web 服务则能利用服务器端功能如缓存和权限验证,但可能增加服务器负载。希望本文能帮助开发者根据具体需求选择合适的技术方案。
206 0
|
4月前
|
Rust 安全 开发者
惊爆!Xamarin 携手机器学习,开启智能应用新纪元,个性化体验与跨平台优势完美融合大揭秘!
【8月更文挑战第31天】随着互联网的发展,Web应用对性能和安全性要求不断提高。Rust凭借卓越的性能、内存安全及丰富生态,成为构建高性能Web服务器的理想选择。本文通过一个简单示例,展示如何使用Rust和Actix-web框架搭建基本Web服务器,从创建项目到运行服务器全程指导,帮助读者领略Rust在Web后端开发中的强大能力。通过实践,读者可以体验到Rust在性能和安全性方面的优势,以及其在Web开发领域的巨大潜力。
46 0
|
4月前
|
Java 缓存 数据库连接
揭秘!Struts 2性能翻倍的秘诀:不可思议的优化技巧大公开
【8月更文挑战第31天】《Struts 2性能优化技巧》介绍了提升Struts 2 Web应用响应速度的关键策略,包括减少配置开销、优化Action处理、合理使用拦截器、精简标签库使用、改进数据访问方式、利用缓存机制以及浏览器与网络层面的优化。通过实施这些技巧,如懒加载配置、异步请求处理、高效数据库连接管理和启用GZIP压缩等,可显著提高应用性能,为用户提供更快的体验。性能优化需根据实际场景持续调整。
84 0
|
4月前
|
UED
JSF文件下载:解锁终极文件传输秘籍,让你的Web应用瞬间高大上!
【8月更文挑战第31天】掌握JSF文件下载功能对构建全面的Web应用至关重要。本文通过具体代码示例,详细介绍如何在JSF中实现文件下载。关键在于后端Bean中的文件读取与响应设置。示例展示了从创建实体类到使用`&lt;h:commandLink&gt;`触发下载的全过程,并通过正确设置响应头和处理文件流,确保文件能被顺利下载。这将显著提升Web应用的实用性与用户体验。
74 0
|
4月前
|
Java 数据库 API
JSF与JPA的史诗级联盟:如何编织数据持久化的华丽织锦,重塑Web应用的荣耀
【8月更文挑战第31天】JavaServer Faces (JSF) 和 Java Persistence API (JPA) 分别是构建Java Web应用的用户界面组件框架和持久化标准。结合使用JSF与JPA,能够打造强大的数据驱动Web应用。首先,通过定义实体类(如`User`)和配置`persistence.xml`来设置JPA环境。然后,在JSF中利用Managed Bean(如`UserBean`)管理业务逻辑,通过`EntityManager`执行数据持久化操作。
63 0