苦逼运维

互联网资讯采菊篱下 发表了文章 • 0 个评论 • 1115 次浏览 • 2015-10-08 18:29 • 来自相关话题

今天在群里,一哥们发出了一个好湿,大家共爽!

横批

苦逼运维

上联

一个项目两部电脑三餐盒饭只为四千工资搞得五脏俱损六神无主仍然七点起床八点开会处理九个报警十分辛苦

下联

十年运维九年加班八面无光忙的七窍生烟到头六亲不认五体投地依旧四肢酸软三更加班只为二个臭钱一生孤独
总结:运维虽苦逼,领导需善待;如若无感悟,携程你榜样!
 
 运维杂谈、扯淡群 里面什么都可以说,畅所欲言,越激烈越好,各抒己见!思维发散 自由言论!自由表达!侃大山 生活需要扯淡 让生活解压!
有意加入者,扫码加入,加入不了,可以加微信号:crh_Love_ghl  注明拉取进杂谈群! 查看全部
今天在群里,一哥们发出了一个好湿,大家共爽!


横批


苦逼运维


上联


一个项目两部电脑三餐盒饭只为四千工资搞得五脏俱损六神无主仍然七点起床八点开会处理九个报警十分辛苦


下联


十年运维九年加班八面无光忙的七窍生烟到头六亲不认五体投地依旧四肢酸软三更加班只为二个臭钱一生孤独

总结:运维虽苦逼,领导需善待;如若无感悟,携程你榜样!
 
 运维杂谈、扯淡群 里面什么都可以说,畅所欲言,越激烈越好,各抒己见!思维发散 自由言论!自由表达!侃大山 生活需要扯淡 让生活解压!
有意加入者,扫码加入,加入不了,可以加微信号:crh_Love_ghl  注明拉取进杂谈群!
openskill.jpg

Error: php56w-common conflicts with php-common-5.3.3-46.el6_6.x86_64

运维技术OpenSkill 回复了问题 • 2 人关注 • 1 个回复 • 2612 次浏览 • 2015-10-08 15:53 • 来自相关话题

configure: error: mcrypt.h not found. Please reinstall libmcrypt.

编程语言OpenSkill 回复了问题 • 2 人关注 • 1 个回复 • 2057 次浏览 • 2015-10-08 14:09 • 来自相关话题

Msyql备份之mysqldump介绍

数据库采菊篱下 发表了文章 • 2 个评论 • 712 次浏览 • 2015-10-07 18:40 • 来自相关话题

一、​备份MYSQL

把一个库导出到一个SQL文件

mysqldump -uroot -ppassword db_name > /data/rh/db_name.sql

备份多个库(使用-B参数)
-B, --databases Dump several databases. Note the difference in usage; in
this case no tables are given. All name arguments are
regarded as database names. 'USE db_name;' will be
included in the output.
如果需要指定字符集的话,可以使用--default-character-set参数。

备份全部库

mysqldump -uroot -ppassword --all-databases > /data/rh/db_all.sql

备份某个表

mysqldump -uroot -ppassword dbname table_name > /data/rh/table_name.sql

备份某库多个表

mysqldump -uroot -ppassword dbname tb1_name tb2_name > /data/rh/tb1_tab2.sql

备份数据库的表结构

mysqldump -uroot -ppassword -q -d dbname > /data/bakm3310/dbname.sql
-q 就是忽略缓存数据
-d 就是没有数据行信息

导出某库某表的结构

mysqldump -uroot -ppassword -d dbname tbname > /data/rh/tbname.sql

导出某库某表的内容

mysqldump -uroot -ppassword -t dbname tbname > /data/rh/tbname.sql
-t 没有创建表的创建信息二、恢复数据
有两种恢复方式如下:

第一种

mysql -uroot -ppassword db_name < /data/rh/db_name.sql

第二种

#mysql -u root -ppasword
mysql> use db_name;
mysql> source /data/rh/db_name.sql; 查看全部
一、​备份MYSQL


把一个库导出到一个SQL文件


mysqldump -uroot -ppassword db_name > /data/rh/db_name.sql 

备份多个库(使用-B参数)
-B, --databases Dump several databases. Note the difference in usage; in
this case no tables are given. All name arguments are
regarded as database names. 'USE db_name;' will be
included in the output.
如果需要指定字符集的话,可以使用--default-character-set参数。


备份全部库


mysqldump -uroot -ppassword --all-databases > /data/rh/db_all.sql


备份某个表


mysqldump -uroot -ppassword dbname table_name > /data/rh/table_name.sql


备份某库多个表


mysqldump -uroot -ppassword dbname tb1_name tb2_name > /data/rh/tb1_tab2.sql


备份数据库的表结构


mysqldump -uroot -ppassword -q -d dbname > /data/bakm3310/dbname.sql
-q 就是忽略缓存数据
-d 就是没有数据行信息


导出某库某表的结构


mysqldump -uroot -ppassword -d dbname tbname > /data/rh/tbname.sql


