Linux企业运维(二)nginx

文章目录

  • 写在之前
  • 一、nginx简介
  • 二、nginx的安装
  • 三、利用nginx实现负载均衡
  • 四、nginx的平滑升级
  • 五、nginx限流
  • 六、nginx配置管理

写在之前

高可用:高可用(High availability,缩写为 HA),是指系统无中断地执行其功能的能力,代表系统的可用性程度。

一、nginx简介

Nginx 是一个很强大的高性能Web和反向代理服务,它具有很多非常优越的特性;
Nginx作为负载均衡服务:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务对外进行服务。
支持 SSL 和 TLSSNI。
Nginx 是一个安装非常的简单、配置文件非常简洁(还能够支持perl语法)、Bug非常少的服务。Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级。

二、nginx的安装

首先进行解压

tar zxf nginx-1.21.1.tar.gz

安装依赖性

yum install -y gcc pcre-devel  openssl-devel

对源码进行编译,在这一部分,我们可以根据自己的需求进行编译

 ./configure --with-http_ssl_module --with-http_stub_status_module --prefix=/usr/local/nginx

然后我们进行make、make install 进行安装
源码编译三部曲:进行完解压之后,condigure;make;make install
这些进行完之后,我们的nginx已经安装成功,nginx的开启非常简单,直接nginx命令就可以开启,开启之后,我们可以通过查看80端口来检查是否开启,也可以ps进行查看进程

[root@server1 conf]#  netstat -antlp | grep :80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      10134/nginx: master 

 10134 ?        Ss     0:00 nginx: master process nginx
 10170 ?        R      0:00 [kworker/1:1]
 10177 ?        S      0:00 nginx: worker process
 10178 ?        S      0:00 nginx: worker process

以上两种方式都可以看到nginx已经开启
我们可以对其做一个软连接,方便我们使用

 ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/

三、利用nginx实现负载均衡

打开nginx的配置文件,添加用户、用户组
首先添加nginx用户

useradd -M -d /usr/local/nginx/ -s /sbin/nologin nginx
user nginx nginx;
worker_processes  2;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

我们可以将cpu与进程进行捆绑,也就是一个cpu对应一个进程,01 10 代表一个cpu开启时另一个关闭,以此类推,多个cpu也可以用这种方式来进行捆绑

user nginx nginx;
worker_processes  2;
worker_cpu_affinity 01 10;

我们在nginx.conf中添加负载均衡,可以给某台真实主机添加权重,比如给10主机配置权重为2,那么在需求分配的时候,10主机就会是3主机二倍的响应

http {
        upstream westos {
        server 192.168.110.10:8000 weight=2;
        server 192.168.110.3:80;
        }
    include       mime.types;
    default_type  application/octet-stream;

我们再给我们想要设置负载均衡的网站代理到我们设置的负载均衡上,这个时候我们再次访问这个网址,就会被认为访问代理的负载均衡器而按照权重分配给真实主机(首先要添加解析)

 server {
                listen 80;
                server_name www.westos.org;
                location / {
                        proxy_pass http://westos;
                }
        }

效果如下,1.1的响应是1.3的两倍,说明我们利用nginx实现了负载均衡

[root@server5 ~]# for i in {1..10}; do curl www.westos.org;done
server1.3
server1.1
server1.1
server1.3
server1.3
server1.1
server1.1
server1.3
server1.1
server1.1

如果我们此时停掉真实主机中的一台,再次测试会发现调度器自动将所有的需求分配给正常运行的真实主机,在这一点上nginx要更加合理

[root@server1 ~]# curl 192.168.110.3
server1.3

[root@server5 ~]# for i in {1..10}; do curl www.westos.org;done
server1.3
server1.3
server1.3
server1.3
server1.3
server1.3
server1.3
server1.3
server1.3
server1.3

那如果所有的真实主机都down了,再次测试就会报错、

[root@server5 ~]# curl www.westos.org

502 Bad Gateway<<span class="token operator">/</span>title><<span class="token operator">/</span>head>
<body>
<center><h1>502 Bad Gateway<<span class="token operator">/</span>h1><<span class="token operator">/</span>center>
<hr><center>nginx/1<span class="token punctuation">.</span>21<span class="token punctuation">.</span>1<<span class="token operator">/</span>center>
<<span class="token operator">/</span>body>
<<span class="token operator">/</span>html>

</code></pre> 
  <p>这个时候我们就得添加备机,以防止出现这种情况,我们可以将本机设置为备机,那么在真实主机全部down的时候,再次测试,就不会出现502报错</p> 
  <pre><code class="prism language-powershell">http <span class="token punctuation">{</span>
        upstream westos <span class="token punctuation">{</span>
        server 192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>110<span class="token punctuation">.</span>10:8000 weight=2<span class="token punctuation">;</span>
        server 192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>110<span class="token punctuation">.</span>3:80<span class="token punctuation">;</span>
        server 127<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>1:80 backup<span class="token punctuation">;</span>
        <span class="token punctuation">}</span>

</code></pre> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@server5 ~]</span><span class="token comment"># curl www.westos.org</span>
<<span class="token operator">!</span>DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!<<span class="token operator">/</span>title>
<style>
    body <span class="token punctuation">{</span>
        width: 35em<span class="token punctuation">;</span>
        margin: 0 auto<span class="token punctuation">;</span>
        font-family: Tahoma<span class="token punctuation">,</span> Verdana<span class="token punctuation">,</span> Arial<span class="token punctuation">,</span> sans-serif<span class="token punctuation">;</span>
    <span class="token punctuation">}</span>
<<span class="token operator">/</span>style>
<<span class="token operator">/</span>head>
<body>
<h1>Welcome to nginx!<<span class="token operator">/</span>h1>
<p><span class="token keyword">If</span> you see this page<span class="token punctuation">,</span> the nginx web server is successfully installed and
working<span class="token punctuation">.</span> Further configuration is required<span class="token punctuation">.</span><<span class="token operator">/</span>p>

<p><span class="token keyword">For</span> online documentation and support please refer to
<a href=<span class="token string">"http://nginx.org/"</span>>nginx<span class="token punctuation">.</span>org<<span class="token operator">/</span>a><span class="token punctuation">.</span><br/>
Commercial support is available at
<a href=<span class="token string">"http://nginx.com/"</span>>nginx<span class="token punctuation">.</span>com<<span class="token operator">/</span>a><span class="token punctuation">.</span><<span class="token operator">/</span>p>

<p><em>Thank you <span class="token keyword">for</span> <span class="token keyword">using</span> nginx<span class="token punctuation">.</span><<span class="token operator">/</span>em><<span class="token operator">/</span>p>
<<span class="token operator">/</span>body>
<<span class="token operator">/</span>html>

</code></pre> 
  <p>如果我们需要用到sticky算法,就需要进行升级,这个时候再次进行源码编译就不需要make install,因为已经不是第一次安装,这个算法是会将来自同一个地址的请求全部分配给同一台主机,以满足有些需求;</p> 
  <h1>四、nginx的平滑升级</h1> 
  <p>有些时候我们使用的nginx版本需要更新,但是我们又因为某些原因不能关闭nginx,所以就需要进行平滑升级,在开启nginx的同时,对其进行升级<br> 首先tar新的版本</p> 
  <pre><code class="prism language-powershell">258  tar zxf nginx-1<span class="token punctuation">.</span>21<span class="token punctuation">.</span>6<span class="token punctuation">.</span>tar<span class="token punctuation">.</span>gz 
  259  cd nginx-1<span class="token punctuation">.</span>21<span class="token punctuation">.</span>6/

</code></pre> 
  <p>进入目录之后进行源码编译,但是不要进行make install ,因为我们是进行升级,升级完之后,发现现在的nginx只有900多k,比之前的5.9M大大减小</p> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@server1 nginx-1.21.6]</span><span class="token comment"># ls</span>
auto  CHANGES  CHANGES<span class="token punctuation">.</span>ru  conf  configure  contrib  html  LICENSE  Makefile  man  objs  README  src
<span class="token namespace">[root@server1 nginx-1.21.6]</span><span class="token comment"># cd objs/</span>
<span class="token namespace">[root@server1 objs]</span><span class="token comment"># du -h nginx</span>
940K	nginx

</code></pre> 
  <p>但是此时我们采用du -h查看nginx版本的时候发现还是原来的版本,并没有进行更新,所以这个时候我们要继续进行以下操作,首先我们以防万一,对原来的二进制nginx进行复制</p> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@server1 sbin]</span><span class="token comment"># cp nginx nginx.old</span>
<span class="token namespace">[root@server1 sbin]</span><span class="token comment"># ls</span>
nginx  nginx<span class="token punctuation">.</span>old

</code></pre> 
  <p>然后对原来的nginx进行覆盖,但是在覆盖的过程中会发现显示在忙,这个时候我们可以采取-f强制覆盖,加\的原因是忽略隐藏,直接执行现在的命令</p> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@server1 ~]</span><span class="token comment"># cd nginx-1.21.6/</span>
<span class="token namespace">[root@server1 nginx-1.21.6]</span><span class="token comment"># ls</span>
auto  CHANGES  CHANGES<span class="token punctuation">.</span>ru  conf  configure  contrib  html  LICENSE  Makefile  man  objs  README  src
<span class="token namespace">[root@server1 nginx-1.21.6]</span><span class="token comment"># cd objs/</span>
<span class="token namespace">[root@server1 objs]</span><span class="token comment"># cp nginx /usr/local/nginx/sbin/nginx</span>
<span class="token function">cp</span>: overwrite ‘<span class="token operator">/</span>usr/local/nginx/sbin/nginx’? yes
<span class="token function">cp</span>: cannot create regular file ‘<span class="token operator">/</span>usr/local/nginx/sbin/nginx’: Text file busy

