易栈网-膘叔

浏览模式: 标准 | 列表 | 图文
aliyun 安装gogs

aliyun 安装gogs

本来以为安装gogs是一件很轻松的事情不料发生了N多周折,一一记录下来

1、到官网下载二进制包:http://gogs.io/,具体页面请自己找
2、到aliyun上解压,然后到包里运行start.sh
问题就这样来了。。。
开始我没有下载二进制包,我下载的最新的版本,运行后提示:只有官方的二进制包才内置支持sqlite3。由于我不想装mysql所以。所以只能下载二进制包
1、运行后,提示我开放了端口3000,然后通过网页访问 ,最后提交的时候出错了,说是不能在root用户下运行:
Run user isn't the current user: git -> root
2、创建一个新用户,git ....
adduser --disabled-login --gecos 'GitLab' git
3、使用sudo运行:
sudo -u git ./start.sh
提示:
2014/07/18 09:37:43 [FATAL][github.com/gogits/gogs/models] publickey.go:72: publickey.init(fail to create sshPath(/root/.ssh)): mkdir /root/.ssh: permission denied
咦,怎么在/root下?好纠结
4、用su - git
su - git
切换 到了git 用户下。再运行提示:
2014/07/18 09:43:03 [log.go:76] [E] Fail to parse 'conf/app.ini': open /tmp/goconfig/867736331: permission denied
好吧。刚才是先用类似 root权限运行的。所以。。再次切换回root删除了刚才的目录,再su回来,重新运行。一切正常,然后在网页里输入信息,保存
又提示:
[martini] Started POST /install
[martini] PANIC: runtime error: invalid memory address or nil pointer dereference
/usr/local/src/go/src/pkg/runtime/panic.c:482 (0x48dffd)
崩溃了,这肿么办?
干脆点,直接运行:gogs web,这回是WEB页提示了:
Fail to save configuration: open /alidata1/software/gogits/gogs/custom/conf/app.ini: no such file or directory
于是手动创建目录 、文件,并chown权限为git。于是全解决了。
然后再回想一样,刚才的start.sh,是不是也是因为权限问题?果然再次就没有这个问题了。
----
回想整个过程,一切都是因为权限的原因,果然还是要细致才OK啊
php的curl函数怎么样请求https的网站

php的curl函数怎么样请求https的网站

说起curl请求https的网站,网上的教程很多,无非都是说在你没有证书的情况下,加上下面两句就可以了

<?php
curl_setopt_array($handle, array(
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false,

));
诚然,很多人在这么处理后就OK了,但我遇到的情况不一样,这两个加上之后,还是不能访问。
于是问了vampire,他让我试了一下在命令行下加参数访问,如:curl -3 https://xxxxx.com,顺利的得到了结果,https还是有version的。于是在上述的脚本里再加上一句:
CURLOPT_SSLVERSION => 3,
指定sslversion。
当然,这个值 不一定是3,只是我正好是在version为3的情况下访问正常罢了。实际情况还需实际对待。
话说回来,我在curl在访问的时候报的错是:
curl: (35) error:14077458:SSL routines:SSL23_GET_SERVER_HELLO:reason(1112)
Over。
linux bash判断文件或文件夹是否存在

linux bash判断文件或文件夹是否存在

在写shell脚本的时候,还是有些注意事项的,比如。。空格,给变量赋值不能有空格,象a=1就不能写成a = 1,刚开始的时候好纠结。。

写判断语句的时候[]之间一定要有空格。以下是一些常见的判断:

#如果文件夹不存在,创建文件夹
if [ ! -d "/myfolder" ]; then
mkdir /myfolder
fi

#shell判断文件,目录是否存在或者具有权限


folder="/var/www/"
file="/var/www/log"

# -x 参数判断 $folder 是否存在并且是否具有可执行权限
if [ ! -x "$folder"]; then
mkdir "$folder"
fi

# -d 参数判断 $folder 是否存在
if [ ! -d "$folder"]; then
mkdir "$folder"
fi

# -f 参数判断 $file 是否存在
if [ ! -f "$file" ]; then
touch "$file"
fi