导出某库某表的内容


mysqldump -uroot -ppassword -t dbname tbname > /data/rh/tbname.sql
-t 没有创建表的创建信息
二、恢复数据
有两种恢复方式如下:


第一种


mysql -uroot -ppassword db_name < /data/rh/db_name.sql


第二种


#mysql -u root -ppasword
mysql> use db_name;
mysql> source /data/rh/db_name.sql;

Flask ImportError: No module named XXX问题解决

编程语言koyo 发表了文章 • 0 个评论 • 1582 次浏览 • 2015-09-28 19:59 • 来自相关话题

第一个flask项目,做一个简单的网址导航。部署项目后,浏览器访问报500错误。查看apache日志后,报错如下:
[Tue Jan 06 09:58:22 2015] [error] hello world
[Tue Jan 06 09:58:22 2015] [error] [client 112.64.71.131] mod_wsgi (pid=31615): Target WSGI script '/var/www/qianshan/qianshan.wsgi' cannot be loaded as Python module.
[Tue Jan 06 09:58:22 2015] [error] [client 112.64.71.131] mod_wsgi (pid=31615): Exception occurred processing WSGI script '/var/www/qianshan/qianshan.wsgi'.
[Tue Jan 06 09:58:22 2015] [error] [client 112.64.71.131] Traceback (most recent call last):
[Tue Jan 06 09:58:22 2015] [error] [client 112.64.71.131] File "/var/www/qianshan/qianshan.wsgi", line 12, in <module>
[Tue Jan 06 09:58:22 2015] [error] [client 112.64.71.131] from qianshan import app as application
[Tue Jan 06 09:58:22 2015] [error] [client 112.64.71.131] File "/var/www/qianshan/__init__.py", line 4, in <module>
[Tue Jan 06 09:58:22 2015] [error] [client 112.64.71.131] import extras
[Tue Jan 06 09:58:22 2015] [error] [client 112.64.71.131] ImportError: No module named extras项目结构
qianshan
├── config.ini
├── extraModules.py
├── extras.py
├── __init__.py
├── qianshan.wsgi
├── static
├── templates
├── test.py
└── venvinit.py代码
from flask import Flask
from flask import render_template
import extraModules
import extras#如果没有这句无报错正常运行,只有一些静态资源没拉到,可能是其他问题
import ConfigParser
import codecs
import logging

logging.basicConfig(filename='qianshan.log', level=logging.INFO)
logging.info('Started')

app = Flask(__name__)

logging.info('App established')

@app.route("/")
def index():
return render_template('index.html')extras.py是实际我想要导入的模块,里面有两个我需要的类;extraModules是测试模块,import extraModules是成功的,apache日志的第一行也打出来了;他们的代码分别如下:
# Filename : extras.py

class Block:
def setNo(self, no):
self.no = int(no)
def getNo(self):
return self.no
def setName(self, name):
self.name = name
def getName(self):
return self.name
def setPriority(self, priority):
self.priority = int(priority)
def getPriority(self):
return self.priority
def setHotKeyAsc(self, hotKeyAsc):
self.hotKeyAsc = hotKeyAsc
def getHotKeyAsc(self):
return self.hotKeyAsc
def setElement(self, equation):
s = equation.split(':')
if(s[0] == 'no'):
self.setNo(s[1])
elif(s[0] == 'name'):
self.setName(s[1])
elif(s[0] == 'priority'):
self.setPriority(s[1])
elif(s[0] == 'hot_key_asc'):
self.setHotKeyAsc(s[1])

class Website:
def setNo(self, no):
self.no = int(no)
def getNo(self):
return self.no
def setName(self, name):
self.name = name
def getName(self):
return self.name
def setUrl(self, url):
self.url = url
def getUrl(self):
return self.url
def setIcon(self, icon):
self.icon = icon
def getIcon(self):
return self.icon
def setBlockNo(self, blockNo):
self.blockNo = int(blockNo)
def setPriority(self, priority):
self.priority = int(priority)
def getPriority(self):
return self.priority
def setHotKeyAsc(self, hotKeyAsc):
self.hotKeyAsc = hotKeyAsc
def getHotKeyAsc(self):
return self.hotKeyAsc
def setElement(self, equation):
s = equation.split(':')
if(s[0] == 'no'):
self.setNo(s[1])
elif(s[0] == 'name'):
self.setName(s[1])
elif(s[0] == 'url'):
self.setUrl(s[1])
elif(s[0] == 'icon'):
self.setIcon(s[1])
elif(s[0] == 'priority'):
self.setPriority(s[1])
elif(s[0] == 'hot_key_asc'):
self.setHotKeyAsc(s[1])

if __name__ == '__main__':
block = Block()
website = Website()extraModules.py代码如下:
# Filename : extraModules.py
print 'hello world'其他背景信息:
项目部署在digital ocean的ubuntu12.x主机上,python版本2.7.3.

