服务器布署(二):本地Window服务器,各种服务器知识(nginx, apache, tomcat, iis)

0.服务方式和端口

1.服务类启动(V)

服务类启动,可以随着电脑的开机自动运行。

1.修改nginx.exe属性

将启动属性改为非管理员模式 -  然后将nginx.exe的快捷方式放在开机启动项文件夹下


C:\Users\Icy-yun\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup,
或者打开运行,输入shell:startup,回车,也可以快速打开启动文件夹。
image-20220406235344139

2.创建自启服务

在cmd窗口( 管理员模式 ) 输入以下内容,开启对应的服务(Debug为服务名)

sc create nginx-project binPath=D:\server\nginx-1.18.0\nginx.exe start=auto
image-20220406235643373

注意:如果原软件的路径存在非法字符(空格),可以采取快捷方式替代

image-20220407083424972

3.删除服务

要删除创建的服务也很简单,使用以下命令即可:

sc delete nginx-project

打开控制面板—管理工具—服务(或者 开始—运行—services.msc—确认)打开服务管理器,看看你创建的服务已经在里面了,至此,服务运行已创建完成。

4.查看运行的服务

 开始---运行---services.msc---确认
image-20220405202646387

注意:如果实在开启不了,nginx可以考虑下载nginxwinservices.exe辅助运行。

2.关闭占用端口
查看端口
netstat -ano | findstr 8080

关闭占用的端口
taskkill /F /PID 1234
3.服务器的区别

1.唯有nginx和iis才有转发功能,而apache和tomcat不行。因此react项目唯有前两者可以直接运行

2.tomcat是有明显界面的,关闭即为停用,(也可以手动关闭)。

而nginx属于无界面的软件,需要命令行关闭。

wampserver是有明显界面,关闭软件即为退出,

iis是微软自带的服务类启动的服务器,需要点击服务项关闭。

3.所有的服务器软件都可以设置服务类启动——开机即自启

1.Apache(wampserver)

1.向host.添加域名
C:\Windows\System32\drivers\etc\hosts

添加以下内容

127.0.0.1 vue3.gobook.com
2.项目目录

注意:

一类项目:vue打包项目(dist), 普通html, php文件, 都是可以直接运行的

二类项目:react打包项目(build),无法直接打开,(因为build里面还包含一层static静态目录)

结果是:一类项目可以在wampsever中运行,而二类项目不行。

C:\wamp64\www\dist
3.配置Apache
运行图标左键 -->   Apache  -->  httpd.vhosts.conf
image-20220405190442033

模仿www模块的写法,以下是示例

<VirtualHost *:80>
  ServerName vue3.gobook.com
  ServerAlias vue3.gobook.com
  DocumentRoot "${INSTALL_DIR}/www/dist"
  <Directory "${INSTALL_DIR}/www/dist/">
    Options +Indexes +Includes +FollowSymLinks +MultiViews
    AllowOverride All
    Require local
  </Directory>
</VirtualHost>
4.测试项目

运行wampserver的前提下,在浏览器中运行项目。

http://vue3.gobook.com

运行普通php, 或者 html文件

http://localhost:80/hello.php

2.nginx反向代理服务器

1.1 进入操作目录
D:
cd D:\server\nginx-1.18.0

1.2 启动指令 
start nginx  或者  nginx -c conf\nginx.conf 或者  输入命令 nginx.exe 

1.3 关闭指令
  或  nginx -s quit(完整有序的停止nginx) 

1.4 重新加载配置文件指令
nginx -s reload

1.5 检测运行
tasklist /fi "imagename eq nginx.exe"

1.6检查80端口是否被占用的命令是: 
netstat -ano | findstr 0.0.0.0:80 
image-20220406122213518
1.请求转发

我们可以修改nginx的配置文件nginx.conf 达到访问nginx代理服务器时跳转到指定服务器的目的,即通过proxy_pass 配置请求转发地址,即当我们依然输入http://localhost:80 时,请求会跳转到我们配置的服务器

