Articles of bash

在模板中使用Address not ServiceAddress的consul-template

我有一个问题,在领事模板似乎是代替服务“ServiceAddress”,而不是“地址”在我的模板,我不知道是否有人可以告诉我为什么。 从我的nginx容器中的consul-template也在运行的bash会话中,我可以从Consul中获取服务定义: curl http://consul-server.service.consul:8500/v1/catalog/service/service1 [{"Node":"ip-172-31-24-202","Address":"172.31.24.202","ServiceID":"ip-172-31-24-202:service1:23141","ServiceName":"service1","ServiceTags":null,"ServiceAddress":"172.17.0.3","ServicePort":32809}] 我的领事模板模板文件如下所示: {{range service "service1"}}server {{.Address}}:{{.Port}}; 我期望这将输出Address ,而不是ServiceAddress 。 但是,下面发生: consul-template -consul consul-server.service.consul:8500 -template "/var/templates/service1.conf.tmpl" -dry -once server 172.17.0.3:32809

使用Dockerconfigurationuwsgi和nginx

在这个链接之后,我为python生产服务器分别configuration了uwsgi和nginx 。 我已经configuration他们与工作configuration分开。 我的uwsgi本身工作得很好,单独的nginx工作正常。 我的问题是我打算使用docker进行此设置,并且无法同时运行uwsgi和nginx ,即使我正在使用bash文件。 以下是我的configuration中的相关部分。 Dockerfile : #python setup RUN echo "daemon off;" >> /etc/nginx/nginx.conf RUN rm /etc/nginx/sites-enabled/default RUN ln -s mysite.conf /etc/nginx/sites-enabled/ EXPOSE 80 CMD ["/bin/bash", "start.sh"] mysite.conf upstream django { # server unix:///path/to/your/mysite/mysite.sock; # for a file socket server 127.0.0.1:8001; # for a web port socket } server { listen 80; […]

Docker容器closures脚本

当closures容器时,有没有办法让bash脚本执行? 用例: 有一个主容器运行nginx + php-fpm 有一个foo (项目)容器使用卷和链接到主 Ubuntu 14.04被用作所有图像的基础 当foo启动时,它会在vhostconfiguration文件中为nginx使用(以及将项目添加到webroot等等) 我们想要实现的是,当foo被停止时,它将执行清理(删除vhosts文件,从webroot中删除项目等) 设置/ etc / rcX / KX-cleanup不起作用。 唯一的另外一个select就是在entryscript中有一个bash-sigterm监听器在无限循环中(这会浪费宝贵的CPU周期吗?)

如何input这个dockerfile / nginx容器?

在Docker容器中使用centos,我只需键入'docker attach container ID',它将我带到shell提示符处,在那里我可以安装和configurationnginx。 这一个更容易: docker.com dockerfile / nginx你只要运行该文件,一切都安装和configuration。 但我不知道如何进入和访问文件。

用awk或sedreplace和增加字母和数字

我有一个包含的string fastcgi_cache_path /var/run/nginx-cache15 levels=1:2 keys_zone=MYSITEP:100m inactive=60m; 这个脚本的目标之一就是根据前一个文件的值查找来增加nginx-cache的两位数字。 为了做到这一点,我使用这个代码: # Replace cache_path PREV=$(ls -t /etc/nginx/sites-available | head -n1) #find the previous cache_path number CACHE=$(grep fastcgi_cache_path $PREV | awk '{print $2}' |cut -d/ -f4) #take the string to change SUB=$(echo $CACHE |sed "s/nginx-cache[0-9]*[0-9]/&@/g;:a {s/0@/1/g;s/1@/2/g;s/2@/3/g;s/3@/4/g;s/4@/5/g;s/5@/6/g;s/6@/7/g;s/7@/8/g;s/8@/9/g;s/9@/@0/g;ta};s/@/1/g") #increment number sed -i "s/nginx-cache[0-9]*/$SUB/g" $SITENAME #replace number 也许不是那么优雅,但它的作品。 另一个目标是增加所有出现的MYSITE x的最后一个字母( MYSITEP ,在这种情况下,应该变成MYSITE […]