</code></pre> 
  <p>但是我们在覆盖之后再次查看依旧是原来的版本,这是因为这些都存在于内存中,内存中并未改变,所以我们需要使用kill -USR2 加进程号来开启新版本进程,并且用kill -WINCH 加进程号终止原来的worker进程</p> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@server1 objs]</span><span class="token comment"># \cp -f nginx /usr/local/nginx/sbin/nginx</span>
<span class="token namespace">[root@server1 objs]</span><span class="token comment"># curl -I localhost</span>
HTTP/1<span class="token punctuation">.</span>1 200 OK
Server: nginx/1<span class="token punctuation">.</span>21<span class="token punctuation">.</span>1
Date: Thu<span class="token punctuation">,</span> 29 Sep 2022 02:00:30 GMT
Content-<span class="token function">Type</span>: text/html
Content-Length: 612
Last-Modified: Fri<span class="token punctuation">,</span> 23 Sep 2022 23:13:57 GMT
Connection: keep-alive
ETag: <span class="token string">"632e3db5-264"</span>
Accept-Ranges: bytes


</code></pre> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@server1 sbin]</span><span class="token comment"># ps ax | grep nginx</span>
 18566 ?        Ss     0:00 nginx: master <span class="token keyword">process</span> <span class="token operator">/</span>usr/local/nginx/sbin/nginx
 18567 ?        S      0:00 nginx: worker <span class="token keyword">process</span>
 18568 ?        S      0:00 nginx: worker <span class="token keyword">process</span>
 22493 pts/0    R+     0:00 grep <span class="token operator">--</span>color=auto nginx
<span class="token namespace">[root@server1 sbin]</span><span class="token comment"># kill -USR2 18566</span>
<span class="token namespace">[root@server1 sbin]</span><span class="token comment"># ps ax | grep nginx</span>
 18566 ?        Ss     0:00 nginx: master <span class="token keyword">process</span> <span class="token operator">/</span>usr/local/nginx/sbin/nginx
 18567 ?        S      0:00 nginx: worker <span class="token keyword">process</span>
 18568 ?        S      0:00 nginx: worker <span class="token keyword">process</span>
 22495 ?        S      0:00 nginx: master <span class="token keyword">process</span> <span class="token operator">/</span>usr/local/nginx/sbin/nginx
 22496 ?        S      0:00 nginx: worker <span class="token keyword">process</span>
 22497 ?        S      0:00 nginx: worker <span class="token keyword">process</span>
 22499 pts/0    R+     0:00 grep <span class="token operator">--</span>color=auto nginx
<span class="token namespace">[root@server1 sbin]</span><span class="token comment"># kill -WINCH 18566</span>
<span class="token namespace">[root@server1 sbin]</span><span class="token comment"># ps ax | grep nginx</span>
 18566 ?        Ss     0:00 nginx: master <span class="token keyword">process</span> <span class="token operator">/</span>usr/local/nginx/sbin/nginx
 22495 ?        S      0:00 nginx: master <span class="token keyword">process</span> <span class="token operator">/</span>usr/local/nginx/sbin/nginx
 22496 ?        S      0:00 nginx: worker <span class="token keyword">process</span>
 22497 ?        S      0:00 nginx: worker <span class="token keyword">process</span>
 22503 pts/0    S+     0:00 grep <span class="token operator">--</span>color=auto nginx
<span class="token namespace">[root@server1 sbin]</span><span class="token comment"># ps ax | grep nginx</span>
 18566 ?        Ss     0:00 nginx: master <span class="token keyword">process</span> <span class="token operator">/</span>usr/local/nginx/sbin/nginx
 22495 ?        S      0:00 nginx: master <span class="token keyword">process</span> <span class="token operator">/</span>usr/local/nginx/sbin/nginx
 22496 ?        S      0:00 nginx: worker <span class="token keyword">process</span>
 22497 ?        S      0:00 nginx: worker <span class="token keyword">process</span>
 22505 pts/0    S+     0:00 grep <span class="token operator">--</span>color=auto nginx

</code></pre> 
  <p>这个时候可以看见老进程中的worker进程已经全部终止,这个时候再去查看版本,就会发现已经更改</p> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@server1 sbin]</span><span class="token comment"># curl -I localhost</span>
HTTP/1<span class="token punctuation">.</span>1 200 OK
Server: nginx/1<span class="token punctuation">.</span>21<span class="token punctuation">.</span>6
Date: Thu<span class="token punctuation">,</span> 29 Sep 2022 02:05:27 GMT
Content-<span class="token function">Type</span>: text/html
Content-Length: 612
Last-Modified: Fri<span class="token punctuation">,</span> 23 Sep 2022 23:13:57 GMT
Connection: keep-alive
ETag: <span class="token string">"632e3db5-264"</span>
Accept-Ranges: bytes

</code></pre> 
  <p>如果在我们升级之后又需要用到老版本,那么就要进行回滚;我们首先将原来复制的nginx.old复制给nginx然后用kill -HUP唤醒原进程,并且采用kill -WINCH 来回收新进程中的worker进程,这个时候就完成了版本回滚</p> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@server1 sbin]</span><span class="token comment"># \cp -f nginx.old nginx</span>
<span class="token namespace">[root@server1 sbin]</span><span class="token comment"># kill -HUP 18566</span>
<span class="token namespace">[root@server1 sbin]</span><span class="token comment"># curl -I localhost</span>
HTTP/1<span class="token punctuation">.</span>1 200 OK
Server: nginx/1<span class="token punctuation">.</span>21<span class="token punctuation">.</span>6
Date: Thu<span class="token punctuation">,</span> 29 Sep 2022 10:31:13 GMT
Content-<span class="token function">Type</span>: text/html
Content-Length: 612
Last-Modified: Fri<span class="token punctuation">,</span> 23 Sep 2022 23:13:57 GMT
Connection: keep-alive
ETag: <span class="token string">"632e3db5-264"</span>
Accept-Ranges: bytes

<span class="token namespace">[root@server1 sbin]</span><span class="token comment"># ps ax | grep nginx</span>
 18566 ?        Ss     0:00 nginx: master <span class="token keyword">process</span> <span class="token operator">/</span>usr/local/nginx/sbin/nginx
 22495 ?        S      0:00 nginx: master <span class="token keyword">process</span> <span class="token operator">/</span>usr/local/nginx/sbin/nginx
 22496 ?        S      0:00 nginx: worker <span class="token keyword">process</span>
 22497 ?        S      0:00 nginx: worker <span class="token keyword">process</span>
 22710 ?        S      0:00 nginx: worker <span class="token keyword">process</span>
 22711 ?        S      0:00 nginx: worker <span class="token keyword">process</span>
 22715 pts/0    R+     0:00 grep <span class="token operator">--</span>color=auto nginx
<span class="token namespace">[root@server1 sbin]</span><span class="token comment"># kill -WINCH 22495</span>
<span class="token namespace">[root@server1 sbin]</span><span class="token comment"># curl -I localhost</span>
HTTP/1<span class="token punctuation">.</span>1 200 OK
Server: nginx/1<span class="token punctuation">.</span>21<span class="token punctuation">.</span>1
Date: Thu<span class="token punctuation">,</span> 29 Sep 2022 10:31:43 GMT
Content-<span class="token function">Type</span>: text/html
Content-Length: 612
Last-Modified: Fri<span class="token punctuation">,</span> 23 Sep 2022 23:13:57 GMT
Connection: keep-alive
ETag: <span class="token string">"632e3db5-264"</span>
Accept-Ranges: bytes

</code></pre> 
  <h1>五、nginx限流</h1> 
  <p>我们有的时候需要nginx帮助我们对文件传输或者下载进行限流,这个时候我们可以采用以下方法来实现</p> 
  <p>比如我们在nginx.conf中添加以下内容,控制download中并发量为1</p> 
  <pre><code class="prism language-powershell"> limit_conn_zone <span class="token variable">$binary_remote_addr</span> zone=addr:10m<span class="token punctuation">;</span>
</code></pre> 
  <pre><code class="prism language-powershell">  location <span class="token operator">/</span>download/ <span class="token punctuation">{</span>
                limit_conn addr 1<span class="token punctuation">;</span>
        <span class="token punctuation">}</span>

</code></pre> 
  <p>在这时进行压力测试,-c10,结果会显示有部分错误</p> 
  <pre><code class="prism language-powershell"> ab <span class="token operator">-</span>c10 <span class="token operator">-</span>n 10 http:<span class="token operator">/</span><span class="token operator">/</span>192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>110<span class="token punctuation">.</span>2/download/R8<span class="token punctuation">.</span>jpg
</code></pre> 
  <pre><code class="prism language-powershell">Concurrency Level:      10
Time taken <span class="token keyword">for</span> tests:   0<span class="token punctuation">.</span>007 seconds
Complete requests:      10
Failed requests:        4

</code></pre> 
  <p>如果我们将并发改为1,就不会出现错误</p> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@server5 sbin]</span><span class="token comment"># ab -c1 -n 10 http://192.168.110.2/download/R8.jpg</span>
