首页 文章 精选 留言 我的

精选列表

搜索[centos],共5665篇文章
优秀的个人博客,低调大师

【系列6】使用Dockerfile创建带LAMP的Centos Docker镜像

LAMP值的Linux (操作系统)、ApacheHTTP服务器、MySQL(有时也指MariaDB,数据库软件)和PHP(有时也是指Perl或Python)的组合方案,一般很适合用来建立Web服务器环境。 ① 下载LAMP镜像: 下面介绍如何使用Docker来搭建一个包含LAMP组件的容器。 [root@docker1 ~]# docker search -s 10 lamp Flag --stars has been deprecated, use --filter=stars=3 instead INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/linode/lamp LAMP on Ubuntu 14.04.1 LTS Container 121 docker.io docker.io/tutum/lamp Out-of-the-box LAMP image (PHP+MySQL) 68 docker.io docker.io/greyltc/lamp a super secure, up-to-date and lightweight... 65 [OK] docker.io docker.io/reinblau/lamp [Deprecated]Dockerfile for PHP-Projects wi... 28 [OK] ...... [root@docker1 ~]# docker pull tutum/lamp Using default tag: latest Trying to pull repository docker.io/tutum/lamp ... latest: Pulling from docker.io/tutum/lamp 8387d9ff0016: Pull complete 3b52deaaf0ed: Pull complete 4bd501fad6de: Pull complete a3ed95caeb02: Pull complete 790f0e8363b9: Pull complete 11f87572ad81: Pull complete 341e06373981: Pull complete 709079cecfb8: Pull complete 55bf9bbb788a: Pull complete b41f3cfd3d47: Pull complete 70789ae370c5: Pull complete 43f2fd9a6779: Pull complete 6a0b3a1558bd: Pull complete 934438c9af31: Pull complete 1cfba20318ab: Pull complete de7f3e54c21c: Pull complete 596da16c3b16: Pull complete e94007c4319f: Pull complete 3c013e645156: Pull complete Digest: sha256:d332e7e97606ac6407b0ba9ae9e9383c89d7e04c6f4853332e98f7d326408329 ② 使用默认方式启动LAMP容器: 利用下载的镜像启动一个容器,并映射容器的8080端口和3306端口: [root@docker1 ~]# docker run -d -p 8080:80 -p 3306:3306 tutum/lamp ec3c2c2b04ddda0110f6488ac4c2b958e5e834613d1c637bbaba8f628c6e461e [root@docker1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ec3c2c2b04dd tutum/lamp "/run.sh" 4 seconds ago Up 3 seconds 0.0.0.0:3306->3306/tcp, 0.0.0.0:8080->80/tcp hungry_leavitt 使用curl命令测试,可以查看到默认的应用已经启动: [root@docker1 ~]# curl http://127.0.0.1:8080 返回的内容如下: <html> <head> <title>Hello world!</title> <style> body { background-color: white; text-align: center; padding: 50px; font-family: "Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif; } #logo { margin-bottom: 40px; } </style> </head> <body> <img id="logo" src="logo.png" /> <h1>Hello world!</h1> <h2>MySQL Server version: 5.5.47-0ubuntu0.14.04.1</h2> </body> ③ 部署自己的PHP应用 默认的容器启动了一个helloword应用。读者可以基于此镜像,编辑Dockerfile来创建自定义LAMP应用镜像。 在宿主主机上创建新的工作目录LAMP: [root@docker1 ~]# mkdir LAMP [root@docker1 ~]# cd LAMP [root@docker1 LAMP]# touch Dockerfile 在php目录下里面创建Dockerfile文件,内容为 [root@docker1 LAMP]# vi Dockerfile FROM tutum/lamp:latest RUN rm -fr /app && git clone https://github.com/username/customapp.git /app #这里将https://github.com/username/customapp.git /app替换/app里面的文件 EXPOSE 80 3306 CMD ["/run.sh"] 创建镜像,命名为dockerpool/my-lamp-app: [root@docker1 LAMP]# docker build -t dockerpool/my-lamp-app . 利用新创建镜像启动容器,注意启动时候指定-d参数,让容器后台运行: [root@docker1 LAMP]# docker run -d -p 8080:80 -p 3306:3306 dockerpool/my-lamp-app 在本地主机上使用curl看一下自己的应用程序是不是已经正确启动: [root@docker1 LAMP]# curl http://127.0.0.1:8080/ ④ 在PHP程序中连接数据库 1. 在容器中访问MySQL数据库 下载的tutum/lamp镜像中的MySQL数据库已带有默认的root用户,本地连接可以不使用密码,所以在代码中访问数据库的实现非常简单: <?php $mysql = new mysqli("localhost", "root"); echo "MySQL Server info: ".$mysql->host_info; ?> 2. 在容器外访问MySQL数据库 默认的MySQL数据库不支持root用户远程登录,因此在容器外无法直接通过root用户访问MySQL数据库。 当第一次使用tutum/lamp镜像启动容器的时候,它会自动创建一个叫admin的MySQL用户,并生成一个随机密码,使用docker logs命令可以获取到这个密码: [root@docker1 LAMP]# docker logs ec3c2c2b04dd => An empty or uninitialized MySQL volume is detected in /var/lib/mysql => Installing MySQL ... => Done! => Waiting for confirmation of MySQL service startup => Creating MySQL admin user with random password => Done! ======================================================================== You can now connect to this MySQL Server using: mysql -uadmin -p8fMyJd458mqd -h<host> -P<port> Please remember to change the above password as soon as possible! MySQL user 'root' has no password but only allows local connections ======================================================================== 本文转自 Mr_sheng 51CTO博客,原文链接:http://blog.51cto.com/sf1314/2056639