还请指导下,是不是extras.py有什么地方大意了,小弟新学python不久,请多敲打点拨

谢谢1L和2L前辈的指点啊!白天一直在上课,以下为1月7日晚更新,我把wsgi以及virtual host的配置也发一下,wsgi中是有配置/var/www/qianshan/为sys.path的。

qianshan.wsgi如下:
#!/usr/bin/python
activate_this = '/var/www/qianshan/venv/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))

import sys
import logging

logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,'/var/www/qianshan/')
sys.path.insert(1,'/var/www/')

from qianshan import app as application
application.secret_key = 'Add your secret key'Virtual Host配置:
<VirtualHost *:80>
ServerName qianshan.co
ServerAdmin spark@qianshan.co
WSGIScriptAlias / /var/www/qianshan/qianshan.wsgi
<Directory /var/www/qianshan/>
Order allow,deny
Allow from all
</Directory>
Alias /static /var/www/qianshan/static
<Directory /var/www/qianshan/static/>
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>我会按照1L和2L的方法试试,如果不行再在这里说
 
 
问题解决如下:
 
1.首先确认是文件的权限问题。和import的语法无关。
下图中可以看到目前项目根目录下各个文件的权限,otherModules(就是之前的extras)对root所在的用户组没有读权限。
-rwx------ 1 root root 9091 Jan 3 09:27 config.ini
-rwxr--r-- 1 root root 404 Jan 7 22:58 __init__.py
-rwx------ 1 root root 2316 Jan 7 23:07 otherModules.py
-rwxr--r-- 1 root root 360 Jan 5 23:34 qianshan.wsgi
drwxr-xr-x 2 root root 4096 Jan 3 09:08 static
drwxr-xr-x 2 root root 4096 Jan 3 08:51 templates
-rw-r--r-- 1 root root 262 Jan 7 23:05 testModule.py
-rwx------ 1 root root 1716 Jan 3 09:36 test.py
drwxr-xr-x 6 root root 4096 Jan 3 08:05 venvchmod调整权限后,权限如下,项目可以正常访问,不再报错
-rwxr--r-- 1 root root 9091 Jan 3 09:27 config.ini
-rwxr--r-- 1 root root 404 Jan 7 22:58 __init__.py
-rwxr--r-- 1 root root 2316 Jan 7 23:07 otherModules.py
-rwxr--r-- 1 root root 360 Jan 5 23:34 qianshan.wsgi
drwxrwxr-x 2 root root 4096 Jan 3 09:08 static
drwxrwxr-x 2 root root 4096 Jan 3 08:51 templates
-rw-r--r-- 1 root root 262 Jan 7 23:05 testModule.py
-rwxr--r-- 1 root root 1716 Jan 3 09:36 test.py
drwxr-xr-x 6 root root 4096 Jan 3 08:05 venv大体过程就这样!
原文地址:分享原文 查看全部
第一个flask项目,做一个简单的网址导航。部署项目后,浏览器访问报500错误。查看apache日志后,报错如下:
[Tue Jan 06 09:58:22 2015] [error] hello world
[Tue Jan 06 09:58:22 2015] [error] [client 112.64.71.131] mod_wsgi (pid=31615): Target WSGI script '/var/www/qianshan/qianshan.wsgi' cannot be loaded as Python module.
[Tue Jan 06 09:58:22 2015] [error] [client 112.64.71.131] mod_wsgi (pid=31615): Exception occurred processing WSGI script '/var/www/qianshan/qianshan.wsgi'.
[Tue Jan 06 09:58:22 2015] [error] [client 112.64.71.131] Traceback (most recent call last):
[Tue Jan 06 09:58:22 2015] [error] [client 112.64.71.131] File "/var/www/qianshan/qianshan.wsgi", line 12, in <module>
[Tue Jan 06 09:58:22 2015] [error] [client 112.64.71.131] from qianshan import app as application
[Tue Jan 06 09:58:22 2015] [error] [client 112.64.71.131] File "/var/www/qianshan/__init__.py", line 4, in <module>
[Tue Jan 06 09:58:22 2015] [error] [client 112.64.71.131] import extras
[Tue Jan 06 09:58:22 2015] [error] [client 112.64.71.131] ImportError: No module named extras
项目结构
qianshan
├── config.ini
├── extraModules.py
├── extras.py
├── __init__.py
├── qianshan.wsgi
├── static
├── templates
├── test.py
└── venv
init.py代码
from flask import Flask
from flask import render_template
import extraModules
import extras#如果没有这句无报错正常运行,只有一些静态资源没拉到,可能是其他问题
import ConfigParser
import codecs
import logging

logging.basicConfig(filename='qianshan.log', level=logging.INFO)
logging.info('Started')

app = Flask(__name__)

logging.info('App established')

@app.route("/")
def index():
return render_template('index.html')
extras.py是实际我想要导入的模块,里面有两个我需要的类;extraModules是测试模块,import extraModules是成功的,apache日志的第一行也打出来了;他们的代码分别如下:
# Filename : extras.py