# -n 判断一个变量是否有值
if [ ! -n "$var" ]; then
echo "$var is empty"
exit 0
fi

# 判断两个变量是否相等
if [ "$var1" = "$var2" ]; then
echo '$var1 eq $var2'
else
echo '$var1 not eq $var2'
fi
macosx 10.10 开启深色模式

macosx 10.10 开启深色模式

比较简单

打开:
sudo defaults write /Library/Preferences/.GlobalPreferences AppleInterfaceTheme Dark
关闭:
sudo defaults write /Library/Preferences/.GlobalPreferences AppleInterfaceTheme Light
第二行其实就是恢复啦
切换到Dark模式后,去系统设置的general中将Appearance也改成Graphite,有写这个改动是:for menu,button和windows。

这回就真黑色了,但。。。大部分菜单都还没有反白,真让人揪心,不知道什么时候可以正常
ThinkPHP的主从数据库配置

ThinkPHP的主从数据库配置

最近涉及到的项目中用到了thinkphp,我都N年没有碰过这玩意了。但现在还是需要用一用。正好那些能够下载得到的wxcms也可以用这个来优化一下性能。。其实我就一台服务器。装逼而已

于是转一下别人的文章,因为他其中特别写了一句:只要是exec就一定从主库走,query一定从从库走。所以建议query中不要有实际的更新和插入操作。以防万一
原文地址:http://www.verydemo.com/demo_c327_i782.html
前言:
Thinkphp 框架本身是支持读写分离的,如何做呢?
最简单的做法是在配置文件中修改:
'DB_TYPE'=> 'mysql',
'DB_DEPLOY_TYPE' => 1, //开打支持多服务器
'DB_RW_SEPARATE'=>true, //读写<strong>分离</strong>分开
'DB_HOST'=> '192.168.100.78,192.168.100.60', // 数据库服务器地址 master(写)/slave(读)
'DB_NAME'=>'test',
'DB_USER'=>'root',
'DB_PWD'=>'root',
'DB_PREFIX' => 'fav_',
默认第一台数据库78是主数据库,负责写入操作,第二台60负责读操作,Thinkphp 会自动识别读和写,然后分配链接对应的数据库,来达到读写分离的效果。
注意事项:
1. 如果要设置分布式数据库,暂时不支持DB_DSN方式配置。
2.如果你当前采用了分布式数据库,并且设置了读写分离的话,query方法始终是在读服务器执行,因此query方法对应的都是读操作,而不管你的SQL语句是什么。
3.如果你当前采用了分布式数据库,并且设置了读写分离的话,execute方法始终是在写服务器执行,因此execute方法对应的都是写操作,而不管你的SQL语句是什么。
因此,'DB_DSN'=> 'mysql:host=192.168.100.60;dbname=51fanli_cang', 这种方式不支持主从分离,需要改。
当采用原生态的sql语句进行写入操作的时候,要用execute,读操作要用query,切记,否则乱掉了。
搞定!
---EOF---
curl和wget,折腾几个小时的服务器

curl和wget,折腾几个小时的服务器

标题其实没什么,主要原因是。我在两台机器上部署了同样的程序,一个访问的时候一直显示404,一个就一直正常。死活找不到原因

1、背景

两台服务器,都是CentOS,一个可以公网访问,一个只能内网访问,因此一个可以在浏览器里打开,一个只能用命令行访问,习惯性的,我使用了wget

2、浏览器访问正常,命令行显示404

3、配置完全一样,问题不明。

wget的时候显示404,无输出。。也就导致没有任何文件信息被下载

4、使用的YII框架。结果,记录的LOG,分组了只记录了system.db,404的LOG未被记录

5、调整策略:

a.用curl(有朋友建议)

b.把LOG改为全部记录

于是就发现问题了。LOG里显示无默认控制器。CURL直接输出错误信息

原来,WGET看到http头是404后就不再下载内容,即使我有在文件里有输出,而CURL默认就是按浏览器访问的显示而正常输出在屏幕上。

问题解决。记录一下。就因为WGET和CURL的默认机制不一样。吐血三升

2B的阿里系产品经理

