LNAMP|LAMP|PHP团队(多人)开发环境搭建配置教程

    经常听到团队的小伙伴说:这个版本的扩展真难找,在本地运行正常的代码,上线之后却运行异常…诸如此类的问题大多是因为系统差异、扩展缺失、版本差异引起的。要解决此类问题搭建一个和线上一致的多人开发环境即可解决。
    思路:搭建一台本地开发服务器,开发服务器和线上服务器环境保持一致,用samba服务映射到本地电脑磁盘,团队中所有人的开发代码都存储在开发机上,所有人的代码都是在开发机器上运行;团队成员无需再单独搭建开发环境,只需要挂载远程目录到本地磁盘,加上DNS解析,开发机上apache根据域名绑定对应的目录即可。
搭建过程:
1.一台PC主机,U盘安装CentOS5.11;
2.安装lamp或lnamp或lnmp环境,网上有很多关于LNAMP或LAMP组合安装的教程(我写过的另一篇博文,有需要的请移步->:LAMP安装手记(CentOS6.4+Apache-2.2.22+Mysql-5.1.63+PHP-5.2.17+phpmyadmin-3.4.10.2+ZendDebug),安装过程不再赘述,本文主要讲如何配置多人开发环境。
3.配置步骤
修改防火墙规则
vi /etc/sysconfig/iptables
添加如下规则
#samba
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 137 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 138 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT
service iptables restart
4.安装samba
yum install samba system-config-samba samba-client samba-common
编辑samba配置文件
vi /etc/samba/smb.conf
[homes]
        comment = Home Directories
        browseable = no
        writable = yes
        create mode = 0755
        force create mode = 0755
        directory mode = 0755
        force directory mode = 0755
;       valid users = %S
;       valid users = MYDOMAIN\%S
[share]
        workgroup = www
        netbios name = www
        path = /home/share
        browseable = yes
        writeable = yes

service smb restart
[home]目录是每个samba账号对应的个人目录,就是/home下的个人目录,这里也就是每个账号对应的挂载目录;
[share]是共享目录。

简单介绍一下这几个参数的含义:

  • create mode – 这个配置定义新创建文件的属性。Samba在新建文件时,会把dos文件的权限映射成对应的unix权限,在映射后所得的权限,会与这个参数所定义的值进行与操作。然后再和下面的force create mode进行或操作,这样就得到最终linux下的文件权限。
  • force create mode – 见上面的描述。相当于此参数所设置的权限位一定会出现在文件属性中。
  • directory mode – 这个配置与create mode参数类似,只是它是应用在新创建的目录上。Samba在新建目录时,会把dos–>linux映射后的文件属性,与此参数所定义的值相与,再和force directory mode相或,然后按这个值去设置目录属性。
  • force directory mode – 见上面的描述。相当于此参数中所设置的权限位一定会出现在目录的属性中。

说明一点,上面的create mode和create mask参数是同义词,用哪个都可以;而directory mode和directory mask参数是相同的。

创建账号:
useradd zhangsan   
passwd zhangsan
chmod -R 0755 /home/zhangsan
smbpasswd -a zhangsan                         创建samba账号
service smb reload

测试samba 快捷键 windows(开始键)+R 在弹出的框中输入 \\samba服务器地址  然后回车 输入账号密码 如下图所示即为搭建配置成功

映射磁盘驱动器:

映射成功。

5.配置apache

编辑apache配置文件httpd.conf 添加
vi httpd.conf
Include /usr/local/apache/conf/vhost/*.conf
在/usr/local/apache/conf/vhost目录中添加配置文件
vi test.data.house.sina.com.cn.conf 
添加如下内容
<VirtualHost *:88>
        ServerName test.house.sina.com.cn
        #ServerAlias localhost
        DocumentRoot /home/yangyi/test.house.sina.com.cn
        DirectoryIndex index.php index.html index.htm
        <Directory /home/yangyi/test.house.sina.com.cn>
                Options +Includes -Indexes
                AllowOverride All
                Order Deny,Allow
                Allow from All
                php_admin_value open_basedir /home/yangyi/test.house.sina.com.cn:/tmp:/proc
        </Directory>
</VirtualHost>
重启apache
service httpd restart
本地添加DNS解析
192.168.1.110 test.house.sina.com.cn

在映射目录创建文件夹 添加测试文件 如下所示:

test_web_service

搭建配置成功!

参考:

快速配置 Samba 将 Linux 目录映射为 Windows 驱动器,用于跨平台编程

CentOS6.3 Samba安装配置、多用户、加域

Centos搭建Samba

设置Samba服务器中新建文件/目录的权限

附可能遇到的问题及解决办法:

<1>.httpd: Could not reliably determine the server’s fully qualified domain name

    http://blog.csdn.net/aidenliu/article/details/6589040

<2>.防火墙配置

    http://bbs.51cto.com/thread-830123-1.html

<3>.PHP 配置文件中open_basedir选项作用

    http://www.jb51.net/article/19231.htm

<4>.phpnow:open_basedir restriction in effect;file is not within the allowed path

    http://blog.sina.com.cn/s/blog_6328fd3a0100rh5y.html

<5>.PHP 错误日志报告等级

    http://www.cnblogs.com/lost-1987/articles/2982380.html

<6>.PHP Fatal error: require_once(): Failed opening required 

    https://bbs.archlinux.org/viewtopic.php?id=57877 (参考这个解决了问题)

    http://superuser.com/questions/590208/phpmyadmin-symlinks-error-after-ubuntu-upgrade

    http://kb.odin.com/en/6065

未经授权请勿转载:怡然之乐 – FineYi

Linux|CentOS+Nginx+Apache+MySQL+PHP+Tomcat的配置教程,完美支持PHP、JAVA

网上有很多关于LNAMP或LAMP组合安装的教程(我写过的另一篇博文,有需要的请移步->:LAMP安装手记(CentOS6.4+Apache-2.2.22+Mysql-5.1.63+PHP-5.2.17+phpmyadmin-3.4.10.2+ZendDebug),安装过程不再赘述,本文主要讲如何在LNAMP环境下安装JDK+Tomcat6使同一台服务器同时支持PHP和JAVA语言。
服务器系统和各软件版本如下所示:
[root@E ~]# uname -a 
Linux E.CentOS6.4 2.6.32-358.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux 
[root@E ~]# /www/wdlinux/nginx/sbin/nginx -v 
nginx version: nginx/1.2.9 
[root@E ~]# /www/wdlinux/httpd-2.2.24/bin/httpd -v 
Server version: Apache/2.2.24 (Unix) 
Server built: Oct 30 2014 00:17:07 
[root@E ~]# rpm -qa |grep mysql 
mysql-libs-5.1.66-2.el6_3.x86_64 
[root@E ~]# /www/wdlinux/php/bin/php -v 
Cannot load Zend Extension Manager - it was built with configuration 1.2.0, whereas running engine is API220090626,NTS 
PHP 5.3.27 (cli) (built: Oct 30 2014 00:30:02) 
Copyright (c) 1997-2013 The PHP Group 
Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies
1
开始安装jdk:
列出yum库可用的jdk安装包
[root@E ~]# yum -y list java* 
Loaded plugins: fastestmirror 
Loading mirror speeds from cached hostfile 
* base: mirror.bit.edu.cn 
* extras: mirror.bit.edu.cn 
* rpmforge: mirrors.neusoft.edu.cn 
* updates: mirrors.neusoft.edu.cn 
base | 3.7 kB 00:00 
extras | 3.3 kB 00:00 
rpmforge | 1.9 kB 00:00 
updates | 3.4 kB 00:00 
updates/primary_db | 171 kB 00:00 
Available Packages 
java-1.5.0-gcj.x86_64 1.5.0.0-29.1.el6 base 
java-1.5.0-gcj-devel.x86_64 1.5.0.0-29.1.el6 base 
java-1.5.0-gcj-javadoc.x86_64 1.5.0.0-29.1.el6 base 
java-1.5.0-gcj-src.x86_64 1.5.0.0-29.1.el6 base 
java-1.6.0-openjdk.x86_64 1:1.6.0.33-1.13.5.0.el6_6 updates 
java-1.6.0-openjdk-demo.x86_64 1:1.6.0.33-1.13.5.0.el6_6 updates 
java-1.6.0-openjdk-devel.x86_64 1:1.6.0.33-1.13.5.0.el6_6 updates 
java-1.6.0-openjdk-javadoc.x86_64 1:1.6.0.33-1.13.5.0.el6_6 updates 
java-1.6.0-openjdk-src.x86_64 1:1.6.0.33-1.13.5.0.el6_6 updates 
java-1.7.0-openjdk.x86_64 1:1.7.0.71-2.5.3.1.el6 updates 
java-1.7.0-openjdk-demo.x86_64 1:1.7.0.71-2.5.3.1.el6 updates 
java-1.7.0-openjdk-devel.x86_64 1:1.7.0.71-2.5.3.1.el6 updates 
java-1.7.0-openjdk-javadoc.noarch 1:1.7.0.71-2.5.3.1.el6 updates 
java-1.7.0-openjdk-src.x86_64 1:1.7.0.71-2.5.3.1.el6 updates 
java-1.8.0-openjdk.x86_64 1.8.0.25-1.b17.el6 updates 
java-1.8.0-openjdk-demo.x86_64 1.8.0.25-1.b17.el6 updates 
java-1.8.0-openjdk-devel.x86_64 1.8.0.25-1.b17.el6 updates 
java-1.8.0-openjdk-headless.x86_64 1.8.0.25-1.b17.el6 updates 
java-1.8.0-openjdk-javadoc.noarch 1.8.0.25-1.b17.el6 updates 
java-1.8.0-openjdk-src.x86_64 1.8.0.25-1.b17.el6 updates 
java_cup.x86_64 1:0.10k-5.el6 base 
java_cup-javadoc.x86_64 1:0.10k-5.el6 base 
java_cup-manual.x86_64 1:0.10k-5.el6 base 
javacc.x86_64 4.1-0.5.el6 base 
javacc-demo.x86_64 4.1-0.5.el6 base 
javacc-manual.x86_64 4.1-0.5.el6 base 
javassist.noarch 3.9.0-6.el6 base 
javassist-javadoc.noarch 3.9.0-6.el6 base
2
选择jdk1.6安装
[root@E ~]# yum -y install java-1.6.0-openjdk*
其它版本请自己修改对应的版本号安装
检测是否安装成功
[root@E ~]# java -version 
java version "1.6.0_33" 
OpenJDK Runtime Environment (IcedTea6 1.13.5) (rhel-1.13.5.0.el6_6-x86_64) 
OpenJDK 64-Bit Server VM (build 23.25-b01, mixed mode)
3
安装tomcat6
[root@E ~]# yum install tomcat6 tomcat6-webapps tomcat6-admin-webapps
安装成功 启动
[root@E ~]# service tomcat6 start
其它命令:service tomcat6 {start|stop|restart|condrestart|try-restart|reload|force-reload|status|version}
启动成功,访问测试:http://ip:8080
如下图所示即为安装成功:
5
 
配置nginx和tomcat,使其不加端口号,直接通过域名也能访问
首先增加解析,使域名指向到主机IP,本地可以直接改host实现
6
解析正常
不加8080端口访问
7
添加8080端口访问
8
接下来修改nginx和tomcat的配置使其不加端口号也能访问到tomcat的webservice
[root@E ~]# cd /www/wdlinux/nginx/conf/vhost/
[root@E ~]# vi myweb.com.conf
添加如下内容
server { 
listen 80;
server_name www.myweb.com myweb.com;
#root /www/web/master_myweb_com/public_html;
index index.html index.jsp index.htm;
error_page 400 /errpage/400.html;
error_page 403 /errpage/403.html;
error_page 404 /errpage/404.html;
error_page 405 /errpage/405.html;
location ~ \.jsp$ {
proxy_pass http://127.0.0.1:8080;
include naproxy.conf;
}
location / {
try_files $uri @tomcat;
}
location @tomcat {
proxy_pass http://127.0.0.1:8080;
include naproxy.conf;
    }
    access_log /www/web_logs/myweb_com_access.log wwwlogs;
    error_log /www/web_logs/myweb_com_error.log;
}
重新加载nginx配置文件或重启nginx
[root@E vhost]# service nginxd reload 
nginx: the configuration file /www/wdlinux/nginx/conf/nginx.conf syntax is ok 
nginx: configuration file /www/wdlinux/nginx/conf/nginx.conf test is successful
不加端口号访问测试:
9
至此nginx已经成功将来自myweb.com域名的请求代理到8080端口
如果需要配置多域名的话,还需要修改tomcat虚拟主机配置文件
默认配置文件路径:/etc/tomcat6/
默认项目路径:/var/lib/tomcat6/webapps/
tomcat默认指向/var/lib/tomcat6/webapps/ROOT目录
创建新项目目录,这里直接复制ROOT项目,进行修改
[root@E webapps]# pwd 
/var/lib/tomcat6/webapps
[root@E webapps]# chown -R root myweb.com
修改权限,使新项目权限和默认项目权限一致
[root@E webapps]# chgrp -R tomcat myweb.com
[root@E webapps]# ll 
总用量 24 
drwxrwxr-x 5 root tomcat 4096 10月 30 22:06 examples 
drwxrwxr-x 5 root tomcat 4096 10月 30 22:06 host-manager 
drwxrwxr-x 5 root tomcat 4096 10月 30 22:06 manager 
drwxr-xr-x 3 root tomcat 4096 10月 30 22:48 myweb.com 
drwxrwxr-x 3 root tomcat 4096 10月 30 22:06 ROOT 
drwxrwxr-x 5 root tomcat 4096 10月 30 22:06 sample
[root@E myweb.com]# cd myweb.com/
[root@E myweb.com]# rm -f index.html
[root@E myweb.com]# vi index.jsp
写入:WebService is Tomcat
不要忘记删除ROOT项目或者对它重命,否则新项目不生效
[root@E webapps]# mv ROOT/ ROOT.BAK


修改tomcat虚拟主机配置
[root@E myweb.com]# vi /etc/tomcat6/server.xml
在最下面<Host></Host>标签后面添加如下内容
<!--myweb.com host config--> 
<Host name="www.myweb.com" appBase="webapps" 
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="/" reloadable="true" docBase="myweb.com"/>
<Alias>myweb.com</Alias>
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
-->
</Host>
如下图所示
10
重启tomcat,测试http://myweb.com
[root@E myweb.com]# service tomcat6 restart
11
success!
转载请注明出处:怡然之乐 – FineYi

Blog list & Book list

Blog list
张晏的博客:
酷壳:
服务器运维与网站架构|Linux运维|X研究:
现代简明魔法-数据之美:
阮一峰的博客:
……
 
Book list
《C语言程序设计》- 谭浩强 
《黑客与画家》- Paul Graham (作者), 阮一峰 (译者)
《失控》- 凯文•凯利 (Kevin Kelly) 
……
 

CentOS6.4下coreseek 4.1(sphinx)安装配置手记 完美支持MySQL数据源

CentOS6.4下coreseek 4.1(sphinx)安装配置手记 完美支持MySQL数据源
系统环境:
OS:                 CentOS6.4 64位
MySQL:          5.1.63
coreseek:        4.1
安装、配置过程如下:
#当前路径
[root@E sphinx]# pwd
/home/sphinx
#安装依赖包
[root@E sphinx]# yum install make gcc g++ gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat-devel
#下载coreseek4.1
[root@E sphinx]# wget http://www.coreseek.cn/uploads/csft/4.0/coreseek-4.1-beta.tar.gz
#解压缩
[root@E sphinx]# tar zxvf coreseek-4.1-beta.tar.gz
#安装mmseg
[root@E sphinx]# cd coreseek-4.1-beta/mmseg-3.2.14/
[root@E mmseg-3.2.14]# ./bootstrap #输出的warning信息可以忽略,如果出现error则需要解决
[root@E mmseg-3.2.14]# ./configure --prefix=/usr/local/mmseg3
[root@E mmseg-3.2.14]# make && make install
[root@E mmseg-3.2.14]# cd ..

##安装coreseek
[root@E coreseek-4.1-beta]# cd csft-4.1/
[root@E csft-4.1]# sh buildconf.sh #输出的warning信息可以忽略,如果出现error则需要解决
[root@E csft-4.1]# ./configure --prefix=/usr/local/coreseek --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql

[root@E csft-4.1]# make && make install
[root@E csft-4.1]# cd ..

#测试mmseg分词,coreseek搜索(需要预先设置好字符集为zh_CN.UTF-8,确保正确显示中文)
[root@E coreseek-4.1-beta]# cd testpack/
[root@E testpack]# cat var/test/test.xml #此时应该正确显示中文
#mmseg程序 -d 词库目录 指定数据源
[root@E testpack]# /usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc var/test/test.xml
#创建索引
[root@E testpack]# /usr/local/coreseek/bin/indexer -c etc/csft.conf --all
#执行搜索测试
[root@E testpack]# /usr/local/coreseek/bin/search -c etc/csft.conf 网络搜索
#测试成功
Coreseek Fulltext 4.1 [ Sphinx 2.0.2-dev (r2922)]
Copyright (c) 2007-2011,
Beijing Choice Software Technologies Inc (http://www.coreseek.com)
 using config file 'etc/csft.conf'...
index 'xml': query '网络搜索 ': returned 1 matches of 1 total in 0.000 sec
displaying matches:
1. document=1, weight=1590, published=Thu Apr 1 22:20:07 2010, author_id=1
words:
1. '网络': 1 documents, 1 hits
2. '搜索': 2 documents, 5 hits
#为了使sphinx直接支持mysql数据源 需要对coreseek重新编译安装
#重新编译安装后的coreseek可以支持mysql和xml数据源
[root@E testpack]# cd ..
[root@E coreseek-4.1-beta]# pwd
/home/sphinx/coreseek-4.1-beta
[root@E coreseek-4.1-beta]# cd csft-4.1/$ make clean
[root@E coreseek-4.1-beta]#./configure --prefix=/usr/local/coreseek --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql
###配置、测试mysql数据源###
导入测试数据 sql点击下载
#安装mysql依赖包
yum install mysql mysql-server php-mysql -y
#修改配置配置文件
[root@E testpack]# cd ../testpack/
[root@E testpack]# vi etc/csft_mysql.conf
#只需要修改 源定义 中的数据库的相关配置(数据库地址、用户名、密码、库名) 其它配置不需修改 如下所示:
#源定义
source mysql
{
    type = mysql
    sql_host = localhost #数据库主机地址
    sql_user = root #数据库用户名
    sql_pass = 111111 #数据库密码
    sql_db = sphinx #数据库库名
    sql_port = 3306
    sql_query_pre = SET NAMES utf8
    sql_query = SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content FROM documents
                                                              #sql_query第一列id需为整数
                                                              #title、content作为字符串/文本字段,被全文索引
    sql_attr_uint = group_id #从SQL读取到的值必须为整数
    sql_attr_timestamp = date_added #从SQL读取到的值必须为整数,作为时间属性
    sql_query_info_pre = SET NAMES utf8 #命令行查询时,设置正确的
字符集
    sql_query_info = SELECT * FROM documents WHERE id=$id #命令行查询时,从数据库读取原始数据信息
}

 

#创建mysql数据源索引
[root@E testpack]# pwd
/home/sphinx/coreseek-4.1-beta/testpack
#索引器 -c 配置文件 --all
[root@E testpack]# /usr/local/coreseek/bin/indexer -c etc/csft_mysql.conf --all
Coreseek Fulltext 4.1 [ Sphinx 2.0.2-dev (r2922)]
Copyright (c) 2007-2011,
Beijing Choice Software Technologies Inc (http://www.coreseek.com)
 using config file 'etc/csft_mysql.conf'...
indexing index 'mysql'...
ERROR: index 'mysql': sql_connect: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) (DSN=mysql://root:***@localhost:3306/sphinx).
total 0 docs, 0 bytes
total 0.000 sec, 0 bytes/sec, 0.00 docs/sec
total 0 reads, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg
total 0 writes, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg
#上面有报错 创建索引失败
#找到mysql.sock的路径(可以去mysql的配置文件/etc/my.cnf中查看 本机在/tmp/mysql.sock)
#建立软连接
[root@E testpack]# mkdir /var/lib/mysql
[root@E testpack]# ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
#创建mysql数据源索引成功
[root@E testpack]# /usr/local/coreseek/bin/indexer -c etc/csft_mysql.conf --all
Coreseek Fulltext 4.1 [ Sphinx 2.0.2-dev (r2922)]
Copyright (c) 2007-2011,
Beijing Choice Software Technologies Inc (http://www.coreseek.com)
 using config file 'etc/csft_mysql.conf'...
indexing index 'mysql'...
collected 3 docs, 0.0 MB
sorted 0.0 Mhits, 100.0% done
total 3 docs, 7545 bytes
total 0.016 sec, 467269 bytes/sec, 185.79 docs/sec
total 3 reads, 0.000 sec, 2.8 kb/call avg, 0.0 msec/call avg
total 9 writes, 0.000 sec, 2.2 kb/call avg, 0.0 msec/call avg

#测试mysql数据源 搜索
[root@E testpack]# /usr/local/coreseek/bin/search -c etc/csft_mysql.conf 网络搜索
Coreseek Fulltext 4.1 [ Sphinx 2.0.2-dev (r2922)]
Copyright (c) 2007-2011,
Beijing Choice Software Technologies Inc (http://www.coreseek.com)
 using config file 'etc/csft_mysql.conf'...
index 'mysql': query '网络搜索 ': returned 1 matches of 1 total in 0.000 sec
displaying matches:
1. document=1, weight=1590, group_id=2, date_added=Thu Apr 1 22:20:07 2010
        id=1
        title=愚人节最佳蛊惑爆料 谷歌300亿美元收购百度
        content=据国外媒体报道,谷歌将巨资收购百度,......<正文省略很多字>......李彦宏也承认当前百度在日本还处于初级发展阶段,但他也预言“2012年,百度与Google划洋而治”,对此我们拭目以待!
        date_added=2010-04-01 22:20:07
        author_id=1
        group_id=2
words:
1. '网络': 1 documents, 1 hits
2. '搜索': 2 documents, 5 hits
coreseek词库扩展请参考:sphinx(coreseek)导入搜狗词库
稍后完善 实时索引的创建及维护

转载请注明出处:怡然之乐 – FineYi

参考资料:coreseek and coreseek 

基于区块的网页正文自动提取实例

    测试DEMO :http://autoext.fineyi.com

    基于区块的网页正文自动提取实例,对于资讯类网站,提取准确度很高,能较好的保留正文格式,图片。

    以下是已经测试过的网站:    

    网易科技http://tech.163.com

    新浪科技http://tech.sina.com.cn

    腾讯新闻http://news.qq.com

    搜狐IT:http://it.sohu.com

    36kr:http://www.36kr.com

    艾瑞网http://www.iresearch.cn

    爱范儿http://www.ifanr.com

    …

    因为对科技类比较感兴趣,所以就对科技类网站测试的比较多了,欢迎大家测试,指正。

    怡然之乐

    

Could not connect to smtp host报错的解决方案

linux下服务器发送邮件报错:could not connect to smtp host

在网上找了很多方法,都未能解决,后来关闭selinux,问题解决。
原因分析:selinux默认阻止了apache向外的 socket 
解决方案:
第一种关闭selinux
[root@localhost /]# vi /etc/selinux/config 

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

将SELINUX=enforcing 改为 SELINUX=disabled

然后:reboot

第二种配置SELINUX:

[root@localhost /]# setsebool -P httpd_can_network_connect 1
[root@localhost /]# service httpd restart
[root@localhost /]# service network restart

转载请注明出处:怡然之乐 – FineYi

参考资料:Ryan’s Scraps

LAMP安装手记(CentOS6.4+Apache-2.2.22+Mysql-5.1.63+PHP-5.2.17+phpmyadmin-3.4.10.2+ZendDebug)

LAMP安装手记(CentOS6.4+Apache-2.2.22+Mysql-5.1.63+PHP-5.2.17+phpmyadmin-3.4.10.2+ZendDebug)

rpm -e httpd

rpm -e mysql

rpm -e php

yum -y remove httpd php mysql-server mysql php-mysql&nbsp;

setenforce 0

yum -y install gcc gcc-c++&nbsp; make automake autoconf kernel-devel ncurses-devel libxml2-devel openssl-devel curl-devel libjpeg-devel libpng-devel&nbsp; pcre-devel libtool-libs freetype-devel gd zlib-devel file bison patch mlocate flex diffutils&nbsp; &nbsp;readline-devel glibc-devel glib2-devel bzip2-devel gettext-devel libcap-devel libmcrypt-devel wget&nbsp;unzip&nbsp;

wget -c http://archive.apache.org/dist/httpd/httpd-2.2.22.tar.gz

wget -c&nbsp;http://dl.mysql.cn/mysql5/5.1/mysql-5.1.63.tar.gz

wget -c http://iweb.dl.sourceforge.net/project/phpmyadmin/phpMyAdmin/3.4.10.2/phpMyAdmin-3.4.10.2-all-languages.tar.gz

wget -c http://us2.php.net/get/php-5.2.17.tar.gz/from/am.php.net/mirror

tar xzf httpd-2.2.22.tar.gz

tar xzf mysql-5.1.63.tar.gz

tar xzf php-5.2.17.tar.gz

tar xzf phpMyAdmin-3.4.10.2-all-languages.tar.gz

cd /tmp/httpd-2.2.22

./configure --prefix=/usr/local/apache --with-included-apr --enable-so --enable-deflate=shared --enable-expires=shared&nbsp; --enable-headers=shared --enable-rewrite=shared --enable-static-support

make

make install

cp build/rpm/httpd.init /etc/init.d/httpd //使用init脚本管理httpd

chmod 755 /etc/init.d/httpd //增加执行权限

chkconfig --add httpd&nbsp; //添加httpd到服务项

chkconfig&nbsp; httpd on&nbsp; &nbsp;//设置开机启动

ln -fs /usr/local/apache/ /etc/httpd

ln -fs /usr/local/apache/bin/httpd /usr/sbin/httpd

ln -fs /usr/local/apache/bin/apachectl /usr/sbin/apachectl

ln -fs /usr/local/apache/logs /var/log/httpd //设置软链接以适应init脚本

groupadd mysql

useradd -g mysql mysql

cd /tmp/mysql-5.1.63

./configure --prefix=/usr/local/mysql/ --localstatedir=/usr/local/mysql/data --without-debug --with-unix-socket-path=/tmp/mysql.sock --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --enable-assembler --with-extra-charsets=gbk,gb2312,utf8 --with-pthread

make

make install

cp support-files/my-medium.cnf /etc/my.cnf //复制配置文件夹my.cnf

/usr/local/mysql/bin/mysql_install_db --user=mysql&nbsp; //初始化数据库

chown -R root.mysql /usr/local/mysql

chown -R mysql /usr/local/mysql/data&nbsp;

cp /tmp/mysql-5.1.63/support-files/mysql.server /etc/rc.d/init.d/mysqld&nbsp; //init启动脚本

chown root.root /etc/rc.d/init.d/mysqld&nbsp;

chmod 755 /etc/rc.d/init.d/mysqld

chkconfig --add mysqld

chkconfig&nbsp; mysqld on

ln -s /usr/local/mysql/bin/mysql /usr/bin

ln -s /usr/local/mysql/bin/mysqladmin /usr/bin

service mysqld start

/usr/local/mysql/bin/mysqladmin -u root password '新密码'&nbsp; &nbsp;//设置root密码

安装PHP

cd /tmp

wget http://superb-dca2.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz

wget http://superb-dca2.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz

wget http://superb-sea2.dl.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz

tar xzf libmcrypt-2.5.8.tar.gz

tar xzf mhash-0.9.9.9.tar.gz

tar xzf mcrypt-2.6.8.tar.gz

//安装libmcrypt

cd /tmp/libmcrypt-2.5.8

./configure --prefix=/usr

make && make install

//安装libmcrypt

cd /tmp/mhash-0.9.9.9

./configure --prefix=/usr

make && make install

//安装mcrypt

/sbin/ldconfig //搜索出可共享的动态链接库

cd /tmp/mcrypt-2.6.8

./configure

make && make install

解决可能出现的报错:

If configure fails try --with-jpeg-dir=<DIR>

configure: error: libpng.(a|so) not found.

解决:

yum install libpng libpng-devel

ln -s /usr/lib64/libjpeg.so /usr/lib/

ln -s /usr/lib64/libpng.so /usr/lib/

解决可能出现的libiconv报错

cd /tmp

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz

tar xzf libiconv-1.14.tar.gz

cd libiconv-1.14

./configure --prefix=/usr/local/libiconv

make && make install

cd /tmp/php-5.2.17

./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-openssl --with-zlib --enable-bcmath --with-bz2 --with-curl --enable-ftp --with-gd --enable-gd-native-ttf --with-gettext --with-mhash --enable-mbstring --with-mcrypt --enable-soap --enable-zip --with-iconv=/usr/local/libiconv --with-mysql=/usr/local/mysql --without-pear

make

make install

cp php.ini-dist /usr/local/php/etc/php.ini //复制配置文件php.ini

修改apache配置文件:

在/etc/httpd/conf/httpd.conf文件中加入php文件类型解析:

vi /etc/httpd/conf/httpd.conf

添加

AddType application/x-httpd-php .php .phtml .inc

AddType application/x-httpd-php-source .phps

找到:

ServerName www.example.com:80

修改为:

ServerName localhost:80

service httpd restart &nbsp;//重启httpd

安装ZendOptimizer-3.3.9

64位:http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-x86_64.tar.gz

32位:http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz

cd /tmp

wget&nbsp; http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-x86_64.tar.gz

tar xzf ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz

cd /tmp/ZendOptimizer-3.3.9-linux-glibc23-i386/data/5_2_x_comp/

mkdir -p /usr/local/Zend/lib/

cp ZendOptimizer.so /usr/local/Zend/lib

加载zendoptimizer,建立/etc/php.d/zend.ini文件,加入如下代码加载:

[zend]

zend_optimizer.optimization_level=15

zend_extension=/usr/local/Zend/lib/ZendOptimizer.so

service httpd restart

安装eAccelerator-0.9.6.1

cd /tmp

wget http://jaist.dl.sourceforge.net/project/eaccelerator/eaccelerator/eAccelerator%200.9.6.1/eaccelerator-0.9.6.1.zip

unzip eaccelerator-0.9.6.1.zip

cd eaccelerator-0.9.6.1

export PHP_PREFIX="/usr/local/php"

$PHP_PREFIX/bin/phpize

./configure -enable-eaccelerator=shared -with-php-config=$PHP_PREFIX/bin/php-config

make && make install

cd /tmp

mkdir eaccelerator

chmod 0777 eaccelerator

php zenddebugger 加载失败

用php -v 查看信息

[root@E modules]# php -v

Failed loading /usr/lib64/php/modules/ZendDebugger.so: libssl.so.0.9.8: cannot open shared object file: No such file or directory

Failed loading /usr/local/Zend/lib/ZendOptimizer.so: /usr/local/Zend/lib/ZendOptimizer.so: undefined symbol: zend_throw_exception_internal

Failed loading /usr/lib64/php/modules/ZendDebugger.so: libssl.so.0.9.8: cannot open shared object file: No such file or directory

Warning: Directive 'register_long_arrays' is deprecated in PHP 5.3 and greater in Unknown on line 0

Warning: Directive 'magic_quotes_gpc' is deprecated in PHP 5.3 and greater in Unknown on line 0

PHP 5.3.3 (cli) (built: Nov 22 2013 10:59:29)

Copyright (c) 1997-2010 The PHP Group

Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

原因:因为最新的linux发行版本&nbsp;libssl&nbsp;和&nbsp;libcrypto&nbsp;已升级到1.0.0

解决:只要创建相应的软链接即可

[root@E modules]# ll /usr/lib64/libssl*

-rwxr-xr-x. 1 root root 221568 2鏈? 23 2013 /usr/lib64/libssl3.so

lrwxrwxrwx. 1 root root 16 11鏈?26 19:31 /usr/lib64/libssl.so -> libssl.so.1.0.1e

lrwxrwxrwx. 1 root root 16 11鏈?26 19:31 /usr/lib64/libssl.so.10 -> libssl.so.1.0.1e

-rwxr-xr-x. 1 root root 436984 12鏈? 4 2013 /usr/lib64/libssl.so.1.0.1e

建立软连接:

ln -s /usr/lib64/libssl.so.1.0.1e /usr/lib64/libssl.so.0.9.8

[root@E modules]# ll /usr/lib64/libcrypto*

lrwxrwxrwx. 1 root root 19 11鏈?26 19:31 /usr/lib64/libcrypto.so -> libcrypto.so.1.0.1e

lrwxrwxrwx. 1 root root 19 11鏈?26 19:31 /usr/lib64/libcrypto.so.10 -> libcrypto.so.1.0.1e

-rwxr-xr-x. 1 root root 1946880 12鏈? 4 2013 /usr/lib64/libcrypto.so.1.0.1e

建立软连接:

ln -s /usr/lib64/libcrypto.so.1.0.1e /usr/lib64/libcrypto.so.0.9.8

参考资料:

linux下让apache能够解析php: http://hi.baidu.com/dengyun0302/item/549840396caa7ffae6bb7a61

解决configure: error: libpng.(a|so) not found.:http://blog.csdn.net/alexdream/article/details/7408438

解决php zenddebugger 安装失败:http://blog.csdn.net/dragon8299/article/details/7175932

http://forums.zend.com/viewtopic.php?f=59&t=12423

http://blog.csdn.net/jianfyun/article/details/6434052

http://stackoverflow.com/questions/13467358/zend-debugger-will-not-load

http://forums.zend.com/viewtopic.php?f=57&t=4071

http://sourceforge.net/projects/eaccelerator/postdownload?source=dlp

mysql:http://download.softagency.net/MySQL/Downloads/MySQL-5.1/

mysql-5.1.63(gz)http://download.mysql.cn/src/2012/0531/5603.html

apache/httpd:http://archive.apache.org/dist/httpd/

http://www.zend.com/en/products/studio/downloads

转载请注明出处:怡然之乐 – FineYi

CentOS6.4 PHP5.2添加ZendDebug扩展 完美支持Zend Studio10.5

之前一段时间用的开发环境是wamp,这个集成包的优点是:安装简单,操作便捷,缺点是:每次重装系统后都要重新安装配置环境,并且和线上的lamp环境不一致,有时本地运行正常的代码上到线上却出现莫名其妙的问题,所以考虑重新为本地安装lamp开发环境,即:windows8+VMware Workstation 10 +CentOs6.4 64位 + lamp + Zend Studio10.5

安装完成后发现无法为PHP添加ZendDebug扩展,查看资料才知道zend官方在PHP5.2之后就不再对ZendDebug提供更新支持,所以如果要用Zend Studio + ZendDebug调试代码的话PHP的版本必须在5.3以下(当然也可以用Zend Studio+Xdebug 组合),无奈只有编译PHP5.2.*老版本安装lamp。

ZendDebug下载:linux64位 linux32位 Zend官方下载

ZendDebug配置过程如下:

[root@E /]#yum -y install php-devel

选择对应版本的ZendDebug.so文件放至:/usr/lib64/php/modules/目录下

(因为本机安装的为PHP5.2.1.7,所以选择ZendDebugger-20110410-linux-glibc23-x86_64/ZendDebugger-20110410-linux-glibc23-x86_64/5_2_x_comp/ZendDebugger.so)

在php.ini中最下方添加配置:

[root@E /]#vi /etc/php.ini
[Zend]
zend_extension=/usr/lib64/php/modules/ZendDebugger.so  //扩展文件绝对路径
zend_debugger.allow_hosts=127.0.0.1/32,192.168.0.0/16   //设置你允许访问的主机IP范围
zend_debugger.expose_remotely=always

保存

[root@E /]#service httpd restart   //重启apache

用phpinfo查看,未发现ZendDebugger扩展,说明加载失败。

用php -v查看,有报错:

[root@E /]# php -v
Failed loading /usr/lib64/php/modules/ZendDebugger.so: libssl.so.0.9.8: cannot open shared object file: No such file or directory
PHP 5.3.3 (cli) (built: Nov 22 2013 10:59:29)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
原因:因为最新的linux发行版本 libssl 和 libcrypto 已升级到1.0.0,而系统中找不到 libssl.so.0.9.8文件

解决:只要创建相应的软链接即可

[root@E /]# ll /usr/lib64/libssl*
-rwxr-xr-x. 1 root root 221568 2 nov  23 2013 /usr/lib64/libssl3.so
lrwxrwxrwx. 1 root root 16 11 nov 26 19:31 /usr/lib64/libssl.so -> libssl.so.1.0.1e
lrwxrwxrwx. 1 root root 16 11 nov 26 19:31 /usr/lib64/libssl.so.10 -> libssl.so.1.0.1e
-rwxr-xr-x. 1 root root 436984 12 nov  4 2013 /usr/lib64/libssl.so.1.0.1e
建立软连接:
[root@E /]#ln -s /usr/lib64/libssl.so.1.0.1e /usr/lib64/libssl.so.0.9.8

[root@E /]# ll /usr/lib64/libcrypto*
lrwxrwxrwx. 1 root root 19 11 nov 26 19:31 /usr/lib64/libcrypto.so -> libcrypto.so.1.0.1e
lrwxrwxrwx. 1 root root 19 11 nov 26 19:31 /usr/lib64/libcrypto.so.10 -> libcrypto.so.1.0.1e
-rwxr-xr-x. 1 root root 1946880 12 nov  4 2013 /usr/lib64/libcrypto.so.1.0.1e
建立软连接:
[root@E /]#ln -s /usr/lib64/libcrypto.so.1.0.1e /usr/lib64/libcrypto.so.0.9.8
[root@E /]#service httpd restart   //重启apache
[root@E /]# php -v
Zend Debugger requires Zend Engine API version 220060519.
The Zend Engine API version 220090626 which is installed, is newer.
Contact Zend Technologies at http://www.zend.com/ for a later version of Zend Debugger.

PHP 5.3.3 (cli) (built: Jul 12 2013 20:35:47)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

报错解决

用phpinfo查看ZendDebug扩展加载成功!

Zend Studio10.5测试,调试正常!

转载请注明出处:怡然之乐 – FineYi

参考资料:stackoverflow  forums.zend.com CSDN

CentOS6.4 LAMP环境为PHP添加Xdebug扩展手记

CentOS6.4 LAMP环境为PHP添加Xdebug扩展手记

之前一直用Zend Studio结合Zend debug+ Firefox+toolbar组合跟踪、调试代码,用起来非常方便。但是Zend官方对zend debug在PHP5.2之后就不再提供支持。目前PHP已更新到5.4,所以就不能再用zend debug调试代码,Xdebug扩展也可以实现类似zend debug的功能。现提供在linux下为PHP添加Xdebug扩展的方法。

当前环境:CentOS6.4 64位 / PHP Version 5.3.3

安装依赖:
[root@E /]# yum -y install gcc automake autoconf libtool make wget php-devel

下载
http://xdebug.org/files/
最新版本:2.2.3
[root@E /]# cd /home/soft
[root@E /]# wget install http://xdebug.org/files/xdebug-2.2.3.tgz
[root@E /]# tar -zxvf xdebug-2.2.3.tgz
[root@E /]# cd xdebug-2.2.3/

查看phpize和php-config路径
[root@E xdebug-2.2.3]# whereis phpize php-config
phpize: /usr/bin/phpize /usr/share/man/man1/phpize.1.gz
php-config: /usr/bin/php-config /usr/share/man/man1/php-config.1.gz

接着执行:
[root@E /]# /usr/bin/phpize  ./configure --enable-xdebug --with-php-config=/usr/bin/php-config

无报错的话执行
[root@E /]# make
在当前目录会生成./modules/xdebug.so
复制到php扩展目录
[root@E xdebug-2.2.3]# cp modules/xdebug.so /usr/lib64/php/modules/

修改php.ini
[root@E modules]# vi /etc/php.ini
在底部加入:
[Xdebug]
zend_extension="/usr/lib64/php/modules/xdebug.so"
xdebug.profiler_enable = on
xdebug.default_enable = on
xdebug.trace_output_dir="/tmp/xdebug"
xdebug.trace_output_name = trace.%c.%p
xdebug.profiler_output_dir="/tmp/xdebug"
xdebug.profiler_output_name="cachegrind.out.%s

重启apache:
[root@E modules]# service httpd restart

phpinfo查看:

Xdebug

Xdebug扩展添加成功!

转载请注明出处:怡然之乐 – FineYi

参考资料:xdebug file  XMSND  SinaBlog

wamp已开启CURL,ThinkPHP在cli模式下运行仍提示缺少CURL扩展

开发环境:windows8+wamp

thinkphp 代码在常规模式下运行正常,在cli模式下报错,提示缺少curl扩展。

检查发现:常规模式下php默认加载的配置文件是:

wamp安装目录\bin\apache\apache2.2.22\bin\php.ini

在cli模式下php默认加载的配置文件是:

wamp安装目录\bin\php\php5.3.13\php.ini

两种模式下加载的配置文件不同

解决方法:

1.在cli模式下运行php时指定配置文件

php index_cli.php -c wamp安装目录\bin\apache\apache2.2.22\bin\php.ini

2.在 wamp安装目录\bin\php\php5.3.13\php.ini 文件中同样打开curl扩展。

推荐第二种解决方案。