</code></pre> 
  <p>刚刚我们限制了并发连接数,现在我们可以限制请求速率,例如限制每秒一个</p> 
  <pre><code class="prism language-powershell">
        limit_conn_zone <span class="token variable">$binary_remote_addr</span> zone=addr:10m<span class="token punctuation">;</span>
        limit_req_zone <span class="token variable">$binary_remote_addr</span> zone=one:10m rate=1r/s<span class="token punctuation">;</span>

    server <span class="token punctuation">{</span>
        listen       80<span class="token punctuation">;</span>
        server_name  localhost<span class="token punctuation">;</span>

        <span class="token comment">#charset koi8-r;</span>

        <span class="token comment">#access_log  logs/host.access.log  main;</span>

        location <span class="token operator">/</span> <span class="token punctuation">{</span>
            root   html<span class="token punctuation">;</span>
            index  index<span class="token punctuation">.</span>html index<span class="token punctuation">.</span>htm<span class="token punctuation">;</span>
        <span class="token punctuation">}</span>

        location <span class="token operator">/</span>download/ <span class="token punctuation">{</span>
                limit_conn addr 1<span class="token punctuation">;</span>
                limit_req zone=one<span class="token punctuation">;</span>
        <span class="token punctuation">}</span>

</code></pre> 
  <p>进行压测会发现报错,因为我们要处理10个请求,但是限制了每秒一个而且并发为1</p> 
  <pre><code class="prism language-powershell">Time taken <span class="token keyword">for</span> tests:   0<span class="token punctuation">.</span>010 seconds
Complete requests:      10
Failed requests:        5

</code></pre> 
  <p>我们再添加一个限制,就是让超出速率限制的请求进行排队,而burst的值就是排队的最大数量</p> 
  <pre><code class="prism language-powershell">  location <span class="token operator">/</span>download/ <span class="token punctuation">{</span>
                limit_conn addr 1<span class="token punctuation">;</span>
                limit_req zone=one burst=5<span class="token punctuation">;</span>
        <span class="token punctuation">}</span>


</code></pre> 
  <pre><code class="prism language-powershell">Concurrency Level:      1
Time taken <span class="token keyword">for</span> tests:   5<span class="token punctuation">.</span>017 seconds

</code></pre> 
  <p>也可以进行限制带宽</p> 
  <pre><code class="prism language-powershell">location <span class="token operator">/</span>download/ <span class="token punctuation">{</span>
                limit_conn addr 1<span class="token punctuation">;</span>
                limit_req zone=one burst=5<span class="token punctuation">;</span>
                limit_rate 50k<span class="token punctuation">;</span>
        <span class="token punctuation">}</span>

</code></pre> 
  <p>可以看见,限制带宽之后,处理十张照片花费的时间大大增多,我们可以根据需求来对带宽进行限制</p> 
  <pre><code class="prism language-powershell">Concurrency Level:      1
Time taken <span class="token keyword">for</span> tests:   60<span class="token punctuation">.</span>615 seconds
Complete requests:      10

</code></pre> 
  <h1>六、nginx配置管理</h1> 
  <p>我们如果想要下载比较直观方便,可以进行以下设置</p> 
  <pre><code class="prism language-powershell"> location <span class="token operator">/</span>download/ <span class="token punctuation">{</span>
                limit_conn addr 1<span class="token punctuation">;</span>
                limit_req zone=one burst=5<span class="token punctuation">;</span>
                limit_rate 50k<span class="token punctuation">;</span>
                autoindex on<span class="token punctuation">;</span>
        <span class="token punctuation">}</span>


</code></pre> 
  <p>可以看到,之前在访问的时候会直接出现图片,而现在会出现一个目录供我们选择,更加直观方便<br> <a href="http://img.e-com-net.com/image/info8/6e75bf9e0e93432eaedd30fb5e771f1f.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/6e75bf9e0e93432eaedd30fb5e771f1f.jpg" alt="Linux企业运维(二)nginx_第1张图片" width="650" height="286" style="border:1px solid black;"></a><br> <strong>日志轮循</strong><br> 写一个脚本,让日志做一个截断</p> 
  <pre><code class="prism language-powershell"><span class="token comment">#! /bin/bash</span>
cd <span class="token operator">/</span>usr/local/nginx/logs && <span class="token function">mv</span> access<span class="token punctuation">.</span>log access_$<span class="token punctuation">(</span>date <span class="token operator">+</span><span class="token operator">%</span>F <span class="token operator">-</span>d <span class="token operator">-</span>1day<span class="token punctuation">)</span><span class="token punctuation">.</span>log
<span class="token function">kill</span> <span class="token operator">-</span>USR1 `<span class="token function">cat</span> <span class="token operator">/</span>usr/local/nginx/logs/nginx<span class="token punctuation">.</span>pid`

</code></pre> 
  <p>crontab -e添加定时任务</p> 
  <pre><code class="prism language-powershell">00 00 <span class="token operator">*</span> <span class="token operator">*</span> <span class="token operator">*</span> <span class="token operator">/</span>opt/nginxlog<span class="token punctuation">.</span>sh
</code></pre> 
  <p>进行测试后会发现,前一天的日志已经被截断,新的日志都放在了今天的新access.log下</p> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@server1 logs]</span><span class="token comment"># ll</span>
total 72
<span class="token operator">-</span>rw-r-<span class="token operator">-</span>r-<span class="token operator">-</span> 1 root  root 42240 Sep 30 09:39 access_2022-09-29<span class="token punctuation">.</span>log
<span class="token operator">-</span>rw-r-<span class="token operator">-</span>r-<span class="token operator">-</span> 1 nginx root     0 Sep 30 10:19 access<span class="token punctuation">.</span>log
<span class="token operator">-</span>rw-r-<span class="token operator">-</span>r-<span class="token operator">-</span> 1 nginx root 24095 Sep 30 09:38 error<span class="token punctuation">.</span>log
<span class="token operator">-</span>rw-r-<span class="token operator">-</span>r-<span class="token operator">-</span> 1 root  root     6 Sep 30 00:58 nginx<span class="token punctuation">.</span>pid
<span class="token namespace">[root@server1 logs]</span><span class="token comment"># ll</span>
total 84
<span class="token operator">-</span>rw-r-<span class="token operator">-</span>r-<span class="token operator">-</span> 1 root  root 42240 Sep 30 09:39 access_2022-09-29<span class="token punctuation">.</span>log
<span class="token operator">-</span>rw-r-<span class="token operator">-</span>r-<span class="token operator">-</span> 1 nginx root 10500 Sep 30 10:20 access<span class="token punctuation">.</span>log
<span class="token operator">-</span>rw-r-<span class="token operator">-</span>r-<span class="token operator">-</span> 1 nginx root 24095 Sep 30 09:38 error<span class="token punctuation">.</span>log
<span class="token operator">-</span>rw-r-<span class="token operator">-</span>r-<span class="token operator">-</span> 1 root  root     6 Sep 30 00:58 nginx<span class="token punctuation">.</span>pid

</code></pre> 
  <p>对于一些没有必要写入日志的内容我们可以=采用access_log off;来关闭日志写入<br> 也可以对可见主机进行限制,比如允许本机访问而不允许其他主机访问<br> <a href="http://img.e-com-net.com/image/info8/cddeb775022b4ee0a5411fba30df1c2d.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/cddeb775022b4ee0a5411fba30df1c2d.jpg" alt="在这里插入图片描述" width="209" height="81"></a><br> <strong>nginx重定向</strong><br> 对于没有开放的域名,我们可以对其设置重定向</p> 
  <pre><code class="prism language-powershell">
    server <span class="token punctuation">{</span>
        listen       80<span class="token punctuation">;</span>
        server_name  localhost<span class="token punctuation">;</span>
        rewrite ^<span class="token punctuation">(</span><span class="token punctuation">.</span><span class="token operator">*</span><span class="token punctuation">)</span> http:<span class="token operator">/</span><span class="token operator">/</span>www<span class="token punctuation">.</span>westos<span class="token punctuation">.</span>org permanent<span class="token punctuation">;</span>

</code></pre> 
  <p>也可以设置443重定向</p> 
  <pre><code class="prism language-powershell">  server <span class="token punctuation">{</span>
        listen       443 ssl<span class="token punctuation">;</span>
        server_name  www<span class="token punctuation">.</span>westos<span class="token punctuation">.</span>org<span class="token punctuation">;</span>

        ssl_certificate      cert<span class="token punctuation">.</span>pem<span class="token punctuation">;</span>
        ssl_certificate_key  cert<span class="token punctuation">.</span>pem<span class="token punctuation">;</span>

        ssl_session_cache    shared:SSL:1m<span class="token punctuation">;</span>
        ssl_session_timeout  5m<span class="token punctuation">;</span>

        ssl_ciphers  HIGH:<span class="token operator">!</span>aNULL:<span class="token operator">!</span>MD5<span class="token punctuation">;</span>
        ssl_prefer_server_ciphers  on<span class="token punctuation">;</span>

        location <span class="token operator">/</span> <span class="token punctuation">{</span>
            root   html<span class="token punctuation">;</span>
            index  index<span class="token punctuation">.</span>html index<span class="token punctuation">.</span>htm<span class="token punctuation">;</span>
        <span class="token punctuation">}</span>
    <span class="token punctuation">}</span>
        server <span class="token punctuation">{</span>
                listen 80<span class="token punctuation">;</span>
                server_name www<span class="token punctuation">.</span>westos<span class="token punctuation">.</span>org<span class="token punctuation">;</span>
                rewrite ^<span class="token operator">/</span><span class="token punctuation">(</span><span class="token punctuation">.</span><span class="token operator">*</span><span class="token punctuation">)</span>$ https:<span class="token operator">/</span><span class="token operator">/</span>www<span class="token punctuation">.</span>westos<span class="token punctuation">.</span>org/<span class="token variable">$1</span> permanent<span class="token punctuation">;</span>
                <span class="token comment">#location / {</span>
                <span class="token comment">#       proxy_pass http://westos;</span>
                <span class="token comment">#}</span>
        <span class="token punctuation">}</span>
<span class="token punctuation">}</span>

</code></pre> 
  <p>这里再次进行测试会发现已经完成重定向</p> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@server5 ~]</span><span class="token comment"># curl -I www.westos.org</span>
HTTP/1<span class="token punctuation">.</span>1 301 Moved Permanently
Server: nginx/1<span class="token punctuation">.</span>21<span class="token punctuation">.</span>1
Date: Fri<span class="token punctuation">,</span> 30 Sep 2022 03:01:04 GMT
Content-<span class="token function">Type</span>: text/html
Content-Length: 169
Connection: keep-alive
Location: https:<span class="token operator">/</span><span class="token operator">/</span>www<span class="token punctuation">.</span>westos<span class="token punctuation">.</span>org/

