CentOS 7 安装.NET Core 2.0

一. 添加dotnet产品Feed

在安装.NET Core之前,您需要注册Microsoft产品Feed。 这只需要做一次。 首先,注册Microsoft签名密钥,然后添加Microsoft产品Feed。

sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc

sudo sh -c 'echo -e "[packages-microsoft-com-prod]nname=packages-microsoft-com-prod nbaseurl=https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prodnenabled=1ngpgcheck=1ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/dotnetdev.repo'

二. 安装 .NET Core SDK

请先从系统中删除任何以前的预览版本的.NET Core,然后再进行下一步。

以下命令更新可用于安装的产品列表,安装.NET Core所需的组件,然后安装.NET Core SDK。

sudo yum update
sudo yum install libunwind libicu
sudo yum install dotnet-sdk-2.0.0

三. 编写代码验证安装

使用命令新建一个控制台应用程序

dotnet new console -o hwapp
cd hwapp

该命令将会新建一个 Program.cs 文件,将会输出“Hello Word”

四. 运行程序

dotnet run

输出“Hello Word”代表.net core已经正确安装,现在你可以正常使用它

未分类

官网:https://www.microsoft.com/net/core#linuxcentos

CentOS 6/7修改主机名hostname

CentOS 7

RHEL 7新增了hostnamectl命令,基于RHEL 7的CentOS 7相应的可以使用hostnamectl来修改主机名。

hostnamectl把主机名分为以下三种:

  • 静态主机名:hostnamectl用来在系统启动时初始化内核的主机名。
  • 瞬态主机名:由DHCP等一些系统临时分配的主机名,如果系统存在静态主机名且有效,则不会用到瞬态主机名。
  • pretty主机名:静态和瞬态主机名都是要符合域名的字符串,而pretty主机名则可以包含其他一些特殊字符。

查看主机名

使用hostnamectl或hostnamectl status查看主机信息

[root@myhostname ~]# hostnamectl
  Static hostname: myhostname
Transient hostname: transientName
     Icon name: computer-vm
      Chassis: vm
    Machine ID: xxxxxxxx
      Boot ID: xxxxxxxx
  Virtualization: kvm
 Operating System: CentOS Linux 7 (Core)
    CPE OS Name: cpe:/o:centos:centos:7
      Kernel: Linux 3.10.0-693.2.2.el7.x86_64
   Architecture: x86-64

设置主机名

使用hostnamectl的set-hostname命令设置主机名。

[root@myhostname ~]# hostnamectl set-hostname test
[root@myhostname ~]# hostnamectl
  Static hostname: test
     Icon name: computer-vm
      Chassis: vm
    Machine ID: xxxxxxxx
      Boot ID: xxxxxxxx
  Virtualization: kvm
 Operating System: CentOS Linux 7 (Core)
    CPE OS Name: cpe:/o:centos:centos:7
      Kernel: Linux 3.10.0-693.2.2.el7.x86_64
   Architecture: x86-64

对比两次的hostname,使用hostnamectl set-hostname test后,Transient hostname已被删除。

注意到hostname设置为test后,终端提示还是root@myhostname,退出重新登录即会显示新的hostname。

设置瞬态主机名

hostnamectl set-hostname --transient transientName

设置静态主机

hostnamectl set-hostname --static  staticName

单独设置静态主机名,设置静态主机名为永久修改主机名,重启机器不会影响。

设置静态主机名实际是会修改/etc/hostname文件的主机名,系统重启时会读取/etc/hostname来初始化内核主机名。

设置pretty主机名

hostnamectl set-hostname --pretty prettyName

CentOS 6

永久修改主机名

CentOS 6永久修改主机名需要修改两个文件/etc/sysconfig/network和/etc/hosts。

/etc/sysconfig/network修改HOSTNAME的值

HOSTNAME=myNewHostName

为了避免出现一些其他问题,修改/etc/hosts里的hostname。