优秀的个人博客,低调大师

RDO CentoS 7.1部署 kilo 问题及处理办法

OpenStack kilo debug 汇总 1, openstack kilo 部署 nova-network 问题 1 2 3 4 5 6 7 8 9 10 ERROR:ErrorappearedduringPuppetrun:192.168.102.26_nova.pp Error:Executionof '/usr/bin/novanetwork-createnovanetwork--fixed-range-v4192.168.88.0/28' returned1:ERROR(CommandError):Youmustprovideausernameoruser id via--os-username,--os-user- id , env [OS_USERNAME]or env [OS_USER_ID] Youwill find fulltrace in log /var/tmp/packstack/20150916-095300-hKJi_X/manifests/192 .168.102.26_nova.pp.log Pleasechecklog file /var/tmp/packstack/20150916-095300-hKJi_X/openstack-setup .log for more information Additionalinformation: *Timesynchronizationinstallationwasskipped.Pleasenotethatunsynchronized time onserverinstancesmightbeproblem for someOpenStackcomponents. *File /root/keystonerc_admin hasbeencreatedonOpenStackclienthost192.168.102.26.Tousethe command linetoolsyouneedto source the file . *ToaccesstheOpenStackDashboardbrowsetohttp: //192 .168.102.26 /dashboard . Please, find yourlogincredentialsstored in thekeystonerc_admin in yourhomedirectory. [root@openstack1~] #/usr/bin/novanetwork-createnovanetwork--fixed-range-v4192.168.88.0/28 1 2 3 4 5 6 7 解决办法: 查看错误日志,分析错误原因 vim /usr/lib/python2 .7 /site-packages/packstack/modules/puppet .py 104 #message=('ErrorappearedduringPuppetrun:%s\n%s\n' 105 #'Youwillfindfulltraceinlog%s'% 106 #(manifestfile,error,logpath)) 107 #raisePuppetError(message) 2, openstack kilo 中http 部署启动异常 1 2 3 4 5 6 7 --LogsbeginatTue2015-09-1517:18:58CST,endatWed2015-09-1610:08:03CST.-- Sep1610:07:59openstack1httpd[13483]:AH00526:Syntaxerroronline47of /etc/httpd/conf .d /nss .conf: Sep1610:07:59openstack1httpd[13483]:Invalid command 'NSSPassPhraseHelper' ,perhapsmisspelledordefinedbyamodulenotincluded Sep1610:07:59openstack1systemd[1]:httpd.service:mainprocessexited,code=exited,status=1 /FAILURE Sep1610:07:59openstack1 kill [13485]: kill :cannot find process "" Sep1610:07:59openstack1systemd[1]:httpd.service:controlprocessexited,code=exitedstatus=1 Sep1610:07:59openstack1systemd[1]:FailedtostartTheApacheHTTPServer. 1 2 3 4 5 解决办法: 移除httpdnss.conf模块参数 cd /etc/httpd/conf .d/ mv nss.confnss.conf.back servicehttpdrestart 3, openstack bridge 错误,导致云主机创建失败: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 [root@openstack1conf.d] #tail-f/var/log/nova/nova-compute.log 2015-09-1610:10:31.70628885TRACEnova.compute.managerFile "/usr/lib/python2.7/site-packages/oslo_concurrency/lockutils.py" ,line445, in inner 2015-09-1610:10:31.70628885TRACEnova.compute.manager return f(*args,**kwargs) 2015-09-1610:10:31.70628885TRACEnova.compute.manager 2015-09-1610:10:31.70628885TRACEnova.compute.managerFile "/usr/lib/python2.7/site-packages/nova/network/linux_net.py" ,line1620, in ensure_bridge 2015-09-1610:10:31.70628885TRACEnova.compute.managerraiseexception.NovaException(msg) 2015-09-1610:10:31.70628885TRACEnova.compute.manager 2015-09-1610:10:31.70628885TRACEnova.compute.managerNovaException:Failedtoaddinterface:can'taddlotobridgebr100:Invalidargument 2015-09-1610:10:31.70628885TRACEnova.compute.manager 2015-09-1610:10:31.70628885TRACEnova.compute.manager 2015-09-1610:10:31.70628885TRACEnova.compute.manager 2015-09-1610:11:48.01321271TRACEoslo_messaging.rpc.dispatcherself.driver.update_dhcp(elevated,dev,network) 2015-09-1610:11:48.01321271TRACEoslo_messaging.rpc.dispatcherFile "/usr/lib/python2.7/site-packages/nova/network/linux_net.py" ,line1050, in update_dhcp 2015-09-1610:11:48.01321271TRACEoslo_messaging.rpc.dispatcherrestart_dhcp(context,dev,network_ref,fixedips) 2015-09-1610:11:48.01321271TRACEoslo_messaging.rpc.dispatcherFile "/usr/lib/python2.7/site-packages/oslo_concurrency/lockutils.py" ,line445, in inner 2015-09-1610:11:48.01321271TRACEoslo_messaging.rpc.dispatcher return f(*args,**kwargs) 2015-09-1610:11:48.01321271TRACEoslo_messaging.rpc.dispatcherFile "/usr/lib/python2.7/site-packages/nova/network/linux_net.py" ,line1159, in restart_dhcp 2015-09-1610:11:48.01321271TRACEoslo_messaging.rpc.dispatcher_execute(*cmd,run_as_root=True) 2015-09-1610:11:48.01321271TRACEoslo_messaging.rpc.dispatcherFile "/usr/lib/python2.7/site-packages/nova/network/linux_net.py" ,line1266, in _execute 2015-09-1610:11:48.01321271TRACEoslo_messaging.rpc.dispatcher return utils.execute(*cmd,**kwargs) 2015-09-1610:11:48.01321271TRACEoslo_messaging.rpc.dispatcherFile "/usr/lib/python2.7/site-packages/nova/utils.py" ,line207, in execute 2015-09-1610:11:48.01321271TRACEoslo_messaging.rpc.dispatcher return processutils.execute(*cmd,**kwargs) 2015-09-1610:11:48.01321271TRACEoslo_messaging.rpc.dispatcherFile "/usr/lib/python2.7/site-packages/oslo_concurrency/processutils.py" ,line233, in execute 2015-09-1610:11:48.01321271TRACEoslo_messaging.rpc.dispatchercmd=sanitized_cmd) 2015-09-1610:11:48.01321271TRACEoslo_messaging.rpc.dispatcherProcessExecutionError:Unexpectederror while running command . 1 2 3 4 5 6 7 8 9 10 11 12 13 解决办法: 修改vim /usr/lib/python2 .7 /site-packages/nova/network/linux_net .py程序 1612 if interface: 1613LOG.debug( 'Addinginterface%(interface)stobridge%(bridge)s' , 1614{ 'interface' :interface, 'bridge' :bridge}) 1615out,err=_execute( 'brctl' , 'addif' ,bridge,interface, 1616check_exit_code=False,run_as_root=True) 1617 if (erranderr!= "device%sisalreadyamemberofabridge;" 1618 "can'tenslaveittobridge%s.\n" %(interface,bridge)): 1619msg=_( 'Failedtoaddinterface:%s' )%err 1620 #raiseexception.NovaException(msg) 1621 else : 1622pass 本文转自 swq499809608 51CTO博客,原文链接:http://blog.51cto.com/swq499809608/1695234