</code></pre> 
  <p><strong>nginx防盗链</strong><br> 我们有的时候访问网站中的内容并不是通过原网站进行访问,这时候就会白白消耗资源,所以可以设置防盗链,如果是通过其他地址访问就会显示错误或者可以将其跳转至其他页面</p> 
  <pre><code class="prism language-powershell">location ~ \<span class="token punctuation">.</span><span class="token punctuation">(</span>jpg<span class="token punctuation">|</span>png<span class="token punctuation">)</span>$ <span class="token punctuation">{</span>
        root html<span class="token punctuation">;</span>
        valid_referers none blocked www<span class="token punctuation">.</span>westos<span class="token punctuation">.</span>org<span class="token punctuation">;</span>
        <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token variable">$invalid_referer</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
                <span class="token keyword">return</span> 403<span class="token punctuation">;</span>
                <span class="token comment">#rewrite ^/http://www2.westos.org/R8.jpg;</span>
        <span class="token punctuation">}</span>
        <span class="token punctuation">}</span>

</code></pre> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1598843222967222272"></div>
                    <script type="text/javascript" src="/views/front/js/chanyan.js"></script>
                    <!-- 文章页-底部 动态广告位 -->
                    <div class="youdao-fixed-ad" id="detail_ad_bottom"></div>
                </div>
                <div class="col-md-3">
                    <div class="row" id="ad">
                        <!-- 文章页-右侧1 动态广告位 -->
                        <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_1"> </div>
                        </div>
                        <!-- 文章页-右侧2 动态广告位 -->
                        <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_2"></div>
                        </div>
                        <!-- 文章页-右侧3 动态广告位 -->
                        <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_3"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="container">
        <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(Linux企业运维,nginx,运维,linux)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1904095634680508416.htm"
                           title="linux驱动(三):gpiolib" target="_blank">linux驱动(三):gpiolib</a>
                        <span class="text-muted">菜_小_白</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/%E9%A9%B1%E5%8A%A8%E5%BC%80%E5%8F%91/1.htm">驱动开发</a>
                        <div>本文主要探讨使用210的gpiolib库编写led驱动。gpio.h#defineS5PV210_GPIO_A0_NR(8)......#defineS5PV210_GPIO_ETC4_NR   (6)定义端口的GPIO数目#defineS5PV210_GPIO_NEXT(__gpio)\   ((__gpio##_START)+(__gpio##_NR)+CONFIG_S3C_GPIO_SPAC</div>
                    </li>
                    <li><a href="/article/1904081897898700800.htm"
                           title="Java Panama 项目:Java 与 AI 的融合" target="_blank">Java Panama 项目:Java 与 AI 的融合</a>
                        <span class="text-muted">AI天才研究院</span>
<a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97/1.htm">计算</a><a class="tag" taget="_blank" href="/search/Java%E5%AE%9E%E6%88%98/1.htm">Java实战</a><a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</a><a class="tag" taget="_blank" href="/search/R1/1.htm">R1</a><a class="tag" taget="_blank" href="/search/%26amp%3B/1.htm">&</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AEAI%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E5%A4%A7%E6%A8%A1%E5%9E%8B/1.htm">大数据AI人工智能大模型</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>JavaPanama项目:Java与AI的融合Java在AI领域的优势Java在AI领域的优势主要体现在以下几个方面:强大的生态系统:Java拥有丰富的库和框架,为AI开发提供了坚实的基础。跨平台性:Java的“一次编写,到处运行”特性,降低了AI应用的运维成本。高性能与稳定性:Java虚拟机(JVM)的优化和垃圾回收机制,确保了AI应用的高效运行和内存管理。实时数据处理能力:Java可以高效处理</div>
                    </li>
                    <li><a href="/article/1904081771423657984.htm"
                           title="Windows操作系统部署Tomcat详细讲解" target="_blank">Windows操作系统部署Tomcat详细讲解</a>
                        <span class="text-muted">web15085415935</span>
<a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/1.htm">学习路线</a><a class="tag" taget="_blank" href="/search/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4/1.htm">阿里巴巴</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>Tomcat是一个开源的JavaServlet容器,用于处理JavaWeb应用程序的请求和响应。以下是关于Tomcat的用法大全:一、安装Tomcat下载访问ApacheTomcat官方网站(https://tomcat.apache.org/),根据你的操作系统(如Windows、Linux、macOS)和需求选择合适的版本进行下载。例如,对于开发环境,通常选择较新的稳定版本。安装(以Windo</div>
                    </li>
                    <li><a href="/article/1904081389494530048.htm"
                           title="Linux第零节:Linux命令速查图表(按功能分类)" target="_blank">Linux第零节:Linux命令速查图表(按功能分类)</a>
                        <span class="text-muted">熊峰峰</span>
<a class="tag" taget="_blank" href="/search/5.Linux/1.htm">5.Linux</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a>
                        <div>Linux命令速查图表(按功能分类)思维导图示意Linux命令文件操作权限管理系统管理网络操作文本处理压缩归档ls/cd/pwdmkdir/rm/cpcat/less/findchmodchownps/top/killshutdown/unamecurl/netstatnc/tcpdumpgrep/awk/sedtar/zip/unzip一、文件与目录操作命令功能描述常用选项示例ls列出目录内容-</div>
                    </li>
                    <li><a href="/article/1904081390413082624.htm"
                           title="Kubernetes Init 容器:实现 Nginx 和 PHP 对 MySQL 的依赖检查" target="_blank">Kubernetes Init 容器:实现 Nginx 和 PHP 对 MySQL 的依赖检查</a>
                        <span class="text-muted">曹天骄</span>
<a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a>
                        <div>在设计KubernetesPod时,如果需要在启动Nginx和PHP之前等待MySQL启动完成,可以通过初始化容器(initC)来实现。初始化容器可以用于检查MySQL是否可用,只有在MySQL可用后,才会继续启动主容器(Nginx和PHP)。设计思路初始化容器(initC):使用一个简单的脚本或工具(如mysql-client)来检查MySQL服务是否可用。如果MySQL可用,初始化容器成功退出</div>
                    </li>
                    <li><a href="/article/1904073749683040256.htm"
                           title="腾讯面经,有点难度~" target="_blank">腾讯面经,有点难度~</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AFgo/1.htm">后端go</a>
                        <div>今天分享组织内的朋友在腾讯安全的实习面经。内容涵盖了QPS测试方法、SQL聚合查询、Linux进程管理、Redis数据结构与持久化、NAT原理、Docker隔离机制、Go语言GMP调度模型、协程控制、系统调用流程、变量逃逸分析及map操作等等知识点。下面是我整理的面经详解:面经详解一个表,里面有数据列,id,name,class,查学生最喜欢的前10个课程,sql语句实现SELECTclass,C</div>
                    </li>
                    <li><a href="/article/1904069953288466432.htm"
                           title="云智慧:拥抱AI算法驱动的智能运维服务创新引擎" target="_blank">云智慧:拥抱AI算法驱动的智能运维服务创新引擎</a>
                        <span class="text-muted"></span>

                        <div>随着信息化、数字化、智能化的加码,企业对人工智能、大数据等技术应用呈现出明显兴趣,海笔研究对国内中型规模企业调研表明,在2020年,54.1%的企业选择购买人工智能类应用,41.9%的企业选择购买大数据及BI类应用,各类产品软件的应用大幅提升了企业信息系统复杂度,以及运维管理难度。业务发展催生服务需求从系统管理者角度出发,信息系统从“单机Excel表格”到“集中式单系统”再到“微服务、云架构”等,</div>
                    </li>
                    <li><a href="/article/1904063111523004416.htm"
                           title="文件的基本的基本属性" target="_blank">文件的基本的基本属性</a>
                        <span class="text-muted">伶星37</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>为什么要有基本属性Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。例子你可以把Linux比作成一个学校,里面的人学生老师校长里面的资料课本学校档案老师个人备案资料学生只能看课本,其他的都不能看,而老师,可以看老师备案资料和课本。校长上面都可以看。在Linux中我们通常使</div>
                    </li>
                    <li><a href="/article/1904059330253090816.htm"
                           title="Nginx多台服务器负载均衡" target="_blank">Nginx多台服务器负载均衡</a>
                        <span class="text-muted">PS测</span>