修改后重启服务器reboot。

运行时修改主机名

使用hostname命令可以在不重启主机的情况下修改主机名。

hostname newhostname

重启机器后,主机名会重新变为原来的主机名。

CentOS 7 时区、日期时间查看以及设置杂烩

网络时间协议 NTP(Network Time Protocol)

安装

yum install ntp

当前本地时间更新为中国标准时间

ntpdate cn.pool.ntp.org

Timedatectl 命令

查看当前时区、日期、时间状态 timedatectl [status]

Local time: Tue 2017-10-31 15:08:42 CST
Universal time: Tue 2017-10-31 07:08:42 UTC
RTC time: Tue 2017-10-31 15:08:42
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: yes
DST active: n/a

Timedatectl Commands

status                   Show current time settings
set-time TIME            Set system time
set-timezone ZONE        Set system time zone
list-timezones           Show known time zones
set-local-rtc BOOL       Control whether RTC is in local time
set-ntp BOOL             Control whether NTP is enabled

部分命令示例

# 设置时区
timedatectl set-timezone Asia/Shanghai

# 本地时间写入硬件时钟
timedatectl set-local-rtc 1

# 开启 NTP 同步
timedatectl set-ntp 1

# 设置时分秒
timedatectl set-time 13:12:12

# 设置年月日
timedatectl set-time 2017-10-29 # 执行后,时分秒变成 00:00:00

# 设置年月日时分秒
timedatectl set-time '2017-10-29 14:12:12'

timedatectl 使用 set-time 设置时间时,timedatectl 的 ntp 需要为关闭状态

其它杂烩

ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
clock -w
date
date -s 13:12:12
date -s 2017-12-12
date -s '2017-11-11 11:11:11'

Centos禁止ping的设置

网站攻击一般是从ping开始的,黑客攻击网站前会先ping下服务器看其是否在线,所以如果服务器禁止ping,可以有效减少服务器被攻击次数。Centos系统默认是允许ping的,如你有服务器root账户管理权限,可以通过修改Centos系统内核参数永久禁止ping。

编辑/etc/sysctl.conf,

vi /etc/sysctl.conf

在/etc/sysctl.conf最后增加以下内容:

net.ipv4.icmp_echo_ignore_all=1

保存后执行sysctl -p命令配置生效。

sysctl -p

配置生效后,ping服务器收不到任何响应,ping被永久禁止。

可能某天你需要服务器允许ping了,可以删除/etc/sysctl.conf文件中的“net.ipv4.icmp_echo_ignore_all=1”或者将其修改为“net.ipv4.icmp_echo_ignore_all=0”,然后执行sysctl -p命令使配置生效,配置生效后服务器又可以正常被ping通了。

Centos 7上使用Docker安装Mysql

介绍

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。官网: https://www.licoy.cn/go/?url=https://www.docker.com/

未分类

正文

首先,我们需要一台Centos64位的服务器,建议其内核版本>3.8,然后安装docker

yum install -y docker 

然后可以查看是否安装成功,输入以下命令

docker -v

安装成功之后,直接启动docker服务

service docker start