image-20220406122534624

同理,我们可以配置多个目标服务器,当一台服务器出现故障时,nginx能将请求自动转向另一台服务器,例如配置如下

当服务器 localhost:8080 挂掉时,nginxnginx能将请求自动转向服务器 192.168.101.9:8080 。上面还加了一个weight属性,此属性表示各服务器被访问到的权重,weight越高被访问到的几率越高。

image-20220406122934274
2.项目位置

下载nginx, 将文件夹移到D:/server 中。(磁盘下的子文件需要开启文件读写权限)

D:\server\nginx-1.18.0

建立一个www\wwwroot目录, 用于放置项目(建议)

D:\server\nginx-1.18.0\www\wwwroot

将打包后的项目放在wwwroot文件夹下

image-20220406151329634
3.配置nginx

全局配置

直接在conf/nginx.conf 进行配置

image-20220406151541200

将文件内容替换为以下代码

http {
    ...
    ### 有多少个项目,就有多少个server
    server{
        listen   8081; 
        server_name  localhost;    ### 也可以写DNS解析域名
        index index.php index.html index.htm default.php default.htm default.html;
        root D:/server/nginx-1.18.0/www/wwwroot/dist;
        # 当前的root路径是绝对路径下的项目文件夹路径
        # 因为默认就是当前nginx.exe的文件路径开始,也可以写为相对路径,注意斜杠“/”一定是正斜杠
        # root www/wwwroot/dist/
       
        #  注意: 宝塔中的nginx配置是绝对路径
        #  root /www/wwwadmin/mywater-project/2022-4-5-new-test4/build;
         
       location /{
             index index.html;   
             # 本地的index会与root路径拼接, 所以只能写相对路径,(并且更不能设置磁盘路径)
              
             #  注意: 宝塔中的nginx配置是绝对路径
             #  index /www/wwwadmin/mywater-project/2022-4-5-new-test4/build/index.html;
            
             try_files $uri $uri/ /index.html;
       }
    }
 
 }

宝塔官网中的nginx配置

server
{
    listen 80;
    server_name water2.vue.com test3.fastcat.top;
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/wwwadmin/mywater-project/2022-4-5-new-test4/build;
    
    #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
    #error_page 404/404.html;
    #SSL-END
    
    #ERROR-PAGE-START  错误页配置,可以注释、删除或修改
    #error_page 404 /404.html;
    #error_page 502 /502.html;
    #ERROR-PAGE-END
    
    #PHP-INFO-START  PHP引用配置,可以注释或修改
    include enable-php-56.conf;
    #PHP-INFO-END
    
    #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
    include /www/server/panel/vhost/rewrite/water2.vue.com.conf;
    #REWRITE-END
    
    #禁止访问的文件或目录
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }
    
    location /{
      index /www/wwwadmin/mywater-project/2022-4-5-new-test4/build/dist/index.html;
      try_files $uri $uri/ /index.html;
    }
    
    #一键申请SSL证书验证目录相关设置
    location ~ \.well-known{
        allow all;
    }
    
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
        error_log /dev/null;
        access_log /dev/null;
    }
    
    location ~ .*\.(js|css)?$
    {
        expires      12h;
        error_log /dev/null;
        access_log /dev/null; 
    }
    access_log  /www/wwwlogs/water2.vue.com.log;
    error_log  /www/wwwlogs/water2.vue.com.error.log;
}
4.测试项目

如果出现500 状态码,有可能是端口被占用,关闭当前nginx, 清空占用的进程,重启就行!

http://localhost:8081

3.Tomcat 服务器软件(?)

1.项目目录

Tomcat运行的项目,都是放在webapps文件夹中,相当于nginx的www文件夹。

image-20220405113320940 image-20220405133609254

后端项目

E:\apache-tomcat-8.5.46\webapps\QS_AP                   

前端项目