<a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1/1.htm">负载均衡</a>
                        <div>一操作步骤:1.服务器IP45.114.124.215//主服务器(安装Nginx)45.114.124.99//从服务器(安装Nginx或Apache都可以)2.保证2台服务器网络互通3.在2台服务器上设置不同页面方便验证3.1在主服务器添加一个可以访问的站点3.2在次服务器添加一个站点,端口必须是主服务器在nginx指定给次服务器的端口4.在主服务器45.114.124.215安装Nginx,</div>
                    </li>
                    <li><a href="/article/1904054528894889984.htm"
                           title="ERROR: Failed building wheel for pyaudioFailed to build pyaudioERROR: ERROR: Failed to build insta" target="_blank">ERROR: Failed building wheel for pyaudioFailed to build pyaudioERROR: ERROR: Failed to build insta</a>
                        <span class="text-muted">小李飞刀李寻欢</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/audio/1.htm">audio</a><a class="tag" taget="_blank" href="/search/pyaudio/1.htm">pyaudio</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E8%A3%85%E5%BA%93/1.htm">安装库</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>ERROR:FailedbuildingwheelforpyaudioFailedtobuildpyaudioERROR:ERROR:Failedtobuildinstallablewheelsforsomepyproject.tomlbasedprojects(pyaudio)这个错误表明在编译pyaudio时缺少PortAudio开发库。以下是完整解决方案:Linux系统解决方案#1.安装系统</div>
                    </li>
                    <li><a href="/article/1904052889639251968.htm"
                           title="字节跳动离职后,转行学起了AI大模型!该说不说,真的香!!" target="_blank">字节跳动离职后,转行学起了AI大模型!该说不说,真的香!!</a>
                        <span class="text-muted">小城哇哇</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/AI%E5%A4%A7%E6%A8%A1%E5%9E%8B/1.htm">AI大模型</a><a class="tag" taget="_blank" href="/search/%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B/1.htm">语言模型</a><a class="tag" taget="_blank" href="/search/agi/1.htm">agi</a><a class="tag" taget="_blank" href="/search/ai/1.htm">ai</a><a class="tag" taget="_blank" href="/search/LLM/1.htm">LLM</a><a class="tag" taget="_blank" href="/search/%E8%BD%AC%E8%A1%8C/1.htm">转行</a>
                        <div>个人自我介绍鄙人出生于南方小乡镇,为了走出小镇,在当地够拼够努力,不是自夸,确确实实也算得上“别人家的小孩”,至少在学习这件事情少,没有要家里人操过心。高考特别顺利,一个老牌985,具体哪个学校就不说了,不想给母校丢脸。毕业后,也算是“风光”地进入了字节跳动。做的是运维测试。在职期间刚入职的时候真的信心满满⛽️,但才3天就感受到了互联网头部公司的强度不是一般的大。明面上的早十晚八工作制完全不存在,</div>
                    </li>
                    <li><a href="/article/1904051378020478976.htm"
                           title="服务器负载均衡" target="_blank">服务器负载均衡</a>
                        <span class="text-muted">冬冬小圆帽</span>
<a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1/1.htm">负载均衡</a><a class="tag" taget="_blank" href="/search/vim/1.htm">vim</a>
                        <div>1.安装EPEL仓库EPEL(ExtraPackagesforEnterpriseLinux)仓库提供了额外的软件包,安装HAProxy前需要先启用EPEL仓库。sudoyuminstallepel-release-y2.安装HAProxy通过EPEL仓库安装HAProxy。sudoyuminstallhaproxy-y注意:如果服务器上已安装Docker,可能会干扰HAProxy的安装。建议先关</div>
                    </li>
                    <li><a href="/article/1904043310817800192.htm"
                           title="Centos Redis安装与配置指南" target="_blank">Centos Redis安装与配置指南</a>
                        <span class="text-muted">程序~阿呆</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E5%B7%A5%E5%85%B7/1.htm">开发工具</a><a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/%E4%B8%AD%E9%97%B4%E4%BB%B6/1.htm">中间件</a>
                        <div>1.环境说明centos7.9redis6.2.6安装方式:外网服务器可以使用wget来下载安装,内网服务器只能windows下载后上传到linux服务器上2.新建下载目录将下载的Redis放在本文件夹中mkdir/tools3.Redis下载服务器执行wget命令:wgethttp://download.redis.io/releases/redis-6.2.6.tar.gz4.解压和编译依次执</div>
                    </li>
                    <li><a href="/article/1904014930978336768.htm"
                           title="cifs挂载 mount ubuntu_在Linux上使用CIFS,如何挂载Windows共享" target="_blank">cifs挂载 mount ubuntu_在Linux上使用CIFS,如何挂载Windows共享</a>
                        <span class="text-muted">王小约</span>
<a class="tag" taget="_blank" href="/search/cifs%E6%8C%82%E8%BD%BD/1.htm">cifs挂载</a><a class="tag" taget="_blank" href="/search/mount/1.htm">mount</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a>
                        <div>在Linux和UNIX操作系统上,可以使用mount命令的cifs选项将Windows共享安装在本地目录。常见的Internet文件系统(CIFS)是网络文件共享协议,CIFS是SMB的一种形式。在本教程中,解释如何在Windows共享上手动和自动挂载Linux系统。安装CIFS程序包要在Windows系统上挂载Linux共享,首先需要安装CIFS程序包。在Ubuntu和Debian上安装CIFS</div>
                    </li>
                    <li><a href="/article/1904013670099251200.htm"
                           title="Linux中挂载Windows Samba共享的指南" target="_blank">Linux中挂载Windows Samba共享的指南</a>
                        <span class="text-muted">执剑走天涯xp</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>主要步骤:安装cifs-utils确保你的Linux系统已安装cifs-utils包。如果未安装,使用以下命令:sudoapt-getinstallcifs-utils#Debian/Ubuntu系统sudoyuminstallcifs-utils#CentOS/RHEL系统创建挂载点创建一个本地目录来挂载Windows共享:sudomkdir/mnt/share编辑/etc/fstab文件使用文</div>
                    </li>
                    <li><a href="/article/1904012278655676416.htm"
                           title="嵌入式Linux网络编程实战:基于libcurl实现Gitee文件上传" target="_blank">嵌入式Linux网络编程实战:基于libcurl实现Gitee文件上传</a>
                        <span class="text-muted">银河码</span>
<a class="tag" taget="_blank" href="/search/Linux%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B/1.htm">Linux网络编程</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/gitee/1.htm">gitee</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/vscode/1.htm">vscode</a><a class="tag" taget="_blank" href="/search/tcp%2Fip/1.htm">tcp/ip</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>嵌入式Linux网络编程实战:基于libcurl实现Gitee文件上传【本文代码已在立创·泰山派平台验证通过,可直接用于物联网设备数据上报场景】一、功能概述与实现效果1.1核心功能本地文件读取:支持任意二进制/文本文件Base64编码转换:符合RFC4648标准HTTP传输:通过libcurl实现,也可以使用HTTPS加密通信GiteeAPI对接:自动创建/更新仓库文件1.2运行效果演示#上传本地</div>
                    </li>
                    <li><a href="/article/1904006229223600128.htm"
                           title="linux如何释放内存缓存" target="_blank">linux如何释放内存缓存</a>
                        <span class="text-muted">千航@abc</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E7%BC%93%E5%AD%98/1.htm">缓存</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E5%86%85%E5%AD%98/1.htm">内存</a>
                        <div>[root@redis~]#sync#将内存缓存数据强制写入磁盘(保存数据后再做释放)[root@redis~]#echo1>/proc/sys/vm/drop_caches#释放内存缓存</div>
                    </li>
                    <li><a href="/article/1904001817981808640.htm"
                           title="Linux:进程间通信——信号" target="_blank">Linux:进程间通信——信号</a>
                        <span class="text-muted">muke_r</span>
<a class="tag" taget="_blank" href="/search/1024%E7%A8%8B%E5%BA%8F%E5%91%98%E8%8A%82/1.htm">1024程序员节</a>
                        <div>信号是UNIX和Linux系统响应某些条件而产生的一个事件,接收到该信号的进程会相应地采取一些行动。信号是软中断,通常信号是由一个错误产生的。但它们还可以作为进程间通信或修改行为的一种方式,明确地由一个进程发送给另一个进程目录一、信号种类1.常见的信号2.不可靠信号和可靠信号注意二、信号捕捉三、进程休眠号四、信号集和信号阻塞五、附带数据信息的信号处理一、信号种类在终端输入kill-l命令可以看到l</div>
                    </li>
                    <li><a href="/article/1903998541542518784.htm"
                           title="linux——线程" target="_blank">linux——线程</a>
                        <span class="text-muted">這~悸ベ雨落憂殇</span>
<a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a>
                        <div>线程概念什么是线程?在一个程序里的一个执行流叫做线程。一切进程至少有一个线程线程在进程内部运行,本质是在进程地址空间内运行在Linux系统中,在CPU眼中,看到的PCB都要比传统的进程更加轻量化我们都知道在每一个进程都有属于自己的PCB,里面装满了描述进程的各种字段…,而线程呢,是在进程中产生的,所以会共享共一个进程地址空间,如上图所示。线程的优点创建一个新线程的代价要比创建一个新进程小与进程之间</div>
                    </li>
                    <li><a href="/article/1903995513812873216.htm"
                           title="Visual Studio Code官网下载地址及使用技巧(含常用的拓展插件推荐)" target="_blank">Visual Studio Code官网下载地址及使用技巧(含常用的拓展插件推荐)</a>
                        <span class="text-muted">ITCTCSDN</span>