为了使安装更快,建议使用阿里云加速镜像:点此进入,获取自己的加速镜像地址,然后在终端执行:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["你的加速地址"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

下载mysql镜像:

docker pull mysql

查看所有的镜像,看看是否下载成功:

docker images

建立一个mysql容器:

sudo docker run --name docker_mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d docker.io/mysql restart=always  
  • –name 容器的别称。

  • -p 端口映射。格式是 主机的端口:容器的端口。这里2个都是3306,所以是3306:3306

  • -e 设置容器的环境变量。-e MYSQL_ROOT_PASSWORD=123456就代表mysql的root的密码是123456

  • -d 使用镜像包名称,可以通过docker images查看

  • restart=always, 告诉docker,这个容器要自动启动

查看mysql容器是否建立成功并启动:

docker ps -a

如果是以下的内容,则说明容器建立成功,反之失败:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
dfb04d622b50        docker.io/mysql     "docker-entrypoint.sh"   6 minutes ago       Up 6 minutes        0.0.0.0:3306->3306/tcp   docker_mysql 

到这一步,我们就可以使用Navicat等相关工具进行连接,如果连接成功则一切都完成了,如果是使用ecs等云服务器记得开放相关端口。

后记

在这次安装mysql的过程中真的体验到docker的好处,比起传统的mysql的安装方式省去了很多的步骤,而且可以启动通过命令启动多个mysql容器,方便至极!

解决阿里云CentOS 7重启后网站无法访问的问题

摘要

每次阿里云主机重启后,总是无法访问网站。查看进程也发现了 mysqld、php、nginx等都也启动了,ping 也没问题,但就是无法访问。经过一番排查,这是 CentOS 7 最新的 firewalld 防火墙引起的问题。

未分类

参考解决方案

用iptables-services来替代 firewalld

yum -y install iptables-services
systemctl mask firewalld
systemctl enable iptables
systemctl stop firewalld
systemctl start iptables

然后再修改 iptables 的防火墙规则。修改文件 /etc/sysconfig/iptables,将 80 和 443等 端口放行,问题解决

完整内容如下:

# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

centos重新安装,卸载python yum

公司测试机环境不知道给我卸了什么包,导致yum运行报错状况:

  • 系统版本:Red Hat Enterprise Linux Server release 6.2 (Santiago)

  • 内核版本:2.6.32-220.el6.x86_64

  • 报错情况:

There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:

No module named sqlite

Please install a package which provides this module, or
verify that the module is installed correctly.

It’s possible that the above module doesn’t match the
current version of Python, which is:

一、升级或卸载Python导致

1、查看已安装python的版本,可能是当前系统存在多个python导致

[root@test ~]# whereis python
python: /usr/bin/python2.6 /usr/bin/python /usr/bin/python2.6-config /usr/lib/python2.6 /usr/lib64/python2.6 /usr/include/python2.6 /usr/share/man/man1/python.1.gz
[root@test ~]# vi /usr/bin/yum

将 #!/usr/bin/python 修改为 #!/usr/bin/python2.6

如果是源代码安装的,默认路径是/usr/local/bin/python2.6,做个软链接即可

rm -rf /usr/bin/python
ln -s /usr/local/bin/python2.6 /usr/bin/python

二、完全重装python和yum

1、删除现有Python

[root@test ~]# rpm -qa|grep python|xargs rpm -ev --allmatches --nodeps ##强制删除已安装程序及其关联
[root@test ~]# whereis python |xargs rm -frv ##删除所有残余文件 ##xargs,允许你对输出执行其他某些命令
[root@test ~]# whereis python ##验证删除,返回无结果

2、删除现有的yum

[root@test ~]# rpm -qa|grep yum|xargs rpm -ev --allmatches --nodeps
[root@test ~]# whereis yum |xargs rm -frv

3、从http://mirrors.ustc.edu.cn/centos/6.4/os/x86_64/Packages/下载相应的包

python-2.6.6-36.el6.x86_64.rpm
python-devel-2.6.6-36.el6.x86_64.rpm
python-libs-2.6.6-36.el6.x86_64.rpm
python-pycurl-7.19.0-8.el6.x86_64.rpm
python-setuptools-0.6.10-3.el6.noarch.rpm
python-urlgrabber-3.9.1-8.el6.noarch.rpm  
python-iniparse-0.3.1-2.1.el6.noarch.rpm
rpm-python-4.8.0-32.el6.x86_64.rpm
yum-3.2.29-40.el6.centos.noarch.rpm
yum-metadata-parser-1.1.2-16.el6.x86_64.rpm
yum-utils-1.1.30-14.el6.noarch.rpm
yum-plugin-fastestmirror-1.1.30-14.el6.noarch.rpm     
yum-plugin-protectbase-1.1.30-14.el6.noarch.rpm
yum-plugin-aliases-1.1.30-14.el6.noarch.rpm
yum-plugin-downloadonly-1.1.30-14.el6.noarch.rpm

由于源中版本会更新,具体请查看URL中的版本再下载下来!

[root@test ~]# rpm -Uvh --replacepkgs python*.rpm
[root@test ~]# rpm -Uvh --replacepkgs rpm-python*.rpm yum*.rpm

可能之间还需要zlib和zlib-devel包,根据情况下载并安装!

三、运行python进行测试

[root@test ~]# python
Python 2.6.6 (r266:84292, Feb 22 2013, 00:00:18)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import yum
>>>

如上,要是什么都没报,则说明OK啦~

Centos 6 断网情况下如何安装软件包

问题如下

比如我们安装nginx的时候需要依赖openssl,在有网络的情况下我们可以流畅的执行如下命令

yum -y install openssl openssl-devel

但是再实际部署中我们的服务器可能是没有网络的,那么在这种情况下我们如何处理呢,openssl需要依赖的rpm包好多,而且有依赖项,如何一个个找出顺序,会比较麻烦

未分类

方法一 安装的时候强制全部安装(但是必须要所以的rpm包都安装)

方法二 定制本地yum源(就能继续使用yum命令了)

首先找到rpm包

上面所说的两种方式都必须找到安装openssl所需要的rpm包,那么这些rpm包从哪里来呢?那么首先先理解下yum安装为什么方便,说白了就是安装的时候把你安装openssl所需要的rpm包全部down下来了,然后安装的时候自动匹配依赖项,所以yum安装的时候会down下依赖包,所以思路就是从yum命令中找出下载rpm包

1. 在虚拟机上面安装一个CentOS(网络选择NAT模式),然后下载一个yum插件用来执行只下载的命令

# 
yum install yum-plugin-downloadonly

2. 执行命令

# 命令的意思是下载openssl的相关rpm 比保存到/opt/yums目录下面
yum install --downloadonly --downloaddir=/opt/yums openssl

方法一 强制安装rpm包

#简单粗暴
rpm -i --force --nodeps *.rpm

方法二 定制自己的yum源

默认yum源是https联网到repository,但是我们可以定义一个源,而地址是指向本地,所以我们需要做的工作是

  • 制作repository
  • 替换Centos中的yum源

制作repository

#下载插件
yum install createrepo
# 第一次执行 CentOS6里面包含了各种rmp包
createrepo CentOS6
# 以后添加rpm包更新源
createrepo --update CentOS6

未分类

替换Centos中的yum源

cd /etc/yum.repos.d/
vi CentOS-Local.repo

输入如下命令

[base-local]
name=CentOSLocal
baseurl=file:///opt/CentOS6/
# 不对rmp包检查
gpgcheck=0

保存以后执行如下命令

# 清除缓存
yum clean all
# 列出可用仓库
yum repolist

然后我们就可以愉快的使用yum命令了。

ansible安装测试

apt-get install ansible
/etc/ansible/hosts增加

[nginx]
192.168.1.106

/etc/ansible/playbook/
roles site.yaml
site.yaml

- hosts: nginx
  remote_user: root

  roles:

roles/
bash nginx
playbook/roles/bash/tasks/main.yal

- name: 创建用户
  user: name=toy state=present

ls playbook/roles/nginx/

drwxr-xr-x 9 root root 4096 Jul 31 09:54 .
drwxr-xr-x 4 root root 4096 Jul 31 11:15 ..
drwxr-xr-x 2 root root 4096 Jul 31 09:54 default
drwxr-xr-x 2 root root 4096 Aug  1 10:16 files
drwxr-xr-x 2 root root 4096 Jul 31 11:14 handlers
drwxr-xr-x 2 root root 4096 Jul 31 09:54 meta
drwxr-xr-x 2 root root 4096 Aug 29 09:31 tasks
drwxr-xr-x 2 root root 4096 Jul 31 11:14 templates
drwxr-xr-x 2 root root 4096 Jul 31 09:54 vars

cat playbook/roles/nginx/handlers/main.yml

- name: server restart
  service: name=nginx state=restarted

cat playbook/roles/nginx/tasks/main.yml

- include: user.yml
#- name: delsteamshell
#  copy: src=delsteam.sh dest=/tmp/delsteam.sh
#- name: run delsteamshell 
#  shell: /tmp/delsteam.sh

cat playbook/roles/nginx/tasks/main.yml.bak

#- include: user.yml
- name: install nginx
  shell: apt-get install -y nginx-full
- name: provides default.conf
  copy: src=default.conf dest=/etc/nginx/nginx.conf
  tags: nginxconf
  notify:
   - server restart
- name: server start
  service: name=nginx enabled=true state=started

cat playbook/roles/nginx/tasks/user.yml

- name: 创建用户
  user: name=toy state=present

ansible 角色定义及调用(nginx)

Roles的介绍

Roles是ansible自1.2版本引入的新特性,用于层次性,结构化地组织playbook,roles能够根据层次型结构自动自动装在变量文件、tasks以及handlers等。

创建roles的步骤

  • 创建以roles命名的目录:

  • 在roles目录中分别创建以各角色名称命名的目录,如webservers等:

  • 在每个角色命名的目录中分别创建files、handlers、meta、tasks、templates和vars目录:用不到的目录可以创建为空目录,也可以不创建

  • 在playbook文件中,调用各角色

roles内各目录中可用的文件

  • tasks目录:至少创建一个名为main.yml的文件,其定义了此角色的任务列表:此文件可以使用include包含其他的位于此目录中的tasks文件

  • files目录:存放由copy或者script等模块调用的文件

  • templates目录:templates模块会自动在此目录中寻找模板文件

  • handlers目录:此目录中应当包含一个main

  • yml文件:用于定义此角色用到的各handler:在handler中使用include包含的其他的handler文件也应该位于此目录中

  • vars目录:应当包含一个main.yml文件,用于定义此角色用到的变量

  • meta目录:应当包含一个main.yml文件,用于定义此角色的特殊设定及其依赖关系:ansible 1.3及其以后的版本才支持

  • default目录:为当前角色定义默认变量时使用此目录,应该包含一个main.yml文件

实验环境

ansible:10.0.0.128
client :10.0.0.131

执行

1. 在服务器生成免密钥文件,推送到客户端

[root@ansible ~]# ssh-keygen 
[root@ansible ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]

2. 安装ansible

[root@ansible ~]# yum install -y ansible

3. 到/etc/ansible 有个可以自定义roles的目录

[root@ansible ~]# cd /etc/ansible/
[root@ansible ansible]# ls
ansible.cfg  hosts  nginx.yaml  roles

4. 定义要执行的角色路径

[root@ansible ~]# cat /etc/ansible/nginx.yaml 
- hosts: 10.0.0.131
  remote_user: root
  roles:
  - nginx

5. 定义掩码安装nginx,在roles目录下的目录及文件都要自己创建

[root@ansible roles]# ls
nginx
[root@ansible roles]# cd nginx
[root@ansible nginx]# ls
files  handlers  tasks  templates  vars
[root@ansible ansible]# cd roles/
[root@ansible roles]# tree
.
└── nginx
    ├── files
    │   └── nginx-1.12.0.tar.gz
    ├── handlers
    │   └── main.yml
    ├── tasks
    │   └── main.yml
    ├── templates
    │   └── nginx.conf
    └── vars
        └── main.yml

6 directories, 5 files

6. 进入tasks目录创建任务

[root@ansible nginx]# cat tasks/main.yml 
- name: copy nginx packup to remote host
 copy: src=nginx-1.12.0.tar.gz dest=/usr/local/src/nginx-1.12.0.tar.gz
 tags: cppkg
- name: tar nginx
 shell: cd /usr/local/src/; tar -xf nginx-1.12.0.tar.gz
- name: install packger
 yum: name={{ item }} state=latest
 with_items:
   - openssl-devel
   - pcre-devel
   - gcc
- name: useradd
 shell: useradd nginx -s /sbin/nologin
- name: install nginx
 shell: cd /usr/local/src/nginx-1.12.0;./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre;make && make install
- name: copy conf file nginx.conf
 template: src=nginx.conf dest=/usr/local/nginx/conf/nginx.conf
 notify: start nginx

7. 存放nginx压缩包目录

[root@ansible nginx]# ls files/
nginx-1.12.0.tar.gz    ##对应tasks第二行

8. template这一行对应的是template这个目录和主服务端定义的变量

[root@ansible nginx]# cat templates/nginx.conf 
#user  nobody;
worker_processes  
{{ ansible_processor_vcpus }};
#pid        logs/nginx.pid;
events {
    worker_connections  65532;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    #gzip  on;
    server {

     listen       {{ ngxport }};
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            root   /web;
            index  index.html index.htm;
        }
        #error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        #location ~ .php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}
    }
    include vhosts/*.conf;
}

9. 查看我们定义的变量,在vars目录下

[root@ansible nginx]# cat vars/main.yml 
ngxport: "8080"

10. 编辑触发器

[root@ansible nginx]# cat handlers/main.yml 
- name: start nginx     
  shell: /usr/local/nginx/sbin/nginx

11. 开始执行

[root@ansible nginx]# ansible-playbook -C /etc/ansible/nginx.yaml(测试)
[root@ansible nginx]# ansible-playbook  /etc/ansible/nginx.yaml 

PLAY [10.0.0.131] ************************************************************* 

GATHERING FACTS *************************************************************** 
ok: [10.0.0.131]

TASK: [nginx | copy nginx packup to remote host] ****************************** 
changed: [10.0.0.131]

TASK: [nginx | tar nginx] ***************************************************** 
changed: [10.0.0.131]

TASK: [nginx | install packger] *********************************************** 
ok: [10.0.0.131] => (item=openssl-devel,pcre-devel,gcc)

TASK: [nginx | useradd] ******************************************************* 
changed: [10.0.0.131]

TASK: [nginx | install nginx] ************************************************* 
changed: [10.0.0.131]

TASK: [nginx | copy conf file nginx.conf] ************************************* 
changed: [10.0.0.131]

NOTIFIED: [nginx | start nginx] *********************************************** 
changed: [10.0.0.131]

PLAY RECAP ******************************************************************** 
10.0.0.131                 : ok=8    changed=6    unreachable=0    failed=0   

12. 查看client客户端nginx服务已经启动

[root@zxb4 ~]# ps -ef |grep nginx
root      34655      1  0 02:13 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx     34656  34655  1 02:13 ?        00:00:01 nginx: worker process
root      34660  28130  0 02:16 pts/1    00:00:00 grep --color=auto nginx
[root@zxb4 ~]# netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      34655/nginx: master 

附加

假如我们经常要增加nginx站点,直接写好模板推送到vhos目录:

[root@ansible templates]# cat temp_server.conf
server
{
listen80;
server_name{{ server_name }};
indexindex.php index.html;
root {{root_dir }};
}

在vars定义变量:

[root@ansible vars]# cat main.yml
ngxport:"8080"
server_name:"www.xxx.com"
root_dir:"/web"

重写tasks步骤:

[root@ansible tasks]# cat main.yml
- name:copy conf file nginx.conf          # 调用templates模块
  template: src=temp_server.conf dest=/usr/local/nginx/conf/vhosts/{{server_name }}.conf
  tags: ngxconf
  notify: reload nginx service                # 调用handlers模块