E:\apache-tomcat-8.5.46\webapps\QS_AP_WEB_VIEW     
2.启动项目

在tomcat下的bin目录,运行startup.bat, 就可以开启服务。

E:\apache-tomcat-8.5.46\bin\startup.bat

注意:启动失败前,可以先点击同级下的 shutdown.bat, 关闭相关的进程

3.测试项目

测试后端项目

localhost: 开启的端口 / 项目名称 / 定义的路由规则

localhost:8089/QS_AP/sys/login?nickname=admin&pswd=admin

image-20220405132647695

测试前端项目

前端项目文件夹QS_AP_WEB_VIEW 下建立一个hello.php文件,复制下面内容。

<?
   echo "hello world project";
image-20220405134028427

建立WEB-INF/web.xml

//覆盖所有情况的候选资源:如果 URL 匹配不到任何静态资源,返回同一个 index.html页面
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    version="3.1" metadata-complete="true">
    <display-name>Router for Tomcat</display-name>
    <error-page>
        <error-code>404</error-code>
        <location>/build/index.html</location>
    </error-page>
</web-app>

暂无法测试

4.参考文件
Web.xml常用元素 
<web-app> 
<display-name></display-name>定义了WEB应用的名字 
<description></description> 声明WEB应用的描述信息

<context-param></context-param> context-param元素声明应用范围内的初始化参数。 
<filter></filter> 过滤器元素将一个名字与一个实现javax.servlet.Filter接口的类相关联。 
<filter-mapping></filter-mapping> 一旦命名了一个过滤器,就要利用filter-mapping元素把它与一个或多个servlet或JSP页面相关联。 
<listener></listener>servlet API的版本2.3增加了对事件监听程序的支持,事件监听程序在建立、修改和删除会话或servlet环境时得到通知。 
Listener元素指出事件监听程序类。 
<servlet></servlet> 在向servlet或JSP页面制定初始化参数或定制URL时,必须首先命名servlet或JSP页面。Servlet元素就是用来完成此项任务的。 
<servlet-mapping></servlet-mapping> 服务器一般为servlet提供一个缺省的URL:http://host/webAppPrefix/servlet/ServletName。 
但是,常常会更改这个URL,以便servlet可以访问初始化参数或更容易地处理相对URL。在更改缺省URL时,使用servlet-mapping元素。

<session-config></session-config> 如果某个会话在一定时间内未被访问,服务器可以抛弃它以节省内存。 
可通过使用HttpSession的setMaxInactiveInterval方法明确设置单个会话对象的超时值,或者可利用session-config元素制定缺省超时值。

<mime-mapping></mime-mapping>如果Web应用具有想到特殊的文件,希望能保证给他们分配特定的MIME类型,则mime-mapping元素提供这种保证。 
<welcome-file-list></welcome-file-list> 指示服务器在收到引用一个目录名而不是文件名的URL时,使用哪个文件。 
<error-page></error-page> 在返回特定HTTP状态代码时,或者特定类型的异常被抛出时,能够制定将要显示的页面。 
<taglib></taglib> 对标记库描述符文件(Tag Libraryu Descriptor file)指定别名。此功能使你能够更改TLD文件的位置, 
而不用编辑使用这些文件的JSP页面。 
<resource-env-ref></resource-env-ref>声明与资源相关的一个管理对象。 
<resource-ref></resource-ref> 声明一个资源工厂使用的外部资源。 
<security-constraint></security-constraint> 制定应该保护的URL。它与login-config元素联合使用 
<login-config></login-config> 指定服务器应该怎样给试图访问受保护页面的用户授权。它与sercurity-constraint元素联合使用。 
<security-role></security-role>给出安全角色的一个列表,这些角色将出现在servlet元素内的security-role-ref元素 
的role-name子元素中。分别地声明角色可使高级IDE处理安全信息更为容易。 
<env-entry></env-entry>声明Web应用的环境项。 
<ejb-ref></ejb-ref>声明一个EJB的主目录的引用。 
< ejb-local-ref></ ejb-local-ref>声明一个EJB的本地主目录的应用。 
</web-app>