优秀的个人博客,低调大师

CentOS6.5下使用LNMP架构安装nextcloud云盘

最近两年随着各大网盘纷纷关闭,百度云也早早的就开始限速,文件的安全也没有保障。 所以还不如自己搭建一个网盘。网上看了下,发现有一个nextcloud比较好用。 支持多平台客户端,支持分享,使用操作简单。支持插件扩展,文件预览,在线协作。 1.安装nginx wget http://nginx.org/download/nginx-1.10.3.tar.gz tar -zxf nginx-1.10.3.tar.gz && cd nginx-1.10.3 ./configure --prefix=/usr/local/data/nginx --user=nginx --group=nginx --with-pcre --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module make && make install 2.安装配置php yum install http://rpms.famillecollet.com/enterprise/remi-release-6.rpm yum --enablerepo=remi-php56 install php php-fpm php-mysql php-gd php-xml php-redis php-libs php-devel php-zlib php-mbstring nginx 和php-fpm 的运行用户这里使用nginx vim /etc/php-fpm.conf user = nginx group = nginx listen = 127.0.0.1:9000 env[HOSTNAME] = $HOSTNAME env[PATH] = /usr/local/bin:/usr/bin:/bin env[TMP] = /tmp env[TMPDIR] = /tmp env[TEMP] = /tmp 3.安装mysql yum -y install mysql mysql-server service mysqld start 4.建库,授权 CREATE DATABASE nextcloud_db; GRANT ALL ON nextcloud_db.* TO 'nextcloud'@'%' IDENTIFIED BY 'nextcloud'; //注意一定要加 "%",否则无法让网络让任何人上传文件 FLUSH PRIVILEGES; 5.安装nextcloud wget https://download.nextcloud.com/server/releases/nextcloud-10.0.2.zip --no-check-certificate unzip nextcloud-10.0.2.zip mv nextcloud /usr/local/data/nginx/html /usr/local/data/nginx/html chown -R nginx.nginx 创建数据目录,这里建议数据目录不要和web目录放到一起 /usr/local/data/nginx/html/nextcloud/data 6.申请证书 为了网盘的安全,有必要使用https 证书,这里可以在阿里云后台申请免费的DV证书 7.配置nginx 创建虚拟主机文件 cd /usr/local/data/nginx/conf vim nextcloud.conf upstream php-handler { server 127.0.0.1:9000; } server { listen 80; server_name cloud.nextcloud.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name cloud.nextcloud.com; ssl_certificate /usr/local/data/nginx/conf/nextcloud.crt; ssl_certificate_key /usr/local/data/nginx/conf/nextcloud.key; #添加如下header主要为了安全 add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;"; add_header X-Content-Type-Options nosniff; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; #nextcloud代码目录 root /usr/local/data/nginx/html/nextcloud/; location = /robots.txt { allow all; log_not_found off; access_log off; } #为了支持user_webfinger app rewrite ^/.well-known/host-meta /public.php?service=host-meta last; rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last; #这儿是为了支持日历和联系人,建议加上 location = /.well-known/carddav { return 301 $scheme://$host/remote.php/dav; } location = /.well-known/caldav { return 301 $scheme://$host/remote.php/dav; } #设置上传文件的最大大小,php也得修改 client_max_body_size 512M; fastcgi_buffers 64 4K; # Disable gzip to avoid the removal of the ETag header gzip off; error_page 403 /core/templates/403.php; error_page 404 /core/templates/404.php; #重要的:将所有请求转发到index.php上 location / { rewrite ^ /index.php$uri; } #安全设置,禁止访问部分敏感内容 location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ { deny all; } location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { deny all; } location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) { include fastcgi_params; fastcgi_split_path_info ^(.+\.php)(/.*)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param HTTPS on; #Avoid sending the security headers twice fastcgi_param modHeadersAvailable true; fastcgi_param front_controller_active true; fastcgi_pass php-handler; fastcgi_intercept_errors on; fastcgi_request_buffering off; } #安全设置,禁止访问部分敏感内容 location ~ ^/(?:updater|ocs-provider)(?:$|/) { try_files $uri/ =404; index index.php; } # 添加js和css文件的缓存控制头 location ~* \.(?:css|js)$ { try_files $uri /index.php$uri$is_args$args; add_header Cache-Control "public, max-age=7200"; add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;"; add_header X-Content-Type-Options nosniff; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; access_log off; } location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ { try_files $uri /index.php$uri$is_args$args; access_log off; } } vim nginx.conf include nextcloud.conf; service nginx start 8.配置php上传大小 vim /etc/php.ini max_execution_time = 0 post_max_size = 512M upload_max_filesize = 512M service php-fpm start 9.配置nextcloud 10.nextcloud 配置redis缓存 使用Redis做内存缓存可以有效提升程序运行速度。 curl -Ohttp://download.redis.io/releases/redis-3.2.8.tar.gz tar -zxvf redis-3.2.8.tar.gz cd redis-3.2.8/deps/ make geohash-int hiredis jemalloc linenoise lua cd .. make && make install cd utils/ ./install_server.sh 配置redis vim /etc/redis/6379.conf # requirepass foobared requirepass ExpvUwNOk9XRawC8 bind 192.168.40.200 启动 redis-server /etc/redis/6379.conf 配置nextcloud cd /usr/local/nginx/html/nextcloud/config vim config.php 'memcache.local' => '\OC\Memcache\Redis', 'redis' => array( 'host' => '192.168.40.200', 'port' => 6379, 'password' => 'ExpvUwNOk9XRawC8', ), 刷新页面 设置定时 */15 * * * * /usr/bin/php /usr/local/nginx/html/nextcloud/cron.php >/dev/null 本文转自 顶风走千里 51CTO博客,原文链接:http://blog.51cto.com/13505030/2064632