积怨以久了。我不知道这个行为是怎么出来的。。。说说我的步骤和问题吧

1、我有一个淘宝帐号A,我有一个阿里妈妈帐号

2、我要登录阿里妈妈,阿里妈妈说你不能登录了,请使用淘宝帐号吧。在不明所以的情况下,翻看了阿里妈妈的N个帖子。学会了绑定,但是说不能绑定是卖家的帐号,或者曾经当过卖家的帐号。

3、重新注册一个新的淘宝帐号B(用邮箱注册因为我就一个手机,原来的帐号已经绑定手机了)。他们又顺便帮我开通了支付宝(真是感谢啊。。。所幸支付宝还能和现在的帐户绑定,毕竟我身份证只有一个。这理由真扯蛋)

4、上周五刚注册时。阿里妈妈能够登录了。好开心

5、周一,再登录。突然提示说:帐户存在异常,要我验证后才能开通

6、输入用户名密码,下一步的时候提示我,请输入手机号,还说:“1.请您放心,手机号码仅用于系统生成短信编码,不会对外泄露”,于是我输入了我的手机(绑定A的手机),结果它提示我:“此手机已绑定其他账户,无法进行验证,建议更换其他号码操作”

首先我想问的是,如果你只是用于生成短信编码,你为什么还要一个未使用过的手机?其次,我明明是采用邮箱注册的,你不用邮箱来验证,却要使用手机?

7、咨询客服。客服说无法解决,一定要我绑定手机,还要我将原来的淘宝帐号绑定的手机解绑。

这真是一个笑话。好吧,至此,如果我不能登录,相当于我毁了一个7年的阿里妈妈帐号,毁了一个新的淘宝帐号、毁了一个支付宝帐号。

虽然阿里妈妈帐号没什么钱,只是我觉得负责这两个项目,或者说让我这样验证的产品经理很2B。不管是阿里妈妈的还是淘宝的。。这种思维真有意思。

转:WebSphere MQ7 在Ubuntu上的安装

转:WebSphere MQ7 在Ubuntu上的安装

先申明。。。参考本文,我并没有成功的搭建成功。因为我在执行第一个rpm --nodeps -ivh Runtime的时候。不是按照预想的安装在了/opt/mqm下面,而是提示我安装在/ filesystem下。所以我就没有办法下一步。因为在执行第二个安装的时候,它提示我没有在/opt/mqm下找到runtime。。。

不过我还是做个记录,因为我是debian系统。也许ubuntu下就会成功呢??原文来自:http://qtlkw.iteye.com/blog/744052

我转贴的并不全。下面的一些介绍我没有转,如果有兴趣可以移步原文,以下是转贴:

可参照文档http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/index.jsp?topic=/com.ibm.mq.amq1ac.doc/lq10120_.htm 和http://blog.csdn.net/lang_ysh/archive/2010/03/18/5391971.aspx

1. Download WebSphere MQ7 tar.gz
2. run tar -zxvf CZ4VDML.tar.gz
3(optional). 创建WebSphere MQ 必需的文件系统,命令如下:
# for product code
mkdir /opt/mqm
# for working data
mkdir /var/mqm
网上看到说MQ安装时候默认的目录就是这两个
4. 创造MQ用户和用户组,命令如下:
groupadd mqm
useradd -d /var/mqm -g mqm -G mqm mqm
# change password to "password"
passwd mqm
5. 为mqm用户组添加root组
cd /etc
vi group
找到mqm:x:1003:mqm增加",root",修改成: mqm:x:1003:mqm,root
6(optional). 调整系统参数(视需要而定,我安装时并没修改)
make following kernel changes (/etc/sysctl.conf ):
kernel.msgmni = 1024
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.sem = 500 256000 250 1024
fs.file-max = 32768
net.ipv4.tcp_keepalive_time = 300