bash函数对nginx文件进行完整性检查

我试图编写一个函数来执行文件的健全性检查,然后将它们移动到/etc/nginx/site-available 。 有位于我的主目录,并定期修改。 这些文件中所做的唯一修改是添加一个server_name 。 他们看着像是: server { listen 80; server_name domain.com; server_name www.domain.com; server_name mynsite1.com; server_name www.mysite1.com; server_name mysite2.com; server_name www.mysite2.com; server_name mysite3.com; server_name www.mysite3.com; server_name mysite4.com; server_name www.mysite4.com; access_log /var/log/nginx/domain.com-access.log main; error_log /var/log/nginx/domain.com-error.log warn; root /var/www/docroot; index index.php index.html index.htm; location / { try_files $uri /app_dev.php; } # redirect server error pages to […]

parsingnginx访问日志并提取IP,检测每个parsing的IP的地理位置

我有问题parsingnginx访问日志, 在这段代码中有错误<<< grep "pagename" <<< "$line0" 不工作grep "pagename" while IFS= read -r line0 do ipList=$( grep -oP '\b(?:(?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2}))\b' <<< grep "pagename" <<< "$line0") for oneIP in $ipList do curl -s "http://ipinfo.io/$oneIP" done done < /var/log/nginx/access.log 谢谢。

bash脚本语法错误:单词意外(期待“做”)

我试图在我的nginx服务器上运行这个dropbox脚本,但即时通讯: Syntax error: word unexpected (expecting "do") 我复制粘贴脚本的网站,我试图删除特殊字符,但我仍然得到相同的错误。 脚本: #!/bin/sh # /etc/init.d/dropbox ### BEGIN INIT INFO # Provides: dropbox # Required-Start: $network $syslog $remote_fs # Required-Stop: $network $syslog $remote_fs # Should-Start: $named $time # Should-Stop: $named $time # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start and stop the dropbox […]

在新的Ubuntu 16.04服务器上使用SSL脚本编写新的nginx实例的正确方法是什么?

我有这个到目前为止,但我错过了一些像获取cron作业脚本的东西。 不想以root身份执行此操作。 所以我假设可以做更多的事情来同时build立第一个用户。 脚本需要是幂等的(如果以前使用相同的参数运行,可以反复运行而不会冒险改变任何东西)。 singledomaincertnginx.sh: #!/bin/bash if [ -z "$3" ]; then echo use is "singledomaincertnginx.sh <server-ssh-address> <ssl-admin-email> <ssl-domain>" echo example: "singledomaincertnginx.sh user@mydomain.com admin@mydomain.com some-sub-domain.mydomain.com" exit fi ssh $1 "cat > ~/wks" << 'EOF' #!/bin/bash echo email: $1 echo domain: $2 sudo add-apt-repository -y ppa:certbot/certbot sudo apt-get update sudo apt-get upgrade -y sudo apt-get install […]

如何在构build脚本中使用sudo gitlab ci?

当我想要做一些需求的时候,构build过程就会陷入困境,当ps aux命令执行时,它会挂在列表中,但什么都不做。 例如: 在buildscript中: # stop nginx echo "INFO: stopping nginx. pid [$(cat /opt/nginx/logs/nginx.pid)]" sudo kill $(cat /opt/nginx/logs/nginx.pid) 在gitlab ci输出控制台中: INFO: stopping nginx. pid [2741] kill $(cat /opt/nginx/logs/nginx.pid) # with a spinning wheel 在bash中: > ps aux | grep nginx root 6698 0.0 0.1 37628 1264 ? Ss 19:25 0:00 nginx: master process /opt/nginx/sbin/nginx nobody […]