centos 搭建git php自动部署。

2016-10-15 寒川 计算机

最近没什么事儿,研究了一下git自动部署,采用webhook用php执行同步git的方式进行自动部署。最开始整了好几小时,用的https连接git仓库,最终解决了,写下来作个简单的总结。

    在centos上搭建git,因centos上用yum install 命令默认装的是1.7.x的git,与最新的相差较大,同时带用户密码的https远程库无法访问,出现类似以下错误:

error: The requested URL returned error: 401 Unauthorized while accessing
因此需要安装最新版的git,安装如下:

1. 需要给 CentOS 下载安装编译工具。

yum groupinstall "Development Tools"
2.安装一些 git 构建或执行时需要的其他依赖。
yum install zlib-devel perl-ExtUtils-MakeMaker asciidoc xmlto openssl-devel
3. 下载 git 最新版本的源代码
$ wget -O git.zip https://github.com/git/git/archive/master.zip

4.解压源文件

unzip git.zip
5、编译安装
cd git-master
autoconf
./configure
make && make install
ln -s /usr/local/bin/git /usr/bin/ #如果在/usr/bin/下存在git,先删除后再执行此句
6、查看git版本,恭喜安装完成
git --version
6、其它:在git安装过程中出现如下错误:
No rule to make target `usr/lib64/per15/CORE/config.h`, needed by `perl.mak`. Stop
请执行
yum install -y perl-devel.x86_64
安装后重新执行第5步进行git的安装。

自动部署:

先cd进web服务器的web目录,再执行(注意用的www用户,www为php运行时的用户):

sudo -u www git init #初始化库
sudo -u www git remote add origin https://user:pass@git.oschina.net/xx/xx.git #添加一个仓库,注意,用户密码中有@时用%40代替。
加一个webhook,文件名为:git.php,内容如下:
<?php
$dir = __DIR__;
$handle = popen('cd '.$dir.' && git fetch --all && git pull origin master','r');
$read = stream_get_contents($handle);
print_r($read);
pclose($handle);
然后在git库中加些git.php为webhook即可。

标签: php linux CentOS git

评论(4) 浏览(4436)

Linux/Centos源码安装配置Nginx+PHP+MySQL

2016-5-24 寒川 计算机

一、安装前准备:
1、装源码安装环境(一大堆的依赖)
yum install gcc gcc-c++ ncurses-devel perl
yum -y install zlib zlib-devel openssl openssl-devel pcre-devel #nginx要用
yum install -y libxml2-devel libcurl-devel libjpeg-devel libpng-devel libicu-devel openldap-devel
yum install -y fontconfig fontconfig-devel libXpm* libtool* libxml2 curl curl-devel libpng libjpeg* libsepol-devel glibc gd php-gd libvpx-devel

2、装cmake(mysql编译需要)
wget https://cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz
tar -xzvf cmake-2.8.10.2.tar.gz
cd cmake-2.8.10.2
./bootstrap; make ; make install
cd ~
二、装nginx
1、增加www用户组及用户
groupadd www
useradd -g www www -s /bin/false


2、增加nginx的缓存文件夹

mkdir -p /var/cache/nginx/client_temp


3、下载解压进入目录:
wget http://nginx.org/download/nginx-1.9.15.tar.gz
tar -zxvf nginx-1.9.15.tar.gz
cd nginx-1.9.15

4、编译配置:
./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--http-client-body-temp-path=/var/cache/nginx/client_temp \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--user=www \
--group=www \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_stub_status_module \
--with-http_auth_request_module \
--with-mail \
--with-mail_ssl_module \
--with-file-aio \
--with-ipv6 \
--with-http_v2_module \
--with-pcre \
--with-cc-opt='-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic'


5、编译安装
make && make install
cd ~
6、启动
nginx -c /usr/local/nginx/nginx.conf
7、停止|重启
nginx -s stop|reload

三、装mysql
1、增加mysql用户组及用户
groupadd mysql
useradd -r -g mysql mysql
2、创建相关目录
mkdir -p /usr/local/mysql
mkdir -p /data/mysqldb
3、下载解压进入目录
wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.30.tar.gz
tar -zxv -f mysql-5.6.30.tar.gz
cd mysql-5.6.30