优秀的个人博客,低调大师

centos6 安装部署zabbix_agentd客户端

zabbix_server可以下用源码安装,但是zabbix_agentd推荐使用rpm包安装,因为在实际企业部署zabbix_agentd时,主机数量基本都是成千上万,用rpm包安装比较方便 开始安装zabbix_agentd: 一、下载rpm包 cd /opt wgethttp://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-agent-3.0.4-1.el6.x86_64.rpm 二、安装zabbix_agentd yum localinstall zabbix-agent-3.0.4-1.el6.x86_64.rpm 三、修改zabbix_agentd.conf vim /etc/zabbix/zabbix_agentd.conf 修改一下几项内容: EnableRemoteCommands=1 #允许zabbix服务器远程zabbix_agentd执行命令 LogRemoteCommands=1 #开启远程执行命令日志 Server=10.8.9.155 #填写zabbix服务器IP地址 ServerActive=10.8.9.155 #填写zabbix服务器IP地址 Hostname=cloucentos6.0 #填写zabbix_agentd客户端计算机名 四、启动zabbix_agentd 因为我们这里直接安装的rpm包所以在/etc/init.d/目录下生成开机脚本 直接执行/etc/init.d/zabbix_agentd start 就ok。

优秀的个人博客,低调大师

CentOS SSH无密码登录原理,配置以及常见问题