class Block:
def setNo(self, no):
self.no = int(no)
def getNo(self):
return self.no
def setName(self, name):
self.name = name
def getName(self):
return self.name
def setPriority(self, priority):
self.priority = int(priority)
def getPriority(self):
return self.priority
def setHotKeyAsc(self, hotKeyAsc):
self.hotKeyAsc = hotKeyAsc
def getHotKeyAsc(self):
return self.hotKeyAsc
def setElement(self, equation):
s = equation.split(':')
if(s[0] == 'no'):
self.setNo(s[1])
elif(s[0] == 'name'):
self.setName(s[1])
elif(s[0] == 'priority'):
self.setPriority(s[1])
elif(s[0] == 'hot_key_asc'):
self.setHotKeyAsc(s[1])

class Website:
def setNo(self, no):
self.no = int(no)
def getNo(self):
return self.no
def setName(self, name):
self.name = name
def getName(self):
return self.name
def setUrl(self, url):
self.url = url
def getUrl(self):
return self.url
def setIcon(self, icon):
self.icon = icon
def getIcon(self):
return self.icon
def setBlockNo(self, blockNo):
self.blockNo = int(blockNo)
def setPriority(self, priority):
self.priority = int(priority)
def getPriority(self):
return self.priority
def setHotKeyAsc(self, hotKeyAsc):
self.hotKeyAsc = hotKeyAsc
def getHotKeyAsc(self):
return self.hotKeyAsc
def setElement(self, equation):
s = equation.split(':')
if(s[0] == 'no'):
self.setNo(s[1])
elif(s[0] == 'name'):
self.setName(s[1])
elif(s[0] == 'url'):
self.setUrl(s[1])
elif(s[0] == 'icon'):
self.setIcon(s[1])
elif(s[0] == 'priority'):
self.setPriority(s[1])
elif(s[0] == 'hot_key_asc'):
self.setHotKeyAsc(s[1])

if __name__ == '__main__':
block = Block()
website = Website()
extraModules.py代码如下:
# Filename : extraModules.py
print 'hello world'
其他背景信息:
项目部署在digital ocean的ubuntu12.x主机上,python版本2.7.3.

还请指导下,是不是extras.py有什么地方大意了,小弟新学python不久,请多敲打点拨

谢谢1L和2L前辈的指点啊!白天一直在上课,以下为1月7日晚更新,我把wsgi以及virtual host的配置也发一下,wsgi中是有配置/var/www/qianshan/为sys.path的。

qianshan.wsgi如下:
#!/usr/bin/python
activate_this = '/var/www/qianshan/venv/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))

import sys
import logging

logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,'/var/www/qianshan/')
sys.path.insert(1,'/var/www/')

from qianshan import app as application
application.secret_key = 'Add your secret key'
Virtual Host配置:
<VirtualHost *:80>
ServerName qianshan.co
ServerAdmin spark@qianshan.co
WSGIScriptAlias / /var/www/qianshan/qianshan.wsgi
<Directory /var/www/qianshan/>
Order allow,deny
Allow from all
</Directory>
Alias /static /var/www/qianshan/static
<Directory /var/www/qianshan/static/>
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
我会按照1L和2L的方法试试,如果不行再在这里说
 
 
问题解决如下:
 
1.首先确认是文件的权限问题。和import的语法无关。
下图中可以看到目前项目根目录下各个文件的权限,otherModules(就是之前的extras)对root所在的用户组没有读权限。
-rwx------ 1 root root 9091 Jan  3 09:27 config.ini
-rwxr--r-- 1 root root 404 Jan 7 22:58 __init__.py
-rwx------ 1 root root 2316 Jan 7 23:07 otherModules.py
-rwxr--r-- 1 root root 360 Jan 5 23:34 qianshan.wsgi
drwxr-xr-x 2 root root 4096 Jan 3 09:08 static
drwxr-xr-x 2 root root 4096 Jan 3 08:51 templates
-rw-r--r-- 1 root root 262 Jan 7 23:05 testModule.py
-rwx------ 1 root root 1716 Jan 3 09:36 test.py
drwxr-xr-x 6 root root 4096 Jan 3 08:05 venv
chmod调整权限后,权限如下,项目可以正常访问,不再报错
-rwxr--r-- 1 root root 9091 Jan  3 09:27 config.ini
-rwxr--r-- 1 root root 404 Jan 7 22:58 __init__.py
-rwxr--r-- 1 root root 2316 Jan 7 23:07 otherModules.py
-rwxr--r-- 1 root root 360 Jan 5 23:34 qianshan.wsgi
drwxrwxr-x 2 root root 4096 Jan 3 09:08 static
drwxrwxr-x 2 root root 4096 Jan 3 08:51 templates
-rw-r--r-- 1 root root 262 Jan 7 23:05 testModule.py
-rwxr--r-- 1 root root 1716 Jan 3 09:36 test.py
drwxr-xr-x 6 root root 4096 Jan 3 08:05 venv
大体过程就这样!
原文地址:分享原文