<a class="tag" taget="_blank" href="/search/vscode/1.htm">vscode</a><a class="tag" taget="_blank" href="/search/ide/1.htm">ide</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E8%BE%91%E5%99%A8/1.htm">编辑器</a>
                        <div>VisualStudioCode(简称“VSCode”)是Microsoft于2015年4月发布的可运行于MacOS、Windows和Linux之上的跨平台源代码编辑器,它具有对JavaScript,TypeScript和Node.js的内置支持,并具有丰富的其他语言(例如C++,C#,Java,Python,PHP,Go)和运行时(例如.NET和Unity)扩展的生态系统。VisualStudi</div>
                    </li>
                    <li><a href="/article/1903995511321456640.htm"
                           title="交换机救命命令手册:华为 & 思科平台最全运维指令速查表" target="_blank">交换机救命命令手册:华为 & 思科平台最全运维指令速查表</a>
                        <span class="text-muted">IT程序媛-桃子</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E9%80%9A/1.htm">数通</a><a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BA%E8%AE%A4%E8%AF%81/1.htm">华为认证</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>引言:这是一份救命的交换机运维秘籍在交换机配置与故障排查过程中,不论你是初入网络世界的小白,还是年资数年的资深工程师,总会遇到那些“关键时刻靠得住的命令”。这篇文章,我将整理一份覆盖华为+思科双平台的实战命令手册,从最基础的设备状态查看,到VLAN、STP、防环、LACP、QOS、抓包、限速、安全加固等操作,通通囊括。关键时刻,拿来即用,就是这篇的全部意义。01️⃣基础生存命令:先活下来再说场景华</div>
                    </li>
                    <li><a href="/article/1903992863927103488.htm"
                           title="Linux:动静态库" target="_blank">Linux:动静态库</a>
                        <span class="text-muted">嶔某</span>
<a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>✨✨所属专栏:Linux✨✨✨✨作者主页:嶔某✨✨什么是库库是写好的现有的,成熟的可以复用的代码。现实中每个程序都需要依赖很多基础的底层库。世界上有很多大佬为了实现某一个功能,写了很多很NB的代码。他们把代码封装成一个库,这样我们不必写出像他们一样厉害的代码,只需要使用它们分享的库,也能使用对应的功能了。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。静态库.a[Linux/</div>
                    </li>
                    <li><a href="/article/1903992861863505920.htm"
                           title="Linux:编辑器Vim和Makefile" target="_blank">Linux:编辑器Vim和Makefile</a>
                        <span class="text-muted">嶔某</span>
<a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E8%BE%91%E5%99%A8/1.htm">编辑器</a><a class="tag" taget="_blank" href="/search/vim/1.htm">vim</a>
                        <div>✨✨所属专栏:Linux✨✨✨✨作者主页:嶔某✨✨vim的三种常用模式分别是命令模式(commandmode)、插入模式(Insertmode)和底行模式(lastlinemode)各模式的功能区分如下:正常/普通/命令模式(Normalmode)控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insertmode下,或者到lastlinemode。插入模式(Insertmode)只有</div>
                    </li>
                    <li><a href="/article/1903987433905647616.htm"
                           title="【AI大模型】搭建本地大模型GPT-NeoX:详细步骤及常见问题处理" target="_blank">【AI大模型】搭建本地大模型GPT-NeoX:详细步骤及常见问题处理</a>
                        <span class="text-muted">qzw1210</span>
<a class="tag" taget="_blank" href="/search/gpt/1.htm">gpt</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a>
                        <div>搭建本地大模型GPT-NeoX:详细步骤及常见问题处理GPT-NeoX是一个开源的大型语言模型框架,由EleutherAI开发,可用于训练和部署类似GPT-3的大型语言模型。本指南将详细介绍如何在本地环境中搭建GPT-NeoX,并解决过程中可能遇到的常见问题。1.系统要求1.1硬件要求1.2软件要求操作系统:Linux(推荐Ubuntu20.04或更高版本)CUDA:11.2或更高版本Python</div>
                    </li>
                    <li><a href="/article/1903981379700453376.htm"
                           title="Linux 常用命令 - last 【显示历史登录用户列表】" target="_blank">Linux 常用命令 - last 【显示历史登录用户列表】</a>
                        <span class="text-muted">WKJay_</span>
<a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4/1.htm">常用命令</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>简介last命令源自英文单词“last”,意为“最后”。该命令用于显示系统中用户的登录和注销记录,以及系统的重启和关机记录。它通过读取/var/log/wtmp文件来获取这些信息,wtmp文件记录了所有用户的登录和注销活动。使用方式last[options][username...][tty...]lastb[options][username...][tty...]常用选项-a,--hostla</div>
                    </li>
                    <li><a href="/article/1903973553884164096.htm"
                           title="从 Windows 共享到 Linux:Jenkins 代码部署方案调整" target="_blank">从 Windows 共享到 Linux:Jenkins 代码部署方案调整</a>
                        <span class="text-muted">XMYX-0</span>
<a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/jenkins/1.htm">jenkins</a>
                        <div>文章目录从Windows共享到Linux:Jenkins代码部署方案调整方案1:使用NFS(推荐)介绍特点适用场景在192.168.1.100上配置NFS安装NFS服务器创建共享目录修改NFS共享配置启动NFS并应用配置在controller服务器上挂载NFS安装NFS客户端手动挂载开机自动挂载方案2:使用Rsync(RemoteSync)同步文件介绍特点适用场景在controller服务器上安装</div>
                    </li>
                    <li><a href="/article/1903971788061208576.htm"
                           title="Linux服务器设置jar包开机自启" target="_blank">Linux服务器设置jar包开机自启</a>
                        <span class="text-muted">一个简单的名称</span>
<a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/jar/1.htm">jar</a>
                        <div>一、准备工作将jar包上传到服务器(本文将jar包上传到/home/project/jar/)新建脚本文件(本文将脚本文件放在/home/project/sh/文件下)注:sentinel-dashboard是我的程序名,可根据实际情况替换二、新建、编辑jar包的启动和停止脚本#启动脚本文件vim/home/project/sh/sentinel-dashboard-start.sh#停止脚本文件</div>
                    </li>
                    <li><a href="/article/1903966995972419584.htm"
                           title="Tiny RDM:为什么说程序员都需要他,这款开源项目,太好用,轻量化的跨平台Redis桌面客户端,谁用谁知道!!" target="_blank">Tiny RDM:为什么说程序员都需要他,这款开源项目,太好用,轻量化的跨平台Redis桌面客户端,谁用谁知道!!</a>
                        <span class="text-muted">小华同学ai</span>
<a class="tag" taget="_blank" href="/search/%E5%BC%80%E6%BA%90/1.htm">开源</a><a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法TinyRDM是一款现代化、轻量级的跨平台Redis桌面客户端。它支持Mac、Windows和Linux系统,提供了丰富的功能特性,旨在为开发者提供便捷、高效的Redis操作体验。功能特性极度轻量TinyRDM基于Webview2构建,不内嵌浏览器,这使得它在保持轻量级的同时,也拥有出色的性能。感谢Wails框架</div>
                    </li>
                    <li><a href="/article/1903966112870100992.htm"
                           title="Tiny RDM:轻量级跨平台Redis桌面管理工具" target="_blank">Tiny RDM:轻量级跨平台Redis桌面管理工具</a>
                        <span class="text-muted">廉峥旭</span>

                        <div>TinyRDM:轻量级跨平台Redis桌面管理工具tiny-rdmAModernRedisGUIClient项目地址:https://gitcode.com/gh_mirrors/ti/tiny-rdm项目基础介绍TinyRDM(TinyRedisDesktopManager)是一款现代化的轻量级Redis桌面管理工具,适用于Mac、Windows和Linux平台。该项目主要使用Go、Vue和Ja</div>
                    </li>
                    <li><a href="/article/1903965983807172608.htm"
                           title="Redis桌面工具:Tiny RDM" target="_blank">Redis桌面工具:Tiny RDM</a>
                        <span class="text-muted">微刻时光</span>
<a class="tag" taget="_blank" href="/search/%E5%BE%AE%E7%A7%92%E9%80%9F%E9%80%92/1.htm">微秒速递</a><a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/%E7%BC%93%E5%AD%98/1.htm">缓存</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a>
                        <div>1.TinyRDM介绍TinyRDM(TinyRedisDesktopManager)是一个现代化、轻量级的Redis桌面客户端,支持Linux、Mac和Windows操作系统。它专为开发和运维人员设计,使得与Redis服务器的交互操作更加便捷愉快。TinyRDM提供了丰富的Redis数据操作功能,具备现代化的界面设计和良好的用户体验,使得Redis的管理和运维变得更加简单高效。2.核心功能极致轻</div>
                    </li>
                                <li><a href="/article/92.htm"
                                       title="log4j对象改变日志级别" target="_blank">log4j对象改变日志级别</a>
                                    <span class="text-muted">3213213333332132</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/log4j/1.htm">log4j</a><a class="tag" taget="_blank" href="/search/level/1.htm">level</a><a class="tag" taget="_blank" href="/search/log4j%E5%AF%B9%E8%B1%A1%E5%90%8D%E7%A7%B0/1.htm">log4j对象名称</a><a class="tag" taget="_blank" href="/search/%E6%97%A5%E5%BF%97%E7%BA%A7%E5%88%AB/1.htm">日志级别</a>
                                    <div>log4j对象改变日志级别可批量的改变所有级别,或是根据条件改变日志级别。 
 
log4j配置文件: 
 
 

log4j.rootLogger=ERROR,FILE,CONSOLE,EXECPTION
 
#log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE=org.apache.l</div>
                                </li>
                                <li><a href="/article/219.htm"
                                       title="elk+redis 搭建nginx日志分析平台" target="_blank">elk+redis 搭建nginx日志分析平台</a>
                                    <span class="text-muted">ronin47</span>
<a class="tag" taget="_blank" href="/search/elasticsearch/1.htm">elasticsearch</a><a class="tag" taget="_blank" href="/search/kibana/1.htm">kibana</a><a class="tag" taget="_blank" href="/search/logstash/1.htm">logstash</a>
                                    <div>              elk+redis 搭建nginx日志分析平台 
logstash,elasticsearch,kibana 怎么进行nginx的日志分析呢?首先,架构方面,nginx是有日志文件的,它的每个请求的状态等都有日志文件进行记录。其次,需要有个队 列,redis的l</div>
                                </li>
                                <li><a href="/article/346.htm"
                                       title="Yii2设置时区" target="_blank">Yii2设置时区</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/timezone/1.htm">timezone</a><a class="tag" taget="_blank" href="/search/yii2/1.htm">yii2</a>
                                    <div>时区这东西,在开发的时候,你说重要吧,也还好,毕竟没它也能正常运行,你说不重要吧,那就纠结了。特别是linux系统,都TMD差上几小时,你能不痛苦吗?win还好一点。有一些常规方法,是大家目前都在采用的1、php.ini中的设置,这个就不谈了,2、程序中公用文件里设置,date_default_timezone_set一下时区3、或者。。。自己写时间处理函数,在遇到时间的时候,用这个函数处理(比较</div>
                                </li>
                                <li><a href="/article/473.htm"
                                       title="js实现前台动态添加文本框,后台获取文本框内容" target="_blank">js实现前台动态添加文本框,后台获取文本框内容</a>
                                    <span class="text-muted">171815164</span>
<a class="tag" taget="_blank" href="/search/%E6%96%87%E6%9C%AC%E6%A1%86/1.htm">文本框</a>
                                    <div>

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://w</div>
                                </li>
                                <li><a href="/article/600.htm"
                                       title="持续集成工具" target="_blank">持续集成工具</a>
                                    <span class="text-muted">g21121</span>
<a class="tag" taget="_blank" href="/search/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/1.htm">持续集成</a>
                                    <div>        持续集成是什么?我们为什么需要持续集成?持续集成带来的好处是什么?什么样的项目需要持续集成?...        持续集成(Continuous integration ,简称CI),所谓集成可以理解为将互相依赖的工程或模块合并成一个能单独运行</div>
                                </li>
                                <li><a href="/article/727.htm"
                                       title="数据结构哈希表(hash)总结" target="_blank">数据结构哈希表(hash)总结</a>
                                    <span class="text-muted">永夜-极光</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a>
                                    <div>1.什么是hash 
来源于百度百科: 
Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。 
  
</div>
                                </li>
                                <li><a href="/article/854.htm"
                                       title="乱七八糟" target="_blank">乱七八糟</a>
                                    <span class="text-muted">程序员是怎么炼成的</span>

                                    <div>eclipse中的jvm字节码查看插件地址: 
http://andrei.gmxhome.de/eclipse/ 
安装该地址的outline 插件  后重启,打开window下的view下的bytecode视图 
http://andrei.gmxhome.de/eclipse/ 
  
jvm博客: 
http://yunshen0909.iteye.com/blog/2</div>
                                </li>
                                <li><a href="/article/981.htm"
                                       title="职场人伤害了“上司” 怎样弥补" target="_blank">职场人伤害了“上司” 怎样弥补</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/%E8%81%8C%E5%9C%BA/1.htm">职场</a>
                                    <div> 由于工作中的失误,或者平时不注意自己的言行“伤害”、“得罪”了自己的上司,怎么办呢? 
  在职业生涯中这种问题尽量不要发生。下面提供了一些解决问题的建议: 
  一、利用一些轻松的场合表示对他的尊重 
  即使是开明的上司也很注重自己的权威,都希望得到下属的尊重,所以当你与上司冲突后,最好让不愉快成为过去,你不妨在一些轻松的场合,比如会餐、联谊活动等,向上司问个好,敬下酒,表示你对对方的尊重,</div>
                                </li>
                                <li><a href="/article/1108.htm"
                                       title="深入浅出url编码" target="_blank">深入浅出url编码</a>
                                    <span class="text-muted">antonyup_2006</span>
<a class="tag" taget="_blank" href="/search/%E5%BA%94%E7%94%A8%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">应用服务器</a><a class="tag" taget="_blank" href="/search/%E6%B5%8F%E8%A7%88%E5%99%A8/1.htm">浏览器</a><a class="tag" taget="_blank" href="/search/servlet/1.htm">servlet</a><a class="tag" taget="_blank" href="/search/weblogic/1.htm">weblogic</a><a class="tag" taget="_blank" href="/search/IE/1.htm">IE</a>
                                    <div>出处:http://blog.csdn.net/yzhz  杨争   
http://blog.csdn.net/yzhz/archive/2007/07/03/1676796.aspx 
 
一、问题: 
        编码问题是JAVA初学者在web开发过程中经常会遇到问题,网上也有大量相关的</div>
                                </li>
                                <li><a href="/article/1235.htm"
                                       title="建表后创建表的约束关系和增加表的字段" target="_blank">建表后创建表的约束关系和增加表的字段</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/%E6%A0%87%E7%9A%84%E7%BA%A6%E6%9D%9F%E5%85%B3%E7%B3%BB/1.htm">标的约束关系</a><a class="tag" taget="_blank" href="/search/%E5%A2%9E%E5%8A%A0%E8%A1%A8%E7%9A%84%E5%AD%97%E6%AE%B5/1.htm">增加表的字段</a>
                                    <div>  
下面所有的操作都是在表建立后操作的,主要目的就是熟悉sql的约束,约束语句的万能公式 
  
1,增加字段(student表中增加 姓名字段) 
  
alter table 增加字段的表名 add  增加的字段名   增加字段的数据类型

  alter table student add name varchar2(10);
 
  
&nb</div>
                                </li>
                                <li><a href="/article/1362.htm"
                                       title="Uploadify 3.2 参数属性、事件、方法函数详解" target="_blank">Uploadify 3.2 参数属性、事件、方法函数详解</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/uploadify/1.htm">uploadify</a>
                                    <div>一.属性     
属性名称   
默认值   
说明     
auto   
true   
设置为true当选择文件后就直接上传了,为false需要点击上传按钮才上传。     
buttonClass   
”   
按钮样式     
buttonCursor   
‘hand’   
鼠标指针悬停在按钮上的样子     
buttonImage   
null   
浏览按钮的图片的路</div>
                                </li>
                                <li><a href="/article/1489.htm"
                                       title="精通Oracle10编程SQL(16)使用LOB对象" target="_blank">精通Oracle10编程SQL(16)使用LOB对象</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/plsql/1.htm">plsql</a>
                                    <div>/*
 *使用LOB对象
 */
--LOB(Large Object)是专门用于处理大对象的一种数据类型,其所存放的数据长度可以达到4G字节
--CLOB/NCLOB用于存储大批量字符数据,BLOB用于存储大批量二进制数据,而BFILE则存储着指向OS文件的指针

/*
 *综合实例
 */
--建立表空间 
--#指定区尺寸为128k,如不指定,区尺寸默认为64k 
CR</div>
                                </li>
                                <li><a href="/article/1616.htm"
                                       title="【Resin一】Resin服务器部署web应用" target="_blank">【Resin一】Resin服务器部署web应用</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/resin/1.htm">resin</a>
                                    <div>工作中,在Resin服务器上部署web应用,通常有如下三种方式: 
  
 
 配置多个web-app 
 配置多个http id 
 为每个应用配置一个propeties、xml以及sh脚本文件 
 配置多个web-app 
  
 
 在resin.xml中,可以为一个host配置多个web-app 
 
  
<cluster id="app&q</div>
                                </li>
                                <li><a href="/article/1743.htm"
                                       title="red5简介及基础知识" target="_blank">red5简介及基础知识</a>
                                    <span class="text-muted">白糖_</span>
<a class="tag" taget="_blank" href="/search/%E5%9F%BA%E7%A1%80/1.htm">基础</a>
                                    <div>  
 
 简介 
 
  
Red5的主要功能和Macromedia公司的FMS类似,提供基于Flash的流媒体服务的一款基于Java的开源流媒体服务器。它由Java语言编写,使用RTMP作为流媒体传输协议,这与FMS完全兼容。它具有流化FLV、MP3文件,实时录制客户端流为FLV文件,共享对象,实时视频播放、Remoting等功能。用Red5替换FMS后,客户端不用更改可正</div>
                                </li>
                                <li><a href="/article/1870.htm"
                                       title="angular.fromJson" target="_blank">angular.fromJson</a>
                                    <span class="text-muted">boyitech</span>
<a class="tag" taget="_blank" href="/search/AngularJS/1.htm">AngularJS</a><a class="tag" taget="_blank" href="/search/AngularJS+%E5%AE%98%E6%96%B9API/1.htm">AngularJS 官方API</a><a class="tag" taget="_blank" href="/search/AngularJS+API/1.htm">AngularJS API</a>
                                    <div>angular.fromJson   描述:   把Json字符串转为对象    使用方法:   angular.fromJson(json);   参数详解:      Param Type Details   json 
string  
JSON 字符串      返回值:   对象, 数组, 字符串 或者是一个数字   示例:   
<!DOCTYPE HTML>
<h</div>
                                </li>
                                <li><a href="/article/1997.htm"
                                       title="java-颠倒一个句子中的词的顺序。比如: I am a student颠倒后变成:student a am I" target="_blank">java-颠倒一个句子中的词的顺序。比如: I am a student颠倒后变成:student a am I</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>

public class ReverseWords {

	/**
	 * 题目:颠倒一个句子中的词的顺序。比如: I am a student颠倒后变成:student a am I.词以空格分隔。
	 * 要求:
	 * 1.实现速度最快,移动最少
	 * 2.不能使用String的方法如split,indexOf等等。
	 * 解答:两次翻转。
	 */
	publ</div>
                                </li>
                                <li><a href="/article/2124.htm"
                                       title="web实时通讯" target="_blank">web实时通讯</a>
                                    <span class="text-muted">Chen.H</span>
<a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/%E6%B5%8F%E8%A7%88%E5%99%A8/1.htm">浏览器</a><a class="tag" taget="_blank" href="/search/socket/1.htm">socket</a><a class="tag" taget="_blank" href="/search/%E8%84%9A%E6%9C%AC/1.htm">脚本</a>
                                    <div>关于web实时通讯,做一些监控软件。 
由web服务器组件从消息服务器订阅实时数据,并建立消息服务器到所述web服务器之间的连接,web浏览器利用从所述web服务器下载到web页面的客户端代理与web服务器组件之间的socket连接,建立web浏览器与web服务器之间的持久连接;利用所述客户端代理与web浏览器页面之间的信息交互实现页面本地更新,建立一条从消息服务器到web浏览器页面之间的消息通路</div>
                                </li>
                                <li><a href="/article/2251.htm"
                                       title="[基因与生物]远古生物的基因可以嫁接到现代生物基因组中吗?" target="_blank">[基因与生物]远古生物的基因可以嫁接到现代生物基因组中吗?</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/%E7%94%9F%E7%89%A9/1.htm">生物</a>
                                    <div> 
 
      大家仅仅把我说的事情当作一个IT行业的笑话来听吧..没有其它更多的意思 
 
 
    如果我们把大自然看成是一位伟大的程序员,专门为地球上的生态系统编制基因代码,并创造出各种不同的生物来,那么6500万年前的程序员开发的代码,是否兼容现代派的程序员的代码和架构呢? 
 
  </div>
                                </li>
                                <li><a href="/article/2378.htm"
                                       title="oracle 外部表" target="_blank">oracle 外部表</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E5%A4%96%E9%83%A8%E8%A1%A8/1.htm">外部表</a><a class="tag" taget="_blank" href="/search/external+tables/1.htm">external tables</a>
                                    <div>    oracle外部表是只允许只读访问,不能进行DML操作,不能创建索引,可以对外部表进行的查询,连接,排序,创建视图和创建同义词操作。 
you can select, join, or sort external table data. You can also create views and synonyms for external tables. Ho</div>
                                </li>
                                <li><a href="/article/2505.htm"
                                       title="aop相关的概念及配置" target="_blank">aop相关的概念及配置</a>
                                    <span class="text-muted">daysinsun</span>
<a class="tag" taget="_blank" href="/search/AOP/1.htm">AOP</a>
                                    <div>切面(Aspect): 
通常在目标方法执行前后需要执行的方法(如事务、日志、权限),这些方法我们封装到一个类里面,这个类就叫切面。 
 
 
连接点(joinpoint) 
spring里面的连接点指需要切入的方法,通常这个joinpoint可以作为一个参数传入到切面的方法里面(非常有用的一个东西)。 
 
 
通知(Advice) 
通知就是切面里面方法的具体实现,分为前置、后置、最终、异常环</div>
                                </li>
                                <li><a href="/article/2632.htm"
                                       title="初一上学期难记忆单词背诵第二课" target="_blank">初一上学期难记忆单词背诵第二课</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/english/1.htm">english</a><a class="tag" taget="_blank" href="/search/word/1.htm">word</a>
                                    <div>middle 中间的,中级的 
well 喔,那么;好吧 
phone 电话,电话机 
policeman 警察 
ask 问 
take 拿到;带到 
address 地址 
glad 高兴的,乐意的 
why 为什么  
China 中国 
family 家庭 
grandmother (外)祖母 
grandfather (外)祖父 
wife 妻子 
husband 丈夫 
da</div>
                                </li>
                                <li><a href="/article/2759.htm"
                                       title="Linux日志分析常用命令" target="_blank">Linux日志分析常用命令</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/log/1.htm">log</a>
                                    <div>1.查看文件内容 
cat 
-n 显示行号 2.分页显示 
more 
Enter 显示下一行 
空格 显示下一页 
F 显示下一屏 
B 显示上一屏 
less 
/get 查询"get"字符串并高亮显示 3.显示文件尾 
tail 
-f 不退出持续显示 
-n 显示文件最后n行 4.显示头文件 
head 
-n 显示文件开始n行 5.内容排序 
sort 
-n 按照</div>
                                </li>
                                <li><a href="/article/2886.htm"
                                       title="JSONP 原理分析" target="_blank">JSONP 原理分析</a>
                                    <span class="text-muted">fantasy2005</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/jsonp/1.htm">jsonp</a><a class="tag" taget="_blank" href="/search/jsonp+%E8%B7%A8%E5%9F%9F/1.htm">jsonp 跨域</a>
                                    <div>转自 http://www.nowamagic.net/librarys/veda/detail/224 
JavaScript是一种在Web开发中经常使用的前端动态脚本技术。在JavaScript中,有一个很重要的安全性限制,被称为“Same-Origin Policy”(同源策略)。这一策略对于JavaScript代码能够访问的页面内容做了很重要的限制,即JavaScript只能访问与包含它的</div>
                                </li>
                                <li><a href="/article/3013.htm"
                                       title="使用connect by进行级联查询" target="_blank">使用connect by进行级联查询</a>
                                    <span class="text-muted">234390216</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E6%9F%A5%E8%AF%A2/1.htm">查询</a><a class="tag" taget="_blank" href="/search/%E7%88%B6%E5%AD%90/1.htm">父子</a><a class="tag" taget="_blank" href="/search/Connect+by/1.htm">Connect by</a><a class="tag" taget="_blank" href="/search/%E7%BA%A7%E8%81%94/1.htm">级联</a>
                                    <div>使用connect by进行级联查询 
  
       connect by可以用于级联查询,常用于对具有树状结构的记录查询某一节点的所有子孙节点或所有祖辈节点。 
  
       来看一个示例,现假设我们拥有一个菜单表t_menu,其中只有三个字段:</div>
                                </li>
                                <li><a href="/article/3140.htm"
                                       title="一个不错的能将HTML表格导出为excel,pdf等的jquery插件" target="_blank">一个不错的能将HTML表格导出为excel,pdf等的jquery插件</a>
                                    <span class="text-muted">jackyrong</span>
<a class="tag" taget="_blank" href="/search/jquery%E6%8F%92%E4%BB%B6/1.htm">jquery插件</a>
                                    <div>发现一个老外写的不错的jquery插件,可以实现将HTML 
表格导出为excel,pdf等格式, 
地址在: 
https://github.com/kayalshri/ 
 
下面看个例子,实现导出表格到excel,pdf 
 
 


<html>
			<head>
				<title>Export html table to excel an</div>
                                </li>
                                <li><a href="/article/3267.htm"
                                       title="UI设计中我们为什么需要设计动效" target="_blank">UI设计中我们为什么需要设计动效</a>
                                    <span class="text-muted">lampcy</span>
<a class="tag" taget="_blank" href="/search/UI/1.htm">UI</a><a class="tag" taget="_blank" href="/search/UI%E8%AE%BE%E8%AE%A1/1.htm">UI设计</a>
                                    <div>关于Unity3D中的Shader的知识 
首先先解释下Unity3D的Shader,Unity里面的Shaders是使用一种叫ShaderLab的语言编写的,它同微软的FX文件或者NVIDIA的CgFX有些类似。传统意义上的vertex shader和pixel shader还是使用标准的Cg/HLSL 编程语言编写的。因此Unity文档里面的Shader,都是指用ShaderLab编写的代码,</div>
                                </li>
                                <li><a href="/article/3394.htm"
                                       title="如何禁止页面缓存" target="_blank">如何禁止页面缓存</a>
                                    <span class="text-muted">nannan408</span>
<a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/jsp/1.htm">jsp</a><a class="tag" taget="_blank" href="/search/cache/1.htm">cache</a>
                                    <div>禁止页面使用缓存~ 
------------------------------------------------ 
jsp:页面no cache: 
 
response.setHeader("Pragma","No-cache"); 
response.setHeader("Cache-Control","no-cach</div>
                                </li>
                                <li><a href="/article/3521.htm"
                                       title="以代码的方式管理quartz定时任务的暂停、重启、删除、添加等" target="_blank">以代码的方式管理quartz定时任务的暂停、重启、删除、添加等</a>
                                    <span class="text-muted">Everyday都不同</span>
<a class="tag" taget="_blank" href="/search/%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1%E7%AE%A1%E7%90%86/1.htm">定时任务管理</a><a class="tag" taget="_blank" href="/search/spring-quartz/1.htm">spring-quartz</a>
                                    <div>      【前言】在项目的管理功能中,对定时任务的管理有时会很常见。因为我们不能指望只在配置文件中配置好定时任务就行了,因为如果要控制定时任务的 “暂停” 呢?暂停之后又要在某个时间点 “重启” 该定时任务呢?或者说直接 “删除” 该定时任务呢?要改变某定时任务的触发时间呢? “添加” 一个定时任务对于系统的使用者而言,是不太现实的,因为一个定时任务的处理逻辑他是不</div>
                                </li>
                                <li><a href="/article/3648.htm"
                                       title="EXT实例" target="_blank">EXT实例</a>
                                    <span class="text-muted">tntxia</span>
<a class="tag" taget="_blank" href="/search/ext/1.htm">ext</a>
                                    <div>  
(1) 增加一个按钮 
  
JSP: 
  
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
Stri</div>
                                </li>
                                <li><a href="/article/3775.htm"
                                       title="数学学习在计算机研究领域的作用和重要性" target="_blank">数学学习在计算机研究领域的作用和重要性</a>
                                    <span class="text-muted">xjnine</span>
<a class="tag" taget="_blank" href="/search/Math/1.htm">Math</a>
                                    <div>最近一直有师弟师妹和朋友问我数学和研究的关系,研一要去学什么数学课。毕竟在清华,衡量一个研究生最重要的指标之一就是paper,而没有数学,是肯定上不了世界顶级的期刊和会议的,这在计算机学界尤其重要!你会发现,不论哪个领域有价值的东西,都一定离不开数学!在这样一个信息时代,当google已经让世界没有秘密的时候,一种卓越的数学思维,绝对可以成为你的核心竞争力.  无奈本人实在见地</div>
                                </li>
                </ul>
            </div>
        </div>
    </div>

<div>
    <div class="container">
        <div class="indexes">
            <strong>按字母分类:</strong>
            <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a
                href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a
                href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a
                href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a
                href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a
                href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a
                href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a
                href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a
                href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a>
        </div>
    </div>
</div>
<footer id="footer" class="mb30 mt30">
    <div class="container">
        <div class="footBglm">
            <a target="_blank" href="/">首页</a> -
            <a target="_blank" href="/custom/about.htm">关于我们</a> -
            <a target="_blank" href="/search/Java/1.htm">站内搜索</a> -
            <a target="_blank" href="/sitemap.txt">Sitemap</a> -
            <a target="_blank" href="/custom/delete.htm">侵权投诉</a>
        </div>
        <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved.
<!--            <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>-->
        </div>
    </div>
</footer>
<!-- 代码高亮 -->
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script>
<link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/>
<script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script>





</body>

</html>