原理简介 为了便于理解,假设需要在hadoop148这台机器上可以通过无密码登录的方式连接到hadoop107上。 首先在 hadoop148上生成一个密 钥对,包括一个公钥和一个私钥,并将公钥复制到hadoop107上。 然后当 hadoop148通 过 SSH 连接hadoop107机器时, hadoop107机器 就会生成一个随机数并用 hadoop148的公 钥对随机数进行加密,并发送给 hadoop148。 最后 hadoop148收到加密数之后再用私 钥解密,并将解密数回传给hadoop107, hadoop107确认解密数无误之后就允许 hadoop148不 输入密码进行连接了 配置 具体步骤 1 、 登录hadoop148,执行命令 ssh-keygen -t rsa 之后一路回 车,查看刚生成的无密码钥对: cd .ssh 后 执行 ll 2 、把 id_rsa.pub 追加到授权的 key 里面去。 执行命令 cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys 3 、修改权限: 执行 chmod 600 ~/.ssh/authorized_keys 常见问题 问题现象: hadoop148机器已经生产rsa密钥 且已经将public key添加到serverB机器/root/.ssh/authorized_keys 但是ssh root@hadoop107机器时仍然需要输入密码,即无密码认证失败, 分析与处理: 第一步:查看权限 用ssh -v debug访问,日志如下,但是从日志看不到失败原因,只知道在用publickey认证时,对端没有reply; 再查看/var/log/secure日志 发现所有用户的HOME目录应该是700权限,否则会引起很多问题,这个问题同样是由于这个原因 最终,执行chmod 700 root后解决 关于权限问题总结如下: 1) .ssh目录的权限必须是700 2) 用户目录的权限必须是700,比如我是用root用户操作的,则/root的权限必须是700 3) .ssh/authorized_keys文件权限必须是600 第二步:查看安全上下文 如果通过改变权限还不能解决问题,可以尝试如下方法: 首先用ls -laZ检查了一下.ssh目录,果然不是ssh_home_t,则需要使用restorecon命令对.ssh目录的context进行恢复。命令是:restorecon -r -vv /root/.ssh 第三步:分析/var/log/audit/audit.log日志 第四步:修改目录用户权限 chown -R root.root /root 本文转自aaron428 51CTO博客,原文链接: http://blog.51cto.com/aaronsa/1729244 ,如需转载请自行联系原作者

优秀的个人博客,低调大师

Centos7下QT5.9.2环境搭建

1、下载安装程序 http://download.qt.io/official_releases/qt/5.9/5.9.2/qt-opensource-linux-x64-5.9.2.run 2、安装 chmod u+x qt-opensource-linux-x64-5.9.2.run ./qt-opensource-linux-x64-5.9.2.run 进入安装界面,进行安装 安装完成之后进入安装目录运行QtCreator 此时只能在root用户下执行./Qt5.9.2/Tools/QtCreator/bin/qtcreator.sh运行QtCreator 3、设置环境变量 添加环境变量 export LD_LIBRARY_PATH=/opt/Qt5.9.2/Tools/QtCreator/lib:/opt/Qt5.9.2/Tools/QtCreator/lib/qtcreator:/opt/Qt5.9.2/Tools/QtCreator/lib/Qt/lib:$LD_LIBRARY_PATH export PATH=$PATH:/opt/Qt5.9.2/5.9.2/gcc_64/bin:/opt/Qt5.9.2/Tools/QtCreator/bin 4、执行qtcreator qtcreator