4、设置编译参数
装mysql-5.6.30版
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \   
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \   
-DDEFAULT_CHARSET=utf8 \   
-DDEFAULT_COLLATION=utf8_general_ci \   
-DWITH_INNOBASE_STORAGE_ENGINE=1 \   
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \   
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \   
-DMYSQL_DATADIR=/data/mysqldb \   
-DMYSQL_TCP_PORT=3306 \   
-DENABLE_DOWNLOADS=1

注:重新运行配置,需要删除CMakeCache.txt文件
rm CMakeCache.txt

5、编译源码
make && make install

6、修改mysql目录所有者和组
6.1、修改mysql安装目录
cd /usr/local/mysql
chown -R mysql:mysql .

6.2、修改mysql数据库文件目录
cd /data/mysqldb
chown -R mysql:mysql .

7、初始化mysql数据库
cd /usr/local/mysql   
scripts/mysql_install_db --user=mysql --datadir=/data/mysqldb

8、复制mysql服务启动配置文件
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf

9、复制mysql服务启动脚本
cp support-files/mysql.server /etc/init.d/mysqld   

10、增加执行权限
chmod 755 /etc/init.d/mysqld 

11、加入开机启动
chkconfig mysqld on 

12、mysql服务加入PATH路径
vim /etc/profile 
文件最后加入  
PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH  
export PATH
esc :wq

13、使配置生效
source /etc/profile  
14、启动
service mysqld start 

15、检查mysql服务是否启动
netstat -tulnp | grep 3306   
mysql -u root -p
密码为空,如果能登陆上,则安装成功。

16、修改MySQL用户root的密码
mysqladmin -u root password 'qiawei88'

四、装php5.6
1、下载解压进入目录
cd ~
wget http://cn2.php.net/distributions/php-5.6.21.tar.gz
tar -zxv -f php-5.6.21.tar.gz
cd php-5.6.21
2、编译配置
./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-pdo-mysql=/usr/local/mysql \
--with-gd --with-png-dir=/usr/local/libpng \
--with-jpeg-dir=/usr/local/jpeg \
--with-freetype-dir=/usr/local/freetype \
--with-xpm-dir=/usr/ \
--with-vpx-dir=/usr/local/libvpx/ \
--with-zlib-dir=/usr/local/zlib \
--with-iconv \
--enable-libxml \
--enable-xml \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--enable-opcache \
--enable-mbregex \
--enable-fpm \
--enable-mbstring \
--enable-ftp \
--enable-gd-native-ttf \
--with-openssl \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--without-pear \
--with-gettext \
--enable-session \
--with-curl \
--disable-fileinfo \
--enable-ctype


3、编译安装
make && make install

4、复制php配置文件到安装目录
cp php.ini-production /usr/local/php/etc/php.ini 

5、删除系统自带配置文件
rm -rf /etc/php.ini 

6、添加软链接到 /etc目录
ln -s /usr/local/php/etc/php.ini /etc/php.ini 

7、拷贝模板文件为php-fpm配置文件
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf 
8、添加软连接到 /etc目录
ln -s /usr/local/php/etc/php-fpm.conf /etc/php-fpm.conf

9、编辑php-fpm.conf 
vi /usr/local/php/etc/php-fpm.conf 

user = www #设置php-fpm运行账号为www
group = www #设置php-fpm运行组为www
pid = run/php-fpm.pid #取消前面的分号
:wq! #保存退出

10、拷贝php-fpm到启动目录
cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm

11、添加执行权限
chmod +x /etc/rc.d/init.d/php-fpm

12、设置开机启动
chkconfig php-fpm on #

五、配置nginx支持php

1、修改nginx.com的配置
vi /usr/local/nginx/nginx.conf

修改/usr/local/nginx/nginx.conf 配置文件,需做如下修改

user www www; #首行user去掉注释,修改Nginx运行组为www www;
必须与/usr/local/php/etc/php-fpm.conf中的user,group配置相同,否则php运行出错
index index.php index.html index.htm; #添加index.php

#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;
#}
#此段注释改为下面的内容
location ~ \.php$ {
root           html;
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name; # /scripts$fastcgi_script_name
include        fastcgi_params;
}

2、重启nginx
nginx -s reload 

3、启动php-fpm
service php-fpm start 


六、其他:
修改目录权限
chown -R www /usr/local/nginx/html
chgrp -R www /usr/local/nginx/html

标签: php mysql linux nginx lnmp

评论(4) 浏览(4260)

php利用curl登录页面并post提交数据上传文件