相应元素配置

1、Web应用图标:指出IDE和GUI工具用来表示Web应用的大图标和小图标 
<icon> 
<small-icon>/p_w_picpaths/app_small.gif</small-icon> 
<large-icon>/p_w_picpaths/app_large.gif</large-icon> 
</icon> 
2、Web 应用名称:提供GUI工具可能会用来标记这个特定的Web应用的一个名称 
<display-name>Tomcat Example</display-name> 
3、Web 应用描述: 给出于此相关的说明性文本 
<disciption>Tomcat Example servlets and JSP pages.</disciption> 
4、上下文参数:声明应用范围内的初始化参数。 
<context-param> 
<param-name>ContextParameter</para-name> 
<param-value>test</param-value> 
<description>It is a test parameter.</description> 
</context-param> 
在servlet里面可以通过getServletContext().getInitParameter("context/param")得到

5、过滤器配置:将一个名字与一个实现javaxs.servlet.Filter接口的类相关联。 
<filter> 
<filter-name>setCharacterEncoding</filter-name> 
<filter-class>com.myTest.setCharacterEncodingFilter</filter-class> 
<init-param> 
<param-name>encoding</param-name> 
<param-value>GB2312</param-value> 
</init-param> 
</filter> 
<filter-mapping> 
<filter-name>setCharacterEncoding</filter-name> 
<url-pattern>/*</url-pattern> 
</filter-mapping> 
6、监听器配置 
<listener> 
<listerner-class>listener.SessionListener</listener-class> 
</listener> 
7、Servlet配置 
基本配置 
<servlet> 
<servlet-name>snoop</servlet-name> 
<servlet-class>SnoopServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
<servlet-name>snoop</servlet-name> 
<url-pattern>/snoop</url-pattern> 
</servlet-mapping> 
高级配置 
<servlet> 
<servlet-name>snoop</servlet-name> 
<servlet-class>SnoopServlet</servlet-class> 
<init-param> 
<param-name>foo</param-name> 
<param-value>bar</param-value> 
</init-param> 
<run-as> 
<description>Security role for anonymous access</description> 
<role-name>tomcat</role-name> 
</run-as> 
</servlet> 
<servlet-mapping> 
<servlet-name>snoop</servlet-name> 
<url-pattern>/snoop</url-pattern> 
</servlet-mapping> 
元素说明 
<servlet></servlet> 用来声明一个servlet的数据,主要有以下子元素: 
<servlet-name></servlet-name> 指定servlet的名称 
<servlet-class></servlet-class> 指定servlet的类名称 
<jsp-file></jsp-file> 指定web站台中的某个JSP网页的完整路径 
<init-param></init-param> 用来定义参数,可有多个init-param。在servlet类中通过getInitParamenter(String name)方法访问初始化参数 
<load-on-startup></load-on-startup>指定当Web应用启动时,装载Servlet的次序。 
当值为正数或零时:Servlet容器先加载数值小的servlet,再依次加载其他数值大的servlet. 
当值为负或未定义:Servlet容器将在Web客户首次访问这个servlet时加载它 
<servlet-mapping></servlet-mapping> 用来定义servlet所对应的URL,包含两个子元素 
<servlet-name></servlet-name> 指定servlet的名称 
<url-pattern></url-pattern> 指定servlet所对应的URL 
8、会话超时配置(单位为分钟) 
<session-config> 
<session-timeout>120</session-timeout> 
</session-config> 
9、MIME类型配置 
<mime-mapping> 
<extension>htm</extension> 
<mime-type>text/html</mime-type> 
</mime-mapping> 
10、指定欢迎文件页配置 
<welcome-file-list> 
<welcome-file>index.jsp</welcome-file> 
<welcome-file>index.html</welcome-file> 
<welcome-file>index.htm</welcome-file> 
</welcome-file-list> 
11、配置错误页面 
一、 通过错误码来配置error-page 
<error-page> 
<error-code>404</error-code> 
<location>/NotFound.jsp</location> 
</error-page> 
上面配置了当系统发生404错误时,跳转到错误处理页面NotFound.jsp。 
二、通过异常的类型配置error-page 
<error-page> 
<exception-type>java.lang.NullException</exception-type> 
<location>/error.jsp</location> 
</error-page> 
上面配置了当系统发生java.lang.NullException(即空指针异常)时,跳转到错误处理页面error.jsp 
12、TLD配置 
<taglib> 
<taglib-uri>http://jakarta.apache.org/tomcat/debug-taglib</taglib-uri> 
<taglib-location>/WEB-INF/jsp/debug-taglib.tld</taglib-location> 
</taglib> 
如果MyEclipse一直在报错,应该把<taglib> 放到 <jsp-config>中 
<jsp-config> 
<taglib> 
<taglib-uri>http://jakarta.apache.org/tomcat/debug-taglib</taglib-uri> 
<taglib-location>/WEB-INF/pager-taglib.tld</taglib-location> 
</taglib> 
</jsp-config> 
13、资源管理对象配置 
<resource-env-ref> 
<resource-env-ref-name>jms/StockQueue</resource-env-ref-name> 
</resource-env-ref> 
14、资源工厂配置 
<resource-ref> 
<res-ref-name>mail/Session</res-ref-name> 
<res-type>javax.mail.Session</res-type> 
<res-auth>Container</res-auth> 
</resource-ref> 
配置数据库连接池就可在此配置: 
<resource-ref> 
<description>JNDI JDBC DataSource of shop</description> 
<res-ref-name>jdbc/sample_db</res-ref-name> 
<res-type>javax.sql.DataSource</res-type> 
<res-auth>Container</res-auth> 
</resource-ref> 
15、安全限制配置 
<security-constraint> 
<display-name>Example Security Constraint</display-name> 
<web-resource-collection> 
<web-resource-name>Protected Area</web-resource-name> 
<url-pattern>/jsp/security/protected/*</url-pattern> 
<http-method>DELETE</http-method> 
<http-method>GET</http-method> 
<http-method>POST</http-method> 
<http-method>PUT</http-method> 
</web-resource-collection> 
<auth-constraint> 
<role-name>tomcat</role-name> 
<role-name>role1</role-name> 
</auth-constraint> 
</security-constraint> 
16、登陆验证配置 
<login-config> 
<auth-method>FORM</auth-method> 
<realm-name>Example-Based Authentiation Area</realm-name> 
<form-login-config> 
<form-login-page>/jsp/security/protected/login.jsp</form-login-page> 
<form-error-page>/jsp/security/protected/error.jsp</form-error-page> 
</form-login-config> 
</login-config> 
17、安全角色:security-role元素给出安全角色的一个列表,这些角色将出现在servlet元素内的security-role-ref元素的role-name子元素中。 
分别地声明角色可使高级IDE处理安全信息更为容易。 
<security-role> 
<role-name>tomcat</role-name> 
</security-role> 
18、Web环境参数:env-entry元素声明Web应用的环境项 
<env-entry> 
<env-entry-name>minExemptions</env-entry-name> 
<env-entry-value>1</env-entry-value> 
<env-entry-type>java.lang.Integer</env-entry-type> 
</env-entry> 
19、EJB 声明 
<ejb-ref> 
<description>Example EJB reference</decription> 
<ejb-ref-name>ejb/Account</ejb-ref-name> 
<ejb-ref-type>Entity</ejb-ref-type> 
<home>com.mycompany.mypackage.AccountHome</home> 
<remote>com.mycompany.mypackage.Account</remote> 
</ejb-ref> 
20、本地EJB声明 
<ejb-local-ref> 
<description>Example Loacal EJB reference</decription> 
<ejb-ref-name>ejb/ProcessOrder</ejb-ref-name> 
<ejb-ref-type>Session</ejb-ref-type> 
<local-home>com.mycompany.mypackage.ProcessOrderHome</local-home> 
<local>com.mycompany.mypackage.ProcessOrder</local> 
</ejb-local-ref> 
21、配置DWR 
<servlet> 
<servlet-name>dwr-invoker</servlet-name> 
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
<servlet-name>dwr-invoker</servlet-name> 
<url-pattern>/dwr/*</url-pattern> 
</servlet-mapping> 
22、配置Struts 
<display-name>Struts Blank Application</display-name> 
<servlet> 
<servlet-name>action</servlet-name> 
<servlet-class> 
org.apache.struts.action.ActionServlet 
</servlet-class> 
<init-param> 
<param-name>detail</param-name> 
<param-value>2</param-value> 
</init-param> 
<init-param> 
<param-name>debug</param-name> 
<param-value>2</param-value> 
</init-param> 
<init-param> 
<param-name>config</param-name> 
<param-value>/WEB-INF/struts-config.xml</param-value> 
</init-param> 
<init-param> 
<param-name>application</param-name> 
<param-value>ApplicationResources</param-value> 
</init-param> 
<load-on-startup>2</load-on-startup> 
</servlet> 
<servlet-mapping> 
<servlet-name>action</servlet-name> 
<url-pattern>*.do</url-pattern> 
</servlet-mapping> 
<welcome-file-list> 
<welcome-file>index.jsp</welcome-file> 
</welcome-file-list>

<!-- Struts Tag Library Descriptors --> 
<taglib> 
<taglib-uri>struts-bean</taglib-uri> 
<taglib-location>/WEB-INF/tld/struts-bean.tld</taglib-location> 
</taglib> 
<taglib> 
<taglib-uri>struts-html</taglib-uri> 
<taglib-location>/WEB-INF/tld/struts-html.tld</taglib-location> 
</taglib> 
<taglib> 
<taglib-uri>struts-nested</taglib-uri> 
<taglib-location>/WEB-INF/tld/struts-nested.tld</taglib-location> 
</taglib> 
<taglib> 
<taglib-uri>struts-logic</taglib-uri> 
<taglib-location>/WEB-INF/tld/struts-logic.tld</taglib-location> 
</taglib> 
<taglib> 
<taglib-uri>struts-tiles</taglib-uri> 
<taglib-location>/WEB-INF/tld/struts-tiles.tld</taglib-location> 
</taglib> 
23、配置Spring(基本上都是在Struts中配置的)

<!-- 指定spring配置文件位置 --> 
<context-param> 
<param-name>contextConfigLocation</param-name> 
<param-value> 
<!--加载多个spring配置文件 --> 
/WEB-INF/applicationContext.xml, /WEB-INF/action-servlet.xml 
</param-value> 
</context-param>

<!-- 定义SPRING监听器,加载spring -->

<listener> 
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener>

<listener> 
<listener-class> 
org.springframework.web.context.request.RequestContextListener 
</listener-class> 
</listener>
-----------------------------------
tomcat中web.xml各配置项的意义 

4.IIS服务器软件(?)

1.启动项目
网站布局的要点:html文件引入其它html文件的方法
   1.打开iis报务 
     计算机  -- 控制面板 -- 程序 -- 启动或关闭windows功能-- 勾选Internet Information Services -- 确定
  2.创建iis端口 
     (1.计算机  --控制面板-->管理工具-->Internet 信息服务(IIS)管理器
       (2. 右击左边的网站-- 右键 -- 添加网站 
       (3. 添加网站名称 -- 物理地址(文件所在的文件夹) -- 没有使用过的端口 -- 返回点击默认文档 -- 点击右侧的添加
image-20220405202834964 image-20220405203007026 image-20220405203131003
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值