经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Linux/Shell » 查看文章
ngix安装与使用
来源:cnblogs  作者:Codorld  时间:2023/3/14 11:02:25  对本文有异议
  1. 主要是nginx的安装使用, 至于原理
  2. 1. 安装nginx(以及两个tomcat)
  3. 2. 使用nginx(测试负载均衡)
  4. 想要搭建的测试环境,
  5. 1.两个tomcat, 端口分别是808090(因为之前安装过一次端口为80tomcat)
  6. 2.nginx端口为8088
  1. nginx安装(linux为例)

    安装目录都在/usr/local下.

    • 安装包获取, 选取Stable version下载

      • 直接下载, (传入虚拟机或服务器) nginx: download

      • 参考上面地址中的版本通过指令 wget http://nginx.org/download/nginx-1.22.1.tar.gz下载

    • 解压安装

      • 解压: tar zxvf nginx-1.22.1.tar.gz

      • 重命名: mv nginx-1.22.1 nginx

      • 进入目录: cd ./ngingx

      • 编译: make

      • 安装: make install

      • 修改配置文件: vim ./conf/nginx.conf

        1. #user nobody;
        2. worker_processes 1;
        3. #error_log logs/error.log;
        4. #error_log logs/error.log notice;
        5. #error_log logs/error.log info;
        6. #pid logs/nginx.pid;
        7. events {
        8. worker_connections 1024;
        9. }
        10. http {
        11. include mime.types;
        12. default_type application/octet-stream;
        13. #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
        14. # '$status $body_bytes_sent "$http_referer" '
        15. # '"$http_user_agent" "$http_x_forwarded_for"';
        16. #access_log logs/access.log main;
        17. sendfile on;
        18. #tcp_nopush on;
        19. #keepalive_timeout 0;
        20. keepalive_timeout 65;
        21. #gzip on;
        22. # 改动1
        23. # 新增一个指令块(请求转发都会转发到这里面), 指向两个tomcat的端口
        24. # weight是权重
        25. upstream myservers {
        26. server 127.0.0.1:80 weight=1;
        27. server 127.0.0.1:8090 weight=1;
        28. }
        29. server {
        30. # 改动2
        31. # 端口修改为nginx的端口
        32. # server_name修改为当前机器的ip或域名
        33. listen 8088;
        34. server_name 127.0.0.1;
        35. #charset koi8-r;
        36. #access_log logs/host.access.log main;
        37. # 改动3 将指令块添加到转发规则中
        38. location / {
        39. proxy_pass http://myservers;
        40. proxy_redirect default;
        41. # root html;
        42. # index index.html index.htm;
        43. }
        44. #error_page 404 /404.html;
        45. # redirect server error pages to the static page /50x.html
        46. #
        47. error_page 500 502 503 504 /50x.html;
        48. location = /50x.html {
        49. root html;
        50. }
        51. # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        52. #
        53. #location ~ \.php$ {
        54. # proxy_pass http://127.0.0.1;
        55. #}
        56. # ... 省略

        改动1: 添加指令块(名字和改动3中的一致即可)
        改动2: 修改间挺端口, 默认80
        改动3: 添加请求转发规则(http://后面的名字和改动1中一致)

  2. tomcat安装

    • 下载tomcat安装包, 建议安装8版本的 Apache Tomcat 8 Software Downloads

    • 解压重命名指令同nginx

    • 第一个端口为80的tomcat目录为tomcat

    • 修改端口: vim ./tomcat/conf/server.conf

      1. <!-- 将8080改成80 -->
      2. <Connector port="80" protocol="HTTP/1.1"
      3. connectionTimeout="20000"
      4. redirectPort="8443" />
    • 启动80的tomcat, ./tomcat/bin/start.sh

    • 第二个端口为8090的tomcat目录为tomcat8090(再次解压一个新的)

    • 修改端口: vim ./tomcat8090/conf/server.conf

      主要修改 Server中的port 和 Connector中的port (如果启动失败可百度启动两个不同端口tomcat自行查找问题或者更改更多参数令其完全不同)

      1. <!-- 指定关机时候的端口 8005改成8006 -->
      2. <Server port="8005" shutdown="SHUTDOWN">
      3. <!-- AJP协议端口: 将8080改成8089 -->
      4. <Connector port="8089" protocol="HTTP/1.1"
      5. connectionTimeout="20000"
      6. redirectPort="8443" />
    • 启动8090的tomcat: ./tomcat8090/bin/start.sh

  3. 创建一个测试项目

    创建一个只有一个接口的demo项目(maven构件为例)

    • pom: 因为使用tomcat运行, 我们打包方式改成war, 添加上打包插件

      1. <?xml version="1.0" encoding="UTF-8"?>
      2. <project xmlns="http://maven.apache.org/POM/4.0.0"
      3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      5. <modelVersion>4.0.0</modelVersion>
      6. <groupId>org.example</groupId>
      7. <artifactId>demo</artifactId>
      8. <version>1.0-SNAPSHOT</version>
      9. <packaging>war</packaging>
      10. <properties>
      11. <maven.compiler.source>8</maven.compiler.source>
      12. <maven.compiler.target>8</maven.compiler.target>
      13. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      14. </properties>
      15. <dependencies>
      16. <!-- web必要依赖 -->
      17. <dependency>
      18. <groupId>org.springframework.boot</groupId>
      19. <artifactId>spring-boot-starter-web</artifactId>
      20. <version>2.7.5</version>
      21. </dependency>
      22. <!-- hutool工具类库 -->
      23. <dependency>
      24. <groupId>cn.hutool</groupId>
      25. <artifactId>hutool-all</artifactId>
      26. <version>5.8.9</version>
      27. </dependency>
      28. </dependencies>
      29. <build>
      30. <!-- 指定打包出来的文件名 -->
      31. <finalName>test-api</finalName>
      32. <plugins>
      33. <plugin>
      34. <groupId>org.springframework.boot</groupId>
      35. <artifactId>spring-boot-maven-plugin</artifactId>
      36. <version>2.5.0</version>
      37. </plugin>
      38. <plugin>
      39. <groupId>org.apache.maven.plugins</groupId>
      40. <artifactId>maven-war-plugin</artifactId>
      41. <version>3.3.1</version>
      42. <configuration>
      43. <!--如果想在没有web.xml文件的情况下构建WAR,请设置为false。-->
      44. <failOnMissingWebXml>false</failOnMissingWebXml>
      45. </configuration>
      46. </plugin>
      47. </plugins>
      48. </build>
      49. </project>
    • yml: 建两个配置文件testprod, 配置不同的参数, 测试负载均衡

      1. # 其实一个配置文件打包时候改参数内容就行, 意思都一样,
      2. # 只是模仿, 分文件还可以通过日志查看哪个配置文件生效了
      3. # application.yml
      4. spring:
      5. profiles:
      6. active: test
      7. # application-test.yml
      8. name: test
      9. # application-prod.yml
      10. name: prod
    • Application: 启动类, 配置自动启动

      1. package org.example;
      2. import org.springframework.boot.SpringApplication;
      3. import org.springframework.boot.autoconfigure.SpringBootApplication;
      4. import org.springframework.boot.builder.SpringApplicationBuilder;
      5. import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
      6. /**
      7. * @author codor
      8. * @date 2023/03/13 14:22
      9. */
      10. @SpringBootApplication
      11. public class TestApplication extends SpringBootServletInitializer {
      12. public static void main(String[] args) {
      13. SpringApplication.run(TestApplication.class, args);
      14. }
      15. @Override
      16. protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
      17. return builder.sources(TestApplication.class);
      18. }
      19. }
    • controller: 写一个接口读配置文件信息

      1. package org.example.controller;
      2. import cn.hutool.core.date.DatePattern;
      3. import cn.hutool.core.date.DateUtil;
      4. import cn.hutool.extra.spring.SpringUtil;
      5. import org.springframework.web.bind.annotation.RequestMapping;
      6. import org.springframework.web.bind.annotation.RestController;
      7. import java.util.Date;
      8. /**
      9. * @author codor
      10. * @date 2023/03/13 14:24
      11. */
      12. @RestController
      13. @RequestMapping("/test")
      14. public class TestController {
      15. @RequestMapping("/time")
      16. public String time() {
      17. return SpringUtil.getProperty("name") +
      18. ": " +
      19. DateUtil.format(new Date(), DatePattern.NORM_DATETIME_MS_PATTERN);
      20. }
      21. }
    • 修改application.yml中激活文件打testprod的两个包修改两个tomcat中的webapps下, 会自动解压部署.

    • 访问各自端口下返回的内容中分别对应着testprod即为正常

  4. 测试nginx

    • 访问http://127.0.0.1:8088/test-api/test/time

    • 反复刷新得到结果中有testprod即为正常, 默认的负载均衡机制应该是轮播.

    • 关闭8090的tomcat: ./tomcat8090/bin/shutdown.sh

    • 再次刷新, 结果只有test的结果为正常.

    • 再次启动8090的tomcat

    • 刷新结果中则恢复之前的情况

      如果tomcat8090中的包关闭后, 刷新会导致一次test一次404


此次记录只是nginx入门简单使用, 作为笔记记录.

原理, 安装, 整合

原文链接:https://www.cnblogs.com/Ddlm2wxm/p/17214187.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号