优秀的个人博客,低调大师

CENTOS6.5安装日志分析ELK elasticsearch + logstash + redis + kibana

1、日志平台的工作流程 多个独立的agent(Shipper)负责收集不同来源的数据,一个中心agent(Indexer)负责汇总和分析数据,在中心agent前的Broker(使用redis实现)作为缓冲区,中心agent后的ElasticSearch用于存储和搜索数据,前端的Kibana提供丰富的图表展示。 Shipper表示日志收集,使用LogStash收集各种来源的日志数据,可以是系统日志、文件、redis、mq等等; Broker作为远程agent与中心agent之间的缓冲区,使用redis实现,一是可以提高系统的性能,二是可以提高系统的可靠性,当中心agent提取数据失败时,数据保存在redis中,而不至于丢失; 中心agent也是LogStash,从Broker中提取数据,可以执行相关的分析和处理(Filter); ElasticSearch用于存储最终的数据,并提供搜索功能; Kibana提供一个简单、丰富的web界面,数据来自于ElasticSearch,支持各种查询、统计和展示; 2、机器的部署情况 192.168.1.140 # redis 服务器,角色broker 192.168.1.140 # logstash 角色indexer 服务器,集成elasticsearch,kibana,必须有安装web服务 192.168.1.132 # nginx服务器,角色生产服务器,logstash需要收集它的日志 这里选用的软件的版本: logstash-1.4.2 elasticsearch-1.4.2 redis-2.6.16 kibana 是logstash内带的 这些软件之间有兼容性问题,请用其他代替版本的同学注意。 2.1安装logstash-1.4.2 yum-y install java-1.7.0-openjdk 安装logstash需要jdk的支持 wget https://download.elasticsearch.org/logstash/logstash/logstash-1.4.2.tar.gz tar xzvf logstash-1.4.2.tar.gz-C /app/ && mv /app/logstash-1.4.2 /app/logstash mkdir -p /app/logstash/conf 注:如果yum出现这样的问题: 需要按照epel rpm -ivhhttp://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 测试安装 cd /app/logstash/bin ./logstash-e'input { stdin { } } output { stdout {} }' 输入“good job”, 如果出现类似下图,说明logstash正常工作 2.2 安装elasticsearch-1.4.2 wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.4.2.tar.gz tar xzvf elasticsearch-1.4.2.tar.gz-C /app/ cd /app/elasticsearch-1.4.2/config 修改配置文件elasticsearch.yml discovery.zen.ping.multicast.enabled:false #关闭广播,如果局域网有机器开9300 端口,服务会启动不了 network.host:192.168.1.140 #指定主机地址,其实是可选的,但是最好指定因为后面跟kibana集成的时候会报http连接出错(直观体现好像是监听了:::9200 而不是0.0.0.0:9200) http.cors.allow-origin:"/.*/" http.cors.enabled:true #这2项都是解决跟kibana集成的问题,错误体现是 你的elasticsearch 版本过低 启动elasticsearch cd /app/elasticsearch-1.4.2/bin ./elasticsearch # 配置阶段建议直接启动,日志会输出到stdout,-d 选项表示以daemon的方式启动,如果没有出现error ,表示服务正常启动 测试logstash 跟elasticsearch数据交互 /app/logstash/bin/logstash-e'input { stdin { } } output { elasticsearch { host => 192.168.1.140 } }' 输入you know curl 'http://192.168.1.140:9200/_search?pretty' # 如果有输出且没有出现错误表示服务器交互成功 注:可能出现如下错误信息,我也不知道什么原因,我没有管 不过不耽误后面的搭建 有谁知道这个是怎么回事 或者怎么解决的请留言 谢谢!! 2.3 安装kibana cd /app/logstash/vendor vim kibana/config.js #elasticsearch: "http://"+window.location.hostname+":9200",修改成"http://192.168.1.140:9200" cp -Rv kibana /var/www/html 拷贝网页的配置 /etc/init.d/httpd start / service httpd start 能够访问urlhttp://192.168.1.140/kibana/index.html 看到这样的画面 2.4安装redis #tar xzvf redis-2.6.16.tar.gz-C /app #cd /app/redis-2.6.16 && mkdir conf #make target=linux26 (报错 可能缺少一些编译的工具,按照提示,yum安装就行了 如果出现如下报错: 可以执行 make MALLOC=libc +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 原因:查看redis的源码src/zmalloc.c可以看到如下代码: #if defined(USE_TCMALLOC) #define malloc(size) tc_malloc(size) #define calloc(count,size) tc_calloc(count,size) #define realloc(ptr,size) tc_realloc(ptr,size) #define free(ptr) tc_free(ptr) #elif defined(USE_JEMALLOC) #define malloc(size) je_malloc(size) #define calloc(count,size) je_calloc(count,size) #define realloc(ptr,size) je_realloc(ptr,size) #define free(ptr) je_free(ptr) 可以看到源码中首先会判断系统中是否存在tcmalloc内存分配器,如果没有,则使用jemalloc内存分配器,如果连jemalloc分配器也没有找到,就会报错了。 本次现网部署Redis后,因为没有jemalloc分配器,导致碎片率达到了1.59,redis的内存占用率也就是实际内存占用的1.59倍,这个数据量是非常恐怖的,对内存资源是个相当大的损耗。 在现网环境的linux系统中,可能没有预先安装Jemalloc分配器,需要手动安装。 1、wget http://www.canonware.com/download/jemalloc/jemalloc-3.2.0.tar.bz2 2、tar jxfjemalloc-3.2.0.tar.bz2(tar.bz2的压缩格式使用tar jxf解压) 3、cdjemalloc-3.2.0 4、./configure 5、make && make install 6、ldconfig 过程完成后,在切回到redis-2.6.14目录中,重新执行make命令 当然如果不想使用jemalloc分配器,可以强制使用如下命令来安装redis: make MALLOC=libc(libc是默认的内存分配器,不过经过验证,碎片率是最高的) 经现网验证: 1)使用libc内存分配器的话,内存碎片率可以达到1.6左右 2)但是使用jemalloc,碎片率一般在1.1以内 3)对于tcmalloc,和jemalloc的结果差不多,但是因为redis暂时还没有集成tcmalloc,所以需要另外来安装,过程详见: http://blog.nosqlfan.com/html/3490.html ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #./src/redis-serverredis.conf # daemonize yes 使用默认的配置文件 2.5 集成logstash redis vim /app/logstash/conf/nginx_acces.conf 写入如下内容 input { redis { host => '192.168.1.140' # 我方便测试没有指定password,最好指定password data_type => 'list' port => "6379" key => 'logstash:redis' #自定义 type => 'redis-input' #自定义 } } output { elasticsearch { host => "192.168.1.140" # 由于redis和elasticsearch在一台机器上所以IP是一个 codec => "json" protocol => "http" #版本1.0+ 必须指定协议http } } 验证配置文件 cd /app/logstash #bin/logstash-f ./conf/nginx_access.conf-t # 无误后启动 #bin/logstash -f ./conf/nginx_access.conf --verbose # 要检查错误 --debug 启动成功 有警告没有管 2.6 日志接入 另一台机器 安装logstash 过程 跟上面一样 但是 nginx_access.conf 配置如下 input { file { type=>"nginx_access" path=>"/var/log/nginx/access.log" 日志的路径 } } output { stdout { codec=>rubydebug } redis { host=>'192.168.1.140' 对接的redisIP data_type=>'list' key=>'logstash:redis' } } 到此配置告一段落,下面验收成果 刷新nginx日志 然后在132上的logstash能够看到如下 然后在140端能够看到: 重点是访问http://192.168.1.140/kibana/index.html 验收最后的页面 这个是一个简单的格式 已经设计好的 当然可以自己定义了。 定义的方法:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&id=4938039&uid=24940078 点进去以后的界面是这样的: 3 安装插件 安装bigdesk 要想知道整个插件的列表,请访问http://www.elasticsearch.org/guide/reference/modules/plugins/ 插件还是很多的,个人认为比较值得关注的有以下几个,其他的看你需求,比如你要导入数据当然就得关注river了。 该插件可以查看集群的jvm信息,磁盘IO,索引创建删除信息等,适合查找系统瓶颈,监控集群状态等,可以执行如下命令进行安装,或者访问项目地址:https://github.com/lukas-vlcek/bigdesk 先上一张效果图: 这里我是按照https://github.com/lukas-vlcek/bigdesk 上面的第二种 git clone的方式做的(第一种没成功。。。) 首先确保安装git yum install -y git 然后将按照上面的命令做: git clonehttps://github.com/lukas-vlcek/bigdesk.git cd bigdesk/ git tag [... some tags left out for brevity ....] v2.2.2 v2.2.3 v2.4.0 git checkout v2.4.0 然后将整个bigdesk目录拷贝到http下 cp -ar bigdesk /var/www/html/ 然后就可以访问了 http://192.168.1.140/bigdesk 先修改host 然后连接 然后会出来一个小图标(成果展示图里的) 点击小图标就能出现监控的选项了。 声明:该文参考了如下几位的博客,但是是我亲自搭建了整个过程,对整个的流程进行了新的把控和优化。 http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=17291169&id=4898582 http://www.mamicode.com/info-detail-475881.html http://nkcoder.github.io/blog/20141031/elkr-log-platform-deploy/ 本文转自 憬薇 51CTO博客,原文链接:http://blog.51cto.com/welcomeweb/1684696

