标签: service

如何为我的域设置 Google ShortName 服务,以便不需要 FQDN

博客文章“为您的域提供 'tinyurl' 服务”说明了如何使用 Google Apps 为您的域设置 ShortName 服务。例如,如果您的域是example.com并且您使用 Google Apps,您可以将其配置http://go.example.com为您企业的个人 ShortName 服务。

注意:这不是创建一个供全世界使用的“tinyurl”服务。这是针对企业的。

拥有一个只有您的用户可以使用的短名称服务非常有用,这样您就可以创建指向内部页面的链接。您可以说“今天的午餐菜单位于http://go.example.com/lunch ” ,而不是告诉人们一个长而难懂的 URL 。博客文章记录了授权人们建立自己的链接的一些好处。(最重要的是:他们不必打扰您设置新链接!)

问题

系统的问题是 URL 仍然很长。人们宁愿在他们的网络浏览器中输入“go/lunch”并让它工作。遗憾的是,由于 HTTP 协议工作方式的技术问题,Google Apps 无法支持这一点。HTTP 1.1 中的“Host:”标头列出了用户在其 Web 浏览器中键入的域,而不是FQDN。换句话说,当 Google Apps 收到“ http://go/lunch ”的HTTP 请求时,网络服务器会收到“go”作为主机名。由于谷歌Apps的提供许多领域这项服务,如果你想它不能告诉go.example.comgo.some-other-example.com

因此,用户每次都必须输入“go.example.com/lunch”,这比“go/lunch”要长得多。

解决方案

谷歌可以通过使用网络 cookie 或其他一些方案来解决这个问题。没有一个是特别干净或容易的。在他们这样做之前,您可以通过设置自己的机器来解决问题,该机器将请求作为“go”接受并重定向它们。

服务器接受名为“go”的站点的 HTTP 请求并将请求重定向到go.example.com. 然后您创建正确的 DNS 记录以使其正常工作,并调整您的 DHCP 配置,以便您的笔记本电脑/工作站做正确的事情。

此服务器故障文档的重点是解释该过程,然后提供配置示例以帮助您为您的站点执行此操作。由于我无法访问或了解世界上的每个操作系统,因此我将其设为“社区 wiki”,以便人们可以填写配置片段以供他们使用。我已经把“TODO”放在特别需要改进的地方。

细节

在本例中,我们将使用“example.com”作为域。

第 1 步:以正常方式设置 Google Apps 服务。

go.example.com正常配置服务。测试它并确保类似的 URLhttp://go.example.com/foo有效。如果这不完整,请不要继续。这就像在你拥有一辆汽车之前试图修理你的汽车一样。

第 …

domain-name-system dhcp url service

13
推荐指数
1
解决办法
2506
查看次数

使用 puppet 修复 /etc/default/ 中已禁用的服务?

我正在使用 puppet(理论上)让 npcd 在安装时启动,但是在 Ubuntu 上,该服务随 RUN="no" 的 /etc/default/npcd 中的默认设置一起安装:

 $ cat /etc/default/npcd 
 # Default settings for the NPCD init script.

 # Should NPCD be started? ("yes" to enable)
 RUN="no"

 # Additional options that are passed to the daemon.
 DAEMON_OPTS="-d -f /etc/pnp4nagios/npcd.cfg"
Run Code Online (Sandbox Code Playgroud)

我认为这个 puppet 配置块会处理以下事情:

    service { "npcd":
       enable   => true,
       ensure   => "running",
       require  => Package["pnp4nagios"],
    }   
Run Code Online (Sandbox Code Playgroud)

但可惜,它没有,而且没有实际重写 /etc/default 中的文件,我不知道该怎么做。有没有一种直接的方法来启用我没有看到的服务?

作为记录,我使用的是 Ubuntu 12.04.2 和 puppet 版本 3.1.0。

ubuntu service puppet

13
推荐指数
3
解决办法
3952
查看次数

从 init 脚本运行任意程序作为守护进程

我需要在 Red Hat 中安装一个程序作为服务。它不后台运行、管理其 PID 文件或管理自己的日志。它只是运行并打印到 STDOUT 和 STDERR。

使用标准的 init 脚本作为指南,我开发了以下内容:

#!/bin/bash
#
#   /etc/rc.d/init.d/someprog
#
# Starts the someprog daemon
#
# chkconfig: 345 80 20
# description: the someprog daemon
# processname: someprog
# config: /etc/someprog.conf

# Source function library.
. /etc/rc.d/init.d/functions

prog="someprog"
exec="/usr/local/bin/$prog"
[ -e "/etc/sysconfig/$prog" ] && . "/etc/sysconfig/$prog"
lockfile="/var/lock/subsys/$prog"
RETVAL=0

check() {
    [ `id -u` = 0 ] || exit 4
    test -x "$exec" || exit 5
}