To load these sysctl values immediately, enter the command sysctl -p.
If you do not issue the sysctl -p command, the new values are loaded when the system is rebooted.
7. 安装rpm
sudo apt-get install rpm
8. 转到WebSphere MQ解压后的目录中,获得WebSphere MQ授权,命令如下:
./mqlicense.sh -text_only
阅读全文后,选择1接受授权。
9. 安装WebSphere MQ客户端和服务端,命令如下:
rpm --nodeps -ivh MQSeriesRuntime-7.0.1-0.i386.rpm
rpm --nodeps -ivh MQSeriesSDK-7.0.1-0.i386.rpm
rpm --nodeps -ivh MQSeriesJava-7.0.1-0.i386.rpm
rpm --nodeps -ivh MQSeriesClient-7.0.1-0.i386.rpm
rpm --nodeps -ivh MQSeriesSamples-7.0.1-0.i386.rpm

rpm -nodeps -ivh MQSeriesServer-7.0.1-0.i386.rpm(如果只装客户端,这个没必要安装)
原因: 不加-nodeps会报:
root@localhost:/apps# rpm -ivh MQSeriesRuntime-7.0.1-0.i386.rpm
error: Failed dependencies:
/bin/sh is needed by MQSeriesRuntime-7.0.1-0.i386
10. 安装校验
rpm -qa | grep MQSeries
MQSeriesSDK-7.0.1-0
MQSeriesClient-7.0.1-0
MQSeriesServer-7.0.1-0
MQSeriesRuntime-7.0.1-0
MQSeriesJava-7.0.1-0
MQSeriesSamples-7.0.1-0

安装MQ Explorer还需要安装其它的包:

MQSeriesConfig-7.0.1-0.i386.rpm

MQSeriesEclipseSDK33-7.0.1-0.i386.rpm

MQSeriesJRE-7.0.1-0.i386.rpm

至此MQ安装完成。

--END--

转:MQ+PHP – Linking IBM’s WebSphere MQ to PHP

转:MQ+PHP – Linking IBM’s WebSphere MQ to PHP

我在上一篇博客在centos下处理PHP+WebSphere客户端中提到了一个英文网站:http://blog.phpdeveloper.org/?p=140,我也是参考它才完成了最终的配置,为此我也写了中文的说明,但感觉文笔不行,所以我还是贴上原文吧:

During a recent project at work I had to get PHP linked with IBM’s WebSPhere MQ software we have running on another internal server. Our goal was to use our existing web service to take the requests from external vendors and push their XML data back into the queue inside our firewall. Thankfully there’s an extension in PECL that does just that.

Here’s the basic steps I took – hopefully it’ll be useful to someone else out there in the same spot I was. This all assumes you’re working on a web server that doesn’t have an MQ server installed already:

  • Get the extension: Head over to the PECL page for mqseries and download the latest version. Unpack it into a directory on your local server
  • Get the MQ client libs: You’ll need to go to IBM’s website to download the latest client/libraries for your install (you’ll need an IBM ID to get to the downloads):
    • Go to the IBM page for the MQ client listing
    • Look for the “WebSphere MQ Clients” link under the “Related products and technologies” section and click on it
    • Scroll down to the “Download Package” section and choose from one of the mirror locations
    • Select your package from the list (I went with “Linux for System x86″ for our setup)
    • Click on the download link and fill out some required information (you didn’t think you were getting off that easy, did you?)
    • Agree to the terms and conditions and you’ll get a “Download Now” link
    • Drop the archive file (tar, tar.gz, etc) into your server and unpack into a temporary directory (mine had an issue unpacking into the local directory, not a subdirectory)
  • Install the package(s): Once you have the IBM software extracted, you should have a series of packages. You’ll need to install the “MQSeriesSDK” to get the right libraries in place to compile the PHP extension
  • Build the mqseries extension: Go into the mqseries directory and run “phpize”, “./configure” and “make” to create the .so file. The process should drop it into the default extensions directory.
  • If needed, move it: Be sure that the shared module for the extension is in the right directory for the PHP install to find it. (You can make a phpinfo() page if you’re not sure where that is.)
  • Update your php.ini: Add in a line to include the extension in your current setup. Remember, after any changes to the php.ini, you need to restart the web server.

Now for the fun part – if everything’s working and the extension shows up in your phpinfo() as active, give this script a shot and see if you can connect to your MQ server:

1 $mq_host_ip ='127.0.0.1';
2 $queue_name = 'HOST.REMOTE.Q';
3 $mq_server = 'WBRK_QM_U49';
4 $mqcno = array(
5 'Version' => MQSERIES_MQCNO_VERSION_2,
6 'Options' => MQSERIES_MQCNO_STANDARD_BINDING,
7 'MQCD' => array(
8 'ChannelName' => 'CLIENT.CHANNEL',
9 'ConnectionName' => $mq_host_ip,
10 'TransportType' => MQSERIES_MQXPT_TCP
11 )
12 );
13
14 // Connect to the MQ server
15 mqseries_connx($mq_server,$mqcno,$conn,$comp_code,$reason);
16 if ($comp_code !== MQSERIES_MQCC_OK) {
17 trigger_error('Cannot open connection to server: '.$mq_server,E_USER_ERROR);
18 }else{
19 echo 'Connection good!';
20 }

Obviously you’ll need to adjust the settings to fit your server, but at least this gives you a start.

--END

在centos下处理PHP+WebSphere客户端

在centos下处理PHP+WebSphere客户端

事先申明。我是借鉴了这篇博客:http://blog.phpdeveloper.org/?p=140

当然在其中遇到了不少问题,我在这里一一说明:
1、准备工作
a. pecl mqseries :http://pecl.php.net/package/mqseries
b. ibm mq client: http://www-01.ibm.com/software/integration/wmq/clients/
2、步骤:
1、先安装ibm mq client :下载地址最终是要翻墙的,我这里不教翻墙技术。下载完后,解开压缩,在centos下面,直接rpm -ivh
MQSeriesRuntime-7.5.0-3.x86_64.rpm,和rpm -ivh MQSeriesSDK-7.5.0-3.x86_64.rpm ,由于我们只是当成一个client库来连接,因此安装这两个就够了
2、编译mqseries。在这里我吃药了,我下载的是0.14版的,我一看更新时间是2014年。我想这是最新的总没问题吧。结果。。。./configure到最后的时候,说--with-libdir=lib64找不到,让我指定。可是我明明指定了也不能安装。于是google了一下,发现这曾经是一个BUG。在2012年解决掉了。在bug.php.net里。写的是bug fixed。所以我下载了0.13的,然后再安装,果然成功了
3、测试
<?php
$mq_host_ip ='127.0.0.1';
$queue_name = 'HOST.REMOTE.Q';
$mq_server = 'WBRK_QM_U49';
$mqcno = array(
'Version' => MQSERIES_MQCNO_VERSION_2,
'Options' => MQSERIES_MQCNO_STANDARD_BINDING,
'MQCD' => array(
'ChannelName' => 'CLIENT.CHANNEL',
'ConnectionName' => $mq_host_ip,
'TransportType' => MQSERIES_MQXPT_TCP
)
);

// Connect to the MQ server
mqseries_connx($mq_server,$mqcno,$conn,$comp_code,$reason);
if ($comp_code !== MQSERIES_MQCC_OK) {
trigger_error('Cannot open connection to server: '.$mq_server,E_USER_ERROR);
}else{
echo 'Connection good!';
}
$mq_server从手册上看得知这应该是:queue_manager,所以应该是manager的名称
如果你访问的mq不是默认的端口号,还要加上端口号。我在这里走了不少弯路。我原来connectionName是写成:127.0.0.1:1234,报错2387,意思是host not avarible。查了下资料,原来端口号应该是 ip(port),也就是说得:127.0.0.1(1234) 这样的形式才OK。于是改好后再测试就通过啦。
----
我是在一台干净的Centos上安装的。所以做了很多准备工作:
1、 yum install php php-devel(devel里面才有phpize)
2、yum install gcc gcc-c++ g++
然后在安装的时候还有提示:you will need re2c ...于是找到这个博客:http://denghai260.blog.163.com/blog/static/726864092012260242533/
里面说道:
wget http://sourceforge.net/projects/re2c/files/re2c/0.13.5/re2c-0.13.5.tar.gz/download
tar -zxvf re2c-0.13.5.tar.gz
cd re2c-0.13.5
./configure && make && make install
至此,遇到的所有的问题都解决了。