2015-11-26 寒川 网页编程

好久没写博客了,不知道的人或许会以为博客已经停止更新了,其实不然,确实最近比较忙。偶尔有空也只是上来删删一些垃圾留言。今天特地总结一下php的curl,显示用curl登录目标网站,接着携带cookie提交数据,用post方式提交,接着再上传一张本地图片。贴出这比较low的代码备用。闲话就不多说了,下面看招:

<?php
function login(){
	$url = 'http://xx.com/login.php';//登录地址
	$data = array(
		'username'=>'用户',//用户名,注意与原表单一致
		'password'=>'password'//用户密码,注意与原表单一致
	);
	$cookie_file = tempnam('./tmp','cookie');
	$ch = curl_init($url);
	curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36');  
	curl_setopt($ch, CURLOPT_HEADER, 0);  
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
	curl_setopt($ch, CURLOPT_MAXREDIRS, 1);  
	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);  
	curl_setopt($ch, CURLOPT_AUTOREFERER, 1);  
	curl_setopt($ch, CURLOPT_POST, 1);  
	curl_setopt($ch, CURLOPT_POSTFIELDS, $data);  
	curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);  
	curl_exec($ch);  
	curl_close($ch);
	return $cookie_file;
}

function post(){
	$data = array(
		'name'=>1,//注意与原表单一致
		'test'=>2,//注意与原表单一致
	);
	$cookie = login();
	$url="http://xx.com/xx.php";//数据提交地址
	$ch = curl_init($url);
	curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36');
	curl_setopt($ch, CURLOPT_HEADER, 0);  
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
	curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);  
	$str = curl_exec($ch);  
	curl_close($ch);
	unlink($cookie);
	return $str;
}


function uploadfile(){
	$cookie = login();
	$fields['data'] = 'data';//注意与原表单一致
	$fields['file'] = '@/www/web/xx.jpg;type=image/jpeg;filename=xx.jpg';//注意与原表单一致
	$url='http://xx.com/upload.php';//数据提交地址
	$ch = curl_init($url);
	curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36');
	curl_setopt($ch, CURLOPT_HEADER, 0);  
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt ($ch,CURLOPT_REFERER,'http://59.151.121.119:8082/mss/uploadHkrtImage.jhtml');
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
	curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);  
	$str =  curl_exec($ch);  
	curl_close($ch);
	unlink($cookie);
	return $str;
}
具体使用代码的时候记得注释部分修改成自己的。

标签: php curl 模拟登陆 cookie curl上传

评论(0) 浏览(5639)

smarty使用小总结

2014-7-7 寒川 网页编程

最近项目中使用到了smarty,先总结一点常用的功能,以备不时之需。

1、smarty循环计次:


{foreach from=$variable key=key name=loop iteam=value}
    {$variable|@count}     // 获取数组长度
    {$smarty.foreach.loop.index}    // 获取当前循环数组元素下标,以0开始
    {$smarty.foreach.loop.iteration}    // 获取当前循环次数,以1开始
    {$smarty.foreach.loop.first}    // 为true时,标记循环第一次执行
    {$smarty.foreach.loop.last}    // 为true时,标记循环最后一次执行
    {$smarty.foreach.loop.last}    // 为true时,标记循环最后一次执行
    {$smarty.foreach.loop.show}    // 当前是否显示
    {$smarty.foreach.loop.total}    // 循环次数
{/foreach}
2、smarty格式化日期:



{$smarty.now|date_format:"%Y-%m-%d %H:%M:%S"}


标签: php smarty

评论(0) 浏览(8371)

wdcp安装中文分词scws

2014-4-20 寒川 计算机

自从有了虚拟机,鼓捣的东西从没停过。昨晚为wdcp安装中文分词,今天整理如下,分享出来。

测试环境:

OS:centos6.5

WDCP:wdcp_v2.5.10(20140213) 

PHP:5.3.27

环境介绍完毕,下面是安装步骤:

cd /root #已root进入root目录
wget http://www.xunsearch.com/scws/down/scws-1.2.2.tar.bz2 #下载源码
tar xvjf scws-1.2.2.tar.bz2 #解压源码
cd scws-1.2.2 #进入源码目录
./configure --prefix=/usr/local/scws ; make ; make install #配置,安装
cd /usr/local/scws/etc #进入scws目录
wget http://www.xunsearch.com/scws/down/scws-dict-chs-gbk.tar.bz2 #下载gbk词库
wget http://www.xunsearch.com/scws/down/scws-dict-chs-utf8.tar.bz2 #下载utf8词库
tar xvjf scws-dict-chs-gbk.tar.bz2 #解压gbk词库
tar xvjf scws-dict-chs-utf8.tar.bz2 #解压utf8词库
cd /root/scws-1.2.2/phpext #进入php扩展源码目录
/www/wdlinux/apache_php-5.3.27/bin/phpize #侦测环境(phpize工具是在php安装目录下,基于这点phpize对应了当时的php环境,所以是要根据该php的配置情况生成对应的configure文件),建立一个configure文件。必须在一个目录下去运行phpize。那么phpize就知道你的的环境是哪个目录,并且configure文件建立在该目录下。
./configure --with-php-config=/www/wdlinux/apache_php-5.3.27/bin/php-config --with-scws=/usr/local/scws #配置
make install
配置php,在 php.ini 中加入以下几行:
 [scws]
 ;
 ; 注意请检查 php.ini 中的 extension_dir 的设定值是否正确, 否则请将 extension_dir 设为空,
 ; 再把 extension = scws.so 指定绝对路径。
 ;
 extension = /www/wdlinux/apache_php-5.3.27/lib/php/extensions/no-debug-non-zts-20090626/scws.so #此路径编译后会显示
 scws.default.charset = utf8
 ;上一行也可说gbk
 scws.default.fpath = /usr/local/scws/etc
service httpd restart #重启web服务器

若上述均无误,中文分词scws-1.2.2应该安装成功。 其他版本,请参考安装。

最后,可能出现用php分词时出现单字的情况,貌似词库没起作用。经测试,确实是没起作用,原因是词库不具有读写权限,手动设置一下就OK了。

标签: php CentOS wdcp 中文分词 scws

评论(1) 浏览(10665)

php分页函数

2014-1-2 寒川 网页编程

总结一下,我的简单的分页函数。
$p = isset($_GET['p'])?$_GET['p']:1;
echo _page(10,1100,$p,'page.php?');

function _page($pagesize,$num,$p,$url) {//每页显示数目,总记录,当前页数,返回分页url。
	$n=ceil($num/$pagesize);//页数
	$page ='<a title="首页" href="'.$url.'&p=1"><<</a>&nbsp;';
	$page .='<a title="上一页" href="'.$url.'&p='.($p-1<=1?1:$p-1).'"><</a>&nbsp;';
	$j = ceil($p/10);//当前组数
	$start = $j-1?($j-1)*10:1;
	$end = $n<=10?$n:$j*10;
	for($i=$start;$i<=$end;$i++) {
		if($i==$p) {
			$page .='<a>'.$i.'</a>&nbsp;';
		}else{
			$page .='<a title="第'.$i.'页" href="'.$url.'&p='.$i.'">'.$i.'</a>&nbsp;';
		}
	}
	$page .='<a title="下一页" href="'.$url.'&p='.($p+1>=$n?$n:$p+1).'">></a>&nbsp;';
	$page .='<a title="末页" href="'.$url.'&p='.($n?$n:1).'">>></a>';
	return $page;
}

标签: php 分页函数

评论(1) 浏览(6618)

对于不支持htaccess的主机不带www的域名301跳转到带www的域名

2013-2-26 寒川 网页编程

有个网站www.myxxb.com,新网的服务器,居然不支持htaccess,但是因绑定了两个域名,无法跳转。用下面代码搞定。在关键文件如conn.php中加入如下代码,一切搞定。

<?php

$from_host = $_SERVER['HTTP_HOST'];//来路域名

if(strtolower($from_host) != 'www.myxxb.com')//如果来路域名与需要的域名不符就进行跳转

$URIRedirect=$_SERVER['REQUEST_URI']; //获取域名后的参数

if(strtolower($URIRedirect)=="/index.php")//判断是参数为/index.php就显示为/

{

$URIRedirect="/";

}

header("HTTP/1.1 301 Moved Permanently");//发出301头部

header("Location: http://www.myxxb.com".$URIRedirect);//跳转到你希望的地址格式

exit();

}

标签: php 301转向 跳转

评论(3) 浏览(13239)

Powered by emlog 蜀ICP备12030225号

川公网安备 51042102000001号

sitemap