优秀的个人博客,低调大师

阿里云CentOS7中安装使用Git和GitHub

1.Git的安装 查看Git是否安装:git YUM安装Git:yum install git 查看Git版本:git --version 配置全局信息(注意空格): git config --global user.name '随便输入名字' git config --global user.email '随便输入邮件地址' git config --global color.ui true Note:git config命令的--global参数表示当前这台机器上所有的Git仓库都会使用这个配置(也可针对不同的仓库设置不同的配置),--global是针对当前用户起作用的,如果不加则只针对当前的仓库起作用 2.Git库的操作 根目录下创建Git版本库:mkdir gitrepos 设置成为Git可以管理的仓库:git init Note:.git(ls -ah)隐藏目录是Git用来跟踪管理版本库的,每个仓库的Git配置文件都放在.git/config文件中,当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中 创建并保存测试文件:vim readme.txt 添加文件到仓库(可多个):git add (-f强制添加) readme.txt 提交文件到仓库并注释:git commit -mm "输入备注信息即可" 查看仓库的当前状态:git status 查看仓库的修改内容:git diff readme.txt Note:git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别 查看历史记录:git log [-1表示last](--pretty=oneline) Note:commit edf09fad36432c5aa3b487d0a8b96a78ac62ff8d 版本的回退:git reset --hard HEAD^ Note:HEAD表示当前版本,上个版本是HEAD^,上上个则是HEAD^^(HEAD~2) 回退到指定的版本:git reset --hard edf09f(commit id:Git可进行模糊查询) Note:git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区 Git命令的记录:git reflog 放弃修改:git checkout -- readme.txt Note:没有--就会变成“切换到另一个分支”的命令 删除文件:git rm readme.txt 创建标签:git tag "标签名称"(默认为HEAD,也可指定commit id) 查看标签:git tag 查看标签信息:git show "标签名称" git tag -a "标签名称" -m "comments" "commit id",-a表示指定标签名 git tag -s "标签名称" -m "comments" "XXXXXX",-s表示用私钥签名一个标签 删除标签:git tag -d "标签名称" 推送标签到远程:git push "远程库名字" "标签名称" 全部标签推送到远程:git push "远程库名字" --tags 远程库标签删除:git push "远程库名字" :refs/tags/"标签名称"(需要本地删除) 忽略配置文件:.gitignore (a)忽略操作系统自动生成的文件,比如缩略图等 (b)忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件 (c)忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件 检查忽略:git check-ignore -v "文件" 别名配置:git config --global alias.st status ===>>>(git status==git st) 删除别名:删除.git/config文件中对应的别名行的数据即可,配置别名也可以直接修改.gitconfig,如果修改错误则可以删掉文件重新通过命令配置 3.GitHub的设置 注册GitHub:https://github.com/ 创建SSH key:ssh-keygen -t rsa -C "随便输入邮件地址" Note:在根目录下如果可以看到:.ssh目录以及里面的id_rsa和id_rsa.pub两个文件则表示成功创建 登陆GitHub后设置SSH Key,把id_rsa.pub文件的内容粘贴上去即可,然后在GitHub上创建仓库:spring-boot-learning Git与GitHub相连,在gitrepos中执行:git remote add "远程库名字" https://github.com/GitHub拥有者/GitHub仓库名 推送master分支到GitHub:git push -u "远程库名字" master Note:首次提交才需要加:-u 从GitHub克隆:git clone https://github.com/GitHub拥有者/GitHub仓库名 查看远程库信息:git remote (-v显示详细信息) 删除远程库:git remote remove "远程库名称" 试图合并:git pull 本地创建和远程分支对应的分支:git checkout -b branch-name "远程库名字"/branch-name 建立本地分支和远程分支的关联:git branch --set-upstream branch-name "远程库名字"/branch-name 4.Git分支管理 分支dev创建与切换:git checkout -b dev(Fast forward) Note:-b参数表示创建并切换,相当于git branch dev和git checkout dev 分支查看:git branch(当前分支前面会标一个*号) 分支合并:git merge dev Note:git merge --no-ff -m "merge with no-ff" dev表示禁用Fast forward,加上--no-ff参数可以用普通模式合并且合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并 分支的删除:git branch -d dev(-D表示强行删除) 查看分支合并情况:git log --graph --pretty=oneline --abbrev-commit 存储工作现场:git stash 查看工作现场:git stash list 恢复工作现场: git stash apply恢复:但是恢复后stash内容并不删除,需要用git stash drop来删除 git stash pop恢复:恢复的同时把stash内容也删除 恢复指定的stash:git stash apply stash@{0}

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册