服务器中文乱码

运维技术采菊篱下 回复了问题 • 2 人关注 • 1 个回复 • 1165 次浏览 • 2015-09-28 19:52 • 来自相关话题

php不重新编译添加模块

编程语言采菊篱下 发表了文章 • 0 个评论 • 1120 次浏览 • 2015-09-27 23:58 • 来自相关话题

php如何使用第三方软件

本例是: php(mysql_connect()函数)使用mysql(第三方软件).




观察上图,php能使用大量的第三方非php库(典型性是C语言写库), 为了达到此目的,你必须具备两个条件:条件I. 安装第三方库(软件)
条件II. 安装了该软件的php扩展如果只是安装mysql,满足条件I,但是条件II不满足, 为了满足条件二, 我们需要了解php安装扩展的知识.

安装php, 大的方面还可以分为两种方式:方式1. 将扩展编译到php
方式2. 将扩展单独编译成动态连接库so文件

方式1的优点是运行速度快,但是为了一个扩展需要重新安装整个php
方式2灵活,但是运行速度稍慢.
windows平台下的php程序员大多只熟悉方式2,因为方式2是windows下安装Php扩展的唯一方式.之前如果安装了php, 如果没有删除php源码目录,重新进入该目录, 那么此时重新编译运行将采用增量方式,实际上比方式2还更方便些,永远的三步曲:./configure --prefix=/usr/local/php --with-mysql
make
make install有人质疑:
我安装mysql sdk,./configure命令一个–with-mysql就知道我安装的目录,还是有点神奇,难道他全硬盘搜索.h文件? 不是, 如果你用yum方式安装sdk,那么LD_LIBRARY_PATH系统变量就指示了该sdk相关信息 ,如果你使用源码(tar)安装mysql sdk,你的–with-mysql参数不得不像这样: –with-mysql=/your_mysql_sdk_dir/ 来指定了。
 
方式2:
以添加ftp模块为例子:进入源码目录
#cd php-5.2.8/ext/ftp
运行phpize configure
#/usr/local/php/bin/phpize
编译,指定php-config,留意这里的php-config,不是php.ini
#./configure --with-php-config='/usr/local/php/bin/php-config'
#上面可以添加--enable-ftp,也可以不添加
编译安装
(留意:假如之前有过添加其他模块肯定 要先 make clean ,不然 编译报错。)
#make && make install
生成一个目录来存放扩展的模块
#mkdir /usr/local/php/etc/php/ext
复制ftp.so到模块目次
#cp /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/ftp.so /usr/local/php/etc/ext/
编辑 php.ini文件,指定PHP到哪个目次读模块
#vi /usr/local/php/etc/php.ini
#extension_dir="/usr/local/php/etc/ext"
Load模块
#extension=ftp.so
#保存退出

重启apache,或者其他web服务器
再用/usr/local/php/bin/php -m|grep ftp #验证是否有ftp.so 查看全部


php如何使用第三方软件


本例是: php(mysql_connect()函数)使用mysql(第三方软件).
pload.png

观察上图,php能使用大量的第三方非php库(典型性是C语言写库), 为了达到此目的,你必须具备两个条件:
条件I. 安装第三方库(软件) 
条件II. 安装了该软件的php扩展
如果只是安装mysql,满足条件I,但是条件II不满足, 为了满足条件二, 我们需要了解php安装扩展的知识.

安装php, 大的方面还可以分为两种方式:
方式1. 将扩展编译到php 
方式2. 将扩展单独编译成动态连接库so文件

方式1的优点是运行速度快,但是为了一个扩展需要重新安装整个php
方式2灵活,但是运行速度稍慢.
windows平台下的php程序员大多只熟悉方式2,因为方式2是windows下安装Php扩展的唯一方式.
之前如果安装了php, 如果没有删除php源码目录,重新进入该目录, 那么此时重新编译运行将采用增量方式,实际上比方式2还更方便些,永远的三步曲:
./configure --prefix=/usr/local/php --with-mysql 
make
make install
有人质疑:
我安装mysql sdk,./configure命令一个–with-mysql就知道我安装的目录,还是有点神奇,难道他全硬盘搜索.h文件? 不是, 如果你用yum方式安装sdk,那么LD_LIBRARY_PATH系统变量就指示了该sdk相关信息 ,如果你使用源码(tar)安装mysql sdk,你的–with-mysql参数不得不像这样: –with-mysql=/your_mysql_sdk_dir/ 来指定了。
 