start() {
    check
    if [ ! …
Run Code Online (Sandbox Code Playgroud)

redhat service init.d

12
推荐指数
1
解决办法
2万
查看次数

监视配置重新加载 - 应该重新启动受监视的服务吗?

在 Ubuntu 服务器上运行 Monit 5.4。当我使用 时monit reload,它似乎会重新启动受监控的服务(在这种情况下为 Tomcat 7)。这是预期的行为吗?文档说

reload - 重新初始化正在运行的 Monit 守护进程,守护进程将重新读取其配置,关闭并重新打开日志文件。

我希望它不会重新启动任何服务,而只会重新加载它的配置,这样我就可以更改电子邮件警报和其他内容。

这是输出 monit status

The Monit daemon 5.4 uptime: 15h 0m 

Process 'tomcat7'
  status                            Running
  monitoring status                 Monitored
  pid                               38842
  parent pid                        1
  uptime                            14h 30m 
  children                          0
  memory kilobytes                  3445964
  memory kilobytes total            3445964
  memory percent                    10.4%
  memory percent total              10.4%
  cpu percent                       14.8%
  cpu percent total                 14.8%
  port response time                0.018s to localhost:80 [HTTP via TCP]
  data collected                    Tue, 17 …
Run Code Online (Sandbox Code Playgroud)

ubuntu daemon service monit

12
推荐指数
1
解决办法
2万
查看次数

Nginx 使用“service nginx start”挂起

我已经为我的生产服务器编译了带有自定义路径的 nginx,当我尝试使用以下命令启动/重新启动服务时:

service nginx start
Run Code Online (Sandbox Code Playgroud)

或者

service nginx restart
Run Code Online (Sandbox Code Playgroud)

它进入一个新行而不返回shell: 运行命令时的终端图片

所以问题是我无法使用service命令控制nginx 。该服务实际上在运行,但它不会向我返回一个 shell,所以我总是必须按ctrl+c才能将其取回。

我还必须提到 nginx 在通过自己的nginx命令调用它时运行得很好,并且使用nginx -s stop/reload.

这个问题在使用systemctl start nginx中仍然存在,但systemctl stop nginx工作得很好。

信息:

$ lsb_release -a
    Distributor ID: Ubuntu
    Description:    Ubuntu 15.10
    Release:    15.10
    Codename:   wily

$ uname -r
    4.2.0-27-generic

$ nginx -V
    nginx version: nginx/1.9.11
    built by gcc 5.2.1 20151010 (Ubuntu 5.2.1-22ubuntu2) 
    built with OpenSSL 1.0.2d 9 Jul 2015
    TLS SNI support enabled
    configure …
Run Code Online (Sandbox Code Playgroud)

ubuntu nginx service systemctl docker

12
推荐指数
2
解决办法
2万
查看次数

使用 powerhshell 作为非管理员服务帐户计划重启服务

在我被击落之前,我知道如何安排任务、使用 powershell 重新启动服务或授予非管理员帐户重新启动服务的权限。那不是问题。然而,问题是所有这三个任务的组合。

我有一个 Windows 服务需要处理网络文件夹上的文件。因此,它使用“服务帐户”登录,该帐户实际上只是一个普通的域帐户。此域帐户不是管理员,但具有对该文件夹的访问权限。该服务运行良好,并完成它的工作。

但是,有时某个文件中的错误会阻止处理其他文件。通常需要一段时间才能有人注意到并且有一些积压。

因此,我在 powershell 中创建了一个监控脚本,用于轮询网络文件夹中的这些错误文件。如果找到,文件将移动到临时文件夹以供查看,并且需要重新启动服务。

我通过组策略授予服务帐户权限来启动和停止服务。

在此处输入图片说明

当我使用服务帐户登录到服务器时,我可以使用服务 MMC 手动重新启动服务。我还能够执行 powershell 脚本,它完全按照预期执行:轮询文件夹、移动文件并重新启动服务。伟大的!

在下一阶段,我创建了一个每 10 分钟运行一次的计划任务。该任务使用与服务相同的服务帐户来执行 powershell 脚本。选中“以最高权限执行”框。就像我说的,powershell 脚本需要访问网络驱动器,所以我不能以本地服务器管理员的身份运行它,我不想使用域管理员凭据来执行这样的琐碎任务。(我尽量实现最小特权原则。)

我使用本地安全策略 MMC 在本地服务器上为服务帐户提供了“作为批处理作业登录”的权限。

现在对于我无法弄清楚的部分:在预定时间计划任务成功完成并且正在执行 powershell 脚本。脚本轮询文件夹并移动错误文件。唯一不起作用的是重新启动服务......?!同样,手动运行脚本,因为同一用户工作得很好。

我在事件查看器中看不到太多内容,但是我的脚本上的日志指出了这个错误:

TerminationError(Stop-Service): “无法在计算机 '.' 上打开服务控制管理器。此操作可能需要其他权限。”

我用来重启服务的命令是:

Stop-Service -Verbose -DisplayName $($service[1])
...
Start-Service -Verbose -DisplayName $($service[1])
Run Code Online (Sandbox Code Playgroud)

(我在 2008 R2 域上使用 Windows Server 2012 R2 和 powershell 版本 4。)

更新: 我都试过,可以通过使用SUBINACL用户的服务权限(如描述这里)和手动设置SDDL字符串(如描述在这里),所以我的控制标志是这样的(A ;; CCLCSWRPWPDTLOCRRC ;;; S-1- X-XX-XXXXXXXXXX-XXXXXXXX-XXXXXXXXX-XXXX)。我还尝试在 GPO 中将该服务的权限设置为完全控制。这些都没有解决问题。这一定是我仍然忽略的某个地方的特权问题,因为当我使用服务器上的本地管理员域帐户安排任务时,它工作得很好。

powershell service-accounts scheduled-task service windows-server-2012-r2

12
推荐指数
1
解决办法
2717
查看次数

重命名窗口服务

有没有办法重命名Windows服务?请注意,不是显示名称,而是实际名称。我似乎无法将 enum\root 中的值编辑为我想要的值,应该有更简单的方法,我就是找不到!

windows service

11
推荐指数
2
解决办法
3万
查看次数

Upstart : 在非 upstart 进程后启动服务

在 Ubuntu 10.04 上,我需要使用 upstart 启动我的服务,但前提是 mysql 启动并运行。

问题是 mysql 本身不是由 upstart 处理的,所以我不能使用“启动”功能。

我能做什么 ?

linux ubuntu service process upstart

11
推荐指数
1
解决办法
6628
查看次数

varnish 守护进程不监听配置的端口

我正在尝试在 ubuntu 16.04 上安装清漆,

我读了几篇文章都没有工作。从我读到的内容来看,从 ubuntu 15.04 开始,配置 varnish 的方式发生了变化(因为 systemd)。

现在我有一个真正的烂摊子,不起作用:


/etc/default/varnish :

DAEMON_OPTS="-a :80 \
             -T localhost:6082 \
             -f /etc/varnish/default.vcl \
             -S /etc/varnish/secret \
             -s malloc,256m"
Run Code Online (Sandbox Code Playgroud)

/etc/varnish/default.vcl(通常它指向一个指向 127.0.0 和端口 8080 的主机,但出于调试目的,我将其修改为外部域) vcl 4.0;

# Default backend definition. Set this to point to your content server.
backend default {
    .host = "www.varnish-cache.org"; 
    .port = "80";
}
Run Code Online (Sandbox Code Playgroud)

/etc/apache2/ports.conf

Listen 8080
Run Code Online (Sandbox Code Playgroud)

grep -R 'ExecStart=/usr/sbin/varnishd' /etc/

/etc/systemd/system/varnish.service:ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
/etc/systemd/system/varnish.service.d/customexec.conf:ExecStart=/usr/sbin/varnishd -a …
Run Code Online (Sandbox Code Playgroud)

ubuntu varnish service systemd ubuntu-16.04

11
推荐指数
2
解决办法
9820
查看次数

Apache 2.4 不可杀灭,无法在 Windows Server 上停止

我们有两个的Windows Server,一个在2012 R2和其他2008 R2,它使用Apache HTTP服务器httpd2.4中的代理服务器/反向代理模式(的使用ProxyPassProxyPassReverse和虚拟主机配置)。两台服务器都使用来自 Apache Haus 的Apache 2.4.27 x64二进制构建。

我们有一些备份脚本在两台服务器上运行。他们停止所有服务(包括 Apache),然后进行备份并再次重新启动所有服务。

几年来(近 4 年),这些脚本运行良好。但是从 开始July 12, 2018,行为现在很奇怪。备份脚本正在执行它们的工作,停止所有服务,进行备份,但是现在,除 Apache 之外的所有服务都重新启动。

经过排查,发现Apache 2.4.27服务无法停止。使用服务控制台并尝试手动停止服务时,控制台显示“正在停止”并且没有任何反应。

所以我检查了正在运行的进程,看到一个httpd.exe进程正在运行。我试图终止该进程,但没有运气。

所以,我试过:

taskkill /im "httpd.exe" /f /t
Run Code Online (Sandbox Code Playgroud)

输出是:

ERROR: The process with PID 560 (child process of PID 480) could not be terminated.
Reason: There is no running instance of the task.
Run Code Online (Sandbox Code Playgroud)

所以我测试了pskill从 Sysinternals …

httpd service windows-server-2008-r2 windows-server-2012-r2 apache-2.4

11
推荐指数
1
解决办法
9161
查看次数