方式2:
以添加ftp模块为例子:
进入源码目录
#cd php-5.2.8/ext/ftp
运行phpize configure
#/usr/local/php/bin/phpize
编译,指定php-config,留意这里的php-config,不是php.ini
#./configure --with-php-config='/usr/local/php/bin/php-config'
#上面可以添加--enable-ftp,也可以不添加
编译安装
(留意:假如之前有过添加其他模块肯定 要先 make clean ,不然 编译报错。)
#make && make install
生成一个目录来存放扩展的模块
#mkdir /usr/local/php/etc/php/ext
复制ftp.so到模块目次
#cp /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/ftp.so /usr/local/php/etc/ext/
编辑 php.ini文件,指定PHP到哪个目次读模块
#vi /usr/local/php/etc/php.ini
#extension_dir="/usr/local/php/etc/ext"
Load模块
#extension=ftp.so
#保存退出

重启apache,或者其他web服务器
再用/usr/local/php/bin/php -m|grep ftp #验证是否有ftp.so

nginx error_page 404

运维技术Ansible 回复了问题 • 2 人关注 • 1 个回复 • 1613 次浏览 • 2015-09-27 23:48 • 来自相关话题

Ansible工作原理(2)

运维技术采菊篱下 发表了文章 • 0 个评论 • 1392 次浏览 • 2015-09-27 10:39 • 来自相关话题

HOW ANSIBLE WORKS

1.有效的体系结构
Ansible作品通过连接节点和推出小程序,称为“Ansible模块”。这些程序都写资源模型系统的所期望的状态。Ansible然后执行这些模块通过SSH(默认情况下),并完成后删除它们。

你的库的模块可以驻留在任何机器上,并且没有服务器守护进程,或数据库。通常你会使用你最喜欢的终端程序,一个文本编辑器,可能版本控制系统来跟踪你的内容的变化。

你的朋友SSH KEYS

支持密码,但SSH keys with key-agent使用Ansible是最好的方法之一。但如果您想要使用Kerberos,不错。很多选择!root不需要登录,您可以登录任何用户,然后su或sudo任何用户。

Ansible“authorized_key”模块是一个伟大的方式使用Ansible控制什么机器可以访问主机。其他选项,如kerberos或身份管理系统,也可以使用。
ssh-agent bash
ssh-add ~/.ssh/id_rsa管理你的主机在简单的文本文件中

默认情况下,Ansible代表什么机器使用一个非常简单的INI文件管理,管理你所有的机器组自己的选择。

添加新的机器,没有额外的SSL签名服务器的参与,所以没有任何麻烦决定为什么一个特定的机器没能联系起来,由于模糊的NTP或DNS问题。

如果在你的基础设施有一个真理的来源,也可以,用插件,如图库存,组,和来自像EC2,Rackspace,OpenStack变量的信息,或者更多。

下面是一个纯文本文件清单:
[webservers]
www1.example.com
www2.example.com

[dbservers]
db0.example.com
db1.example.com一旦库存列出主机变量可以分配给他们在简单的文本文件(子目录称为“group_vars /”或“host_vars /”或直接在库存文件。

或者,正如前面提到的,使用一个动态库存,库存等数据源EC2,Rackspace,或者OpenStack。
2.基础知识:使用ANSIBLE特设并行任务执行
一旦你有了一个实例,你可以谈论它,没有任何额外的设置:
ansible all -m ping
ansible foo.example.com -m yum "name=httpd state=installed"
ansible foo.example.com -a "/usr/sbin/reboot"请注意,我们已经访问原始状态的资源模块以及运行命令。这些模块是非常容易编写和Ansible ships with a fleet of them的大部分工作已经完成。

Ansible包含一个巨大的工具箱构建模块,超过200个。Module: http://docs.ansible.com/modules_by_category.html

Playbooks:一个简单+强大的自动化语言

Playbooks可以精心编排多个片基础设施拓扑,和非常详细的控制有多少机器来解决。这是Ansible开始变得最有趣的地方。

Ansible编排的方法是一个良好的简单,因为我们相信你的自动化代码应该完美的意义,应该有很少记住关于特殊的语法或特性。

这是一个Playbooks是什么样子的。作为一个提醒,这只是这里的宣传片,跳在docs.ansible.com的完整的文档和所有可能的。
---
[list]
[*]hosts: webservers[/*]
[/list] serial: 5 # update 5 machines at a time
roles:
- common
- webapp


[list]
[*]hosts: content_servers[/*]
[/list] roles:
- common
- contentAN EXAMPLE app_config.yml MIGHT LOOK LIKE:
---
[list]
[*]yum: name= state=installed[/*]
[/list] with_items:
- app_server
- acme_software

[list]
[*]service: name=app_server state=running enabled=yes[/*]
[/list]
[list]
[*]template: src=/opt/code/templates/foo.j2 dest=/etc/foo.conf[/*]
[/list] notify:
- restart app serverThe Ansible doc explores this in much greater depth. There’s a LOT more that you can do, including:
Ansible文档探索在更大的深度。还有很多,你可以做的,包括:
[]机器的负载平衡器和监控窗口[/][]有一个服务器知道所有其他人的IP地址使用事实收集关于这些特定的服务器,使用这些动态构建配置文件[/][]设置一些变量和其他提示,当他们没有设置默认值[/][]使用一个命令的结果决定是否运行另一个[/]
有很多先进的可能性但很容易开始最重要的是,语言仍是可读的、透明的,你从来没有声明明确的订购关系或编程语言编写代码。

EXTEND ANSIBLE: MODULES, PLUGINS and API

Should you want to write your own, Ansible modules can be written in any language that can return JSON (Ruby, Python, bash, etc). Inventory can also plug in to any datasource by writing a program that speaks to that datasource and returns JSON. There’s also various Python APIs for extending Ansible’s connection types (SSH is not the only transport possible), callbacks (how Ansible logs, etc), and even for adding new server side behaviors.

延长ANSIBLE:模块、插件和API

如果你想写自己的,Ansible模块可以用任何语言编写,可以返回JSON(Ruby、Python、bash等)。库存也可以插入到任何数据源通过编写一个程序,说到数据源并返回JSON。还有各种Python api扩展Ansible的连接类型(SSH可能不是唯一的运输),回调(如何Ansible日志等),甚至添加新的服务器端行为。

翻译原文:http://www.ansible.com/how-ansible-works 查看全部


HOW ANSIBLE WORKS


1.有效的体系结构
Ansible作品通过连接节点和推出小程序,称为“Ansible模块”。这些程序都写资源模型系统的所期望的状态。Ansible然后执行这些模块通过SSH(默认情况下),并完成后删除它们。

你的库的模块可以驻留在任何机器上,并且没有服务器守护进程,或数据库。通常你会使用你最喜欢的终端程序,一个文本编辑器,可能版本控制系统来跟踪你的内容的变化。

你的朋友SSH KEYS

支持密码,但SSH keys with key-agent使用Ansible是最好的方法之一。但如果您想要使用Kerberos,不错。很多选择!root不需要登录,您可以登录任何用户,然后su或sudo任何用户。

Ansible“authorized_key”模块是一个伟大的方式使用Ansible控制什么机器可以访问主机。其他选项,如kerberos或身份管理系统,也可以使用。
ssh-agent bash
ssh-add ~/.ssh/id_rsa
管理你的主机在简单的文本文件中

默认情况下,Ansible代表什么机器使用一个非常简单的INI文件管理,管理你所有的机器组自己的选择。

添加新的机器,没有额外的SSL签名服务器的参与,所以没有任何麻烦决定为什么一个特定的机器没能联系起来,由于模糊的NTP或DNS问题。

如果在你的基础设施有一个真理的来源,也可以,用插件,如图库存,组,和来自像EC2,Rackspace,OpenStack变量的信息,或者更多。

下面是一个纯文本文件清单:
    [webservers]
www1.example.com
www2.example.com

[dbservers]
db0.example.com
db1.example.com
一旦库存列出主机变量可以分配给他们在简单的文本文件(子目录称为“group_vars /”或“host_vars /”或直接在库存文件。

或者,正如前面提到的,使用一个动态库存,库存等数据源EC2,Rackspace,或者OpenStack。
2.基础知识:使用ANSIBLE特设并行任务执行
一旦你有了一个实例,你可以谈论它,没有任何额外的设置:
ansible all -m ping 
ansible foo.example.com -m yum "name=httpd state=installed"
ansible foo.example.com -a "/usr/sbin/reboot"
请注意,我们已经访问原始状态的资源模块以及运行命令。这些模块是非常容易编写和Ansible ships with a fleet of them的大部分工作已经完成。

Ansible包含一个巨大的工具箱构建模块,超过200个。Module: http://docs.ansible.com/modules_by_category.html

Playbooks:一个简单+强大的自动化语言

Playbooks可以精心编排多个片基础设施拓扑,和非常详细的控制有多少机器来解决。这是Ansible开始变得最有趣的地方。

Ansible编排的方法是一个良好的简单,因为我们相信你的自动化代码应该完美的意义,应该有很少记住关于特殊的语法或特性。

这是一个Playbooks是什么样子的。作为一个提醒,这只是这里的宣传片,跳在docs.ansible.com的完整的文档和所有可能的。
---
[list]
[*]hosts: webservers[/*]
[/list] serial: 5 # update 5 machines at a time
roles:
- common
- webapp


[list]
[*]hosts: content_servers[/*]
[/list] roles:
- common
- content
AN EXAMPLE app_config.yml MIGHT LOOK LIKE:
---
[list]
[*]yum: name= state=installed[/*]
[/list] with_items:
- app_server
- acme_software

[list]
[*]service: name=app_server state=running enabled=yes[/*]
[/list]
[list]
[*]template: src=/opt/code/templates/foo.j2 dest=/etc/foo.conf[/*]
[/list] notify:
- restart app server
The Ansible doc explores this in much greater depth. There’s a LOT more that you can do, including:
Ansible文档探索在更大的深度。还有很多,你可以做的,包括:
    []机器的负载平衡器和监控窗口[/][]有一个服务器知道所有其他人的IP地址使用事实收集关于这些特定的服务器,使用这些动态构建配置文件[/][]设置一些变量和其他提示,当他们没有设置默认值[/][]使用一个命令的结果决定是否运行另一个[/]

有很多先进的可能性但很容易开始最重要的是,语言仍是可读的、透明的,你从来没有声明明确的订购关系或编程语言编写代码。

EXTEND ANSIBLE: MODULES, PLUGINS and API

Should you want to write your own, Ansible modules can be written in any language that can return JSON (Ruby, Python, bash, etc). Inventory can also plug in to any datasource by writing a program that speaks to that datasource and returns JSON. There’s also various Python APIs for extending Ansible’s connection types (SSH is not the only transport possible), callbacks (how Ansible logs, etc), and even for adding new server side behaviors.

延长ANSIBLE:模块、插件和API

如果你想写自己的,Ansible模块可以用任何语言编写,可以返回JSON(Ruby、Python、bash等)。库存也可以插入到任何数据源通过编写一个程序,说到数据源并返回JSON。还有各种Python api扩展Ansible的连接类型(SSH可能不是唯一的运输),回调(如何Ansible日志等),甚至添加新的服务器端行为。

翻译原文:http://www.ansible.com/how-ansible-works

Ansible介绍(1)

运维技术采菊篱下 发表了文章 • 0 个评论 • 1734 次浏览 • 2015-09-27 10:25 • 来自相关话题

Ansible是一个自动化工具。它可以配置系统,部署软件,编排更高级的任务,比如连续部署或零停机时间滚动更新。

Ansible的目标是最简单和最易用。它也有一个强烈关注安全性和可靠性,以最少的移动部件,使用OpenSSH运输(加速插座模式和拉模式选择),和设计语言,人类可审核性的——甚至是那些不熟悉程序。

我们认为简单是所有大小的环境和相关的设计对于忙碌的所有类型的用户——这是否意味着开发人员、系统管理员,发布工程师,经理,无处不在。Ansible适合管理小设置少量的实例以及与许多成千上万的企业环境。

Ansible管理机器以最好的方式。没有一个问题如何升级远程守护进程或无法管理系统的问题因为守护进程是卸载。OpenSSH是最同行评议的开源组件,使用该工具的安全风险大大降低。Ansible是分散的,它依赖于现有的操作系统凭证来控制访问远程机器,如果需要使用Kerberos,它可以很容易地连接LDAP和其他管理系统的集中式身份验证。

Ansible是一个彻底的简单自动化引擎,自动化云配置,配置管理、应用程序部署,intra-service编排,以及许多其他的需求。

被设计为多层部署自第一天,Ansible模型你的IT基础设施,描述如何推动你所有的系统,而不仅仅是管理一个系统。

它使用没有代理,没有额外的自定义安全基础设施,所以很容易部署,最重要的是,它使用一个非常简单的语言(YAML Ansible Playbooks的形式),让你描述你的自动化工作的方式方法简明英语。

我们利用Ansible主要是作为内网服务器的一些管理,因为他用ssh来管理配置,内网同学还是很快速的,外网主要是利用Saltstack,利用消息队列远程通信,我感觉是比Ansible好的。 查看全部
Ansible是一个自动化工具。它可以配置系统,部署软件,编排更高级的任务,比如连续部署或零停机时间滚动更新。

Ansible的目标是最简单和最易用。它也有一个强烈关注安全性和可靠性,以最少的移动部件,使用OpenSSH运输(加速插座模式和拉模式选择),和设计语言,人类可审核性的——甚至是那些不熟悉程序。

我们认为简单是所有大小的环境和相关的设计对于忙碌的所有类型的用户——这是否意味着开发人员、系统管理员,发布工程师,经理,无处不在。Ansible适合管理小设置少量的实例以及与许多成千上万的企业环境。

Ansible管理机器以最好的方式。没有一个问题如何升级远程守护进程或无法管理系统的问题因为守护进程是卸载。OpenSSH是最同行评议的开源组件,使用该工具的安全风险大大降低。Ansible是分散的,它依赖于现有的操作系统凭证来控制访问远程机器,如果需要使用Kerberos,它可以很容易地连接LDAP和其他管理系统的集中式身份验证。

Ansible是一个彻底的简单自动化引擎,自动化云配置,配置管理、应用程序部署,intra-service编排,以及许多其他的需求。

被设计为多层部署自第一天,Ansible模型你的IT基础设施,描述如何推动你所有的系统,而不仅仅是管理一个系统。

它使用没有代理,没有额外的自定义安全基础设施,所以很容易部署,最重要的是,它使用一个非常简单的语言(YAML Ansible Playbooks的形式),让你描述你的自动化工作的方式方法简明英语。

我们利用Ansible主要是作为内网服务器的一些管理,因为他用ssh来管理配置,内网同学还是很快速的,外网主要是利用Saltstack,利用消息队列远程通信,我感觉是比Ansible好的。