一般linux服务器上都已经有apache环境了,如果有可以跳过这一步。如果要查看linux 是否已经安装apache,可以用下面的命令:
[root@localhost htdocs]# httpd -v
Server version: Apache/2.2.15 (Unix)
Server built: Aug 13 2013 17:29:28
[root@localhost htdocs]# apachectl -v
Server version: Apache/2.2.15 (Unix)
Server built: Aug 13 2013 17:29:28
两个命令都行。几乎所有的linux版本都自带apache, 名字一般是httpd,不叫apache。
/etc/init.d/httpd是它的启动脚本。
有时候我们不想用自带的apache,这样可能需要先删除自带的,再安装自己的。
1 查看与httpd相关软件包。
# rpm -qa|grep httpd
httpd-2.2.3-11.el5_2.centos.4
2 然后删除httpd:
# rpm -e httpd
可能出现问题:
error: Failed dependencies:
httpd >= 2.2.0 is needed by (installed) gnome-user-share-0.10-6.el5.i386
3 还有一个依赖的软件包没有删除
# rpm -e gnome-user-share
4 再删除httpd
# rpm -e httpd
http://httpd.apache.org/
httpd-2.2.31.tar.gz
切换到root用户,后面的所有操作都用root进行。
mkdir /usr/local/apache2
安装的apache2要安装到这个文件夹里面。这个目录其实不新建也可以,后面编译安装时没有的话也会动态创建
另外,也可以把目录指定在/home/目录下的某个用户下。
[root@localhost /]# tar -zxvf httpd-2.2.31.tar.gz
[root@localhost httpd-2.2.31]# ./configure --prefix=/usr/local/apache2 --enable-module=shared
[root@localhost httpd-2.2.31]# make
[root@localhost httpd-2.2.31]# make install
[root@localhost apache2]# pwd
/usr/local/apache2
[root@localhost apache2]# ll
总用量 60
drwxr-xr-x. 2 root root 4096 9月 20 15:00 bin
drwxr-xr-x. 2 root root 4096 9月 20 15:00 build
drwxr-xr-x. 2 root root 4096 9月 20 15:00 cgi-bin
drwxr-xr-x. 4 root root 4096 9月 20 15:00 conf
drwxr-xr-x. 3 root root 4096 9月 20 15:00 error
drwxr-xr-x. 2 root root 4096 7月 16 2015 htdocs
drwxr-xr-x. 3 root root 4096 9月 20 15:00 icons
drwxr-xr-x. 2 root root 4096 9月 20 15:00 include
drwxr-xr-x. 4 root root 4096 9月 20 15:00 lib
drwxr-xr-x. 2 root root 4096 9月 20 15:00 logs
drwxr-xr-x. 4 root root 4096 9月 20 15:00 man
drwxr-xr-x. 14 root root 12288 7月 16 2015 manual
drwxr-xr-x. 2 root root 4096 9月 20 15:00 modules
启动遇到错误:
[root@localhost bin]# ./apachectl start
httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName
解决这个问题需要编辑httpd.conf文件(/apache2/conf/目录下),找到:
#ServerName www.example.com:80
修改为:
ServerName 127.0.0.1:80或者ServerName localhost:80
然后重新启动:
[root@localhost bin]# ./apachectl start
打开浏览器,地址输入localhost,可以看到启动成功了。
如果启动时报如下的错误:
[root@localhost bin]# ./apachectl start
(98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
这个错误的原因是因为有其他服务正在使用80端口。先用
[root@localhost bin]# netstat -lnp|grep 80
查看那个进程使用了80端口。或者:
ps -ef|grep httpd
查看有没有httpd进程正在运行。
然后对应杀掉(比如:sudo killall httpd),再重启。
----------如果浏览器无法访问80端口,可能是防火墙没有开启80端口------------------------
可以通过命令去添加端口的方法:
代码如下 | 复制代码 |
[root@centos httpd]# /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT [root@centos httpd]# /etc/rc.d/init.d/iptables save [root@centos httpd]# /etc/init.d/iptables restart |
这样就搞定了,查看效果
代码如下 | 复制代码 |
[root@centos httpd]# /etc/init.d/iptables status |
-----------------------------------------------------------------------------------------------
编辑httpd.conf文件,找到
LoadModule php5_module modules/libphp5.so
这个默认应该就是打开的,主要是找到确认下。
添加下面一行(注意.号前面有空格):
AddType application/x-httpd-php .php
http://php.net/
php-5.6.26.tar.gz
mkdir /usr/local/php
[root@localhost /]# tar -zxvf php-5.6.26.tar.gz
[root@localhost php-5.6.26]# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/usr/local/php/etc --enable-fpm // 开启php-fpm支持
[root@localhost php-5.6.26]# make clean
[root@localhost php-5.6.26]# make
[root@localhost php-5.6.26]# make test
[root@localhost php-5.6.26]# make install
–with-config-file-path会指明配置文件的路径(php.ini),很重要,不要忘了。
摘自其他网站:
注意这里有一个-with-apxs2=/usr/local/apache2/bin/apxs选项,其中apxs是在安装Apache时产生的,apxs是一个为Apache HTTP服务器编译和安装扩展模块的工具,使之可以用由mod_so提供的LoadModule指令在运行时加载到Apache服务器中。我的理解是通过这个工具把PHP模块动态加载到Apache中
在configure阶段,遇到一个错误:
checking for xml2-config path...
configure: error: xml2-config not found. Please check your libxml2 installation
运行yum install libxml2,然后再运行yum install libxml2-devel安装完毕后,重新运行上面的./configure命令就可以了。
将源码目录下的
php.ini-development文件复制到/usr/local/php/etc目录下(注意要和前面指定的–with-config-file-path的值一致),更名为php.ini
$ cd php-5.6.20
$ cp php.ini-development /usr/local/php/php.ini
$ cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf
$ cp sapi/fpm/php-fpm /usr/local/bin
需要注意的是:在这里一定要配置php-fpm,因为在安装PHP插件的时候,修改完php.ini之后一定要重启php-fpm新的配置信息才会生效。我曾今在这里卡了很久。
设置当浏览器访问目录时,缺省访问的页面
找到httpd.conf文件,我的在/usr/local/apache2/conf/目录下,找到IfModule dir_module,添加index.php
<IfModule dir_module>
DirectoryIndex index.html index.php
IfModule>
重启apache,然后在/usr/local/apache2/htdocs下新建一个test.php,代码如下:
phpinfo();
?>
打开浏览器,访问localhost/test.php,成功:
注意红色标记的部分就是php.ini的位置,后面还会用到。
缺省的站点目录是:
/usr/local/apache2/htdocs
有时候需要改这个目录,比如我的服务器将这个地址改为/home/pony/inn_web目录下。步骤如下:
编辑httpd.conf文件,
找到 DocumentRoot,目录改为:
/home/pony/inn_web
找到
php搭配oracle可能比较少见,但是项目中确实用到了,还是要搞一下。
instantclient是oracle的连接数据库的简单客户端,只需下载Basic和Devel两个rpm包。
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
[root@localhost /]# rpm -ivh oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
Preparing... ########################################### [100%]
1:oracle-instantclient11.########################################### [100%]
[root@localhost /]# rpm -ivh oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
Preparing... ########################################### [100%]
1:oracle-instantclient11.########################################### [100%]
[root@localhost /]#
[root@localhost 11.2]# ln -s /usr/lib/oracle/11.2/client64/ /usr/lib/oracle/11.2/client
[root@localhost oracle]# ln -s /usr/include/oracle/11.2/client64/ /usr/include/oracle/11.2/client
Oracle 调用接口 (OCI) 是最全面、性能最高、基于原生“C”语言的 Oracle 数据库接口,它可以提供 Oracle 数据库的全部功能。OCI 为构建各种语言专用接口(如 Oracle JDBC-OCI、ODP.Net、Oracle 预编译器、Oracle ODBC 和 Oracle C++ Call Interface (OCCI)驱动程序)提供了基础。各种领先的开源接口(如 PHP OCI8 扩展、ruby-oci8、Perl DBD::oracle 和 Python cx_oracle)也都使用 OCI。作为对 Oracle 数据库的原生接口,OCI 还对 Oracle 数据库核心内部发出的查询、语句和调用进行了增强。
找到php源码,进入ext/pdo_oci目录下。
phpize是用来动态增加php扩展模块的
[root@localhost pdo_oci]# /usr/local/php/bin/phpize CFLAGS="-I/usr/lib/oracle/11.2/client" CXXFLAGS="-I/usr/lib/oracle/11.2/client"
Configuring for:
PHP Api Version: 20131106
Zend Module Api No: 20131226
Zend Extension Api No: 220131226
[root@localhost pdo_oci]#
[root@localhost pdo_oci]# ./configure --with-pdo-oci=instantclient,/usr,11.2 --with-php-config=/usr/local/php/bin/php-config
[root@localhost pdo_oci]# make clean
[root@localhost pdo_oci]# make
[root@localhost pdo_oci]# make install
编辑php.ini文件,增加下面两项:
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/"
extension=pdo_oci.so
注意确认/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/目录下确实有pdo_oci.so文件
重启apache,然后浏览器打开前面的test.php,往下拉会发现oci已经加成功了:
$tns = "(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.86.132)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)";
define('PDO_DB_DNS', "oci:dbname=".$tns); //数据库dns
define('PDO_DB_USER', 'test'); //登录用户名
define('PDO_DB_PASSWORD', 'test'); //登录密码
class PDOManage{
private $_pdo = null;
private static $_instance = null;
/**
* 构造方法,私有
*/
private function __construct(){
try{
$this->_pdo = new PDO(PDO_DB_DNS, PDO_DB_USER, PDO_DB_PASSWORD);
$this->_pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//可以抛出异常
}catch (PDOException $e)
{
user_dump('SQL instance:'.$e->getMessage());
exit($e->getMessage());
}
}
curl是一个强大的开源库,支持http等协议。如果项目中用到curl的话,需要加上curl扩展。不需要单独下载,一般源码包里都有只要编译配置下就行。
windows下似乎是自带的,因为我是移植一个项目到linux下,发现有些页面会报错:
Call to undefined function curl_init()
才知道linux下需要单独安装的。
进入php源码下的ext/curl目录,配置安装:
[innpay@localhost curl]$ pwd
/home/innpay/php/soft/php-5.6.26/ext/curl
[innpay@localhost curl]$
[innpay@localhost curl]$ /home/inn
inn/ innpay/
[innpay@localhost curl]$ /home/innpay/php/php/bin/phpize
Configuring for:
PHP Api Version: 20131106
Zend Module Api No: 20131226
Zend Extension Api No: 220131226
[innpay@localhost curl]$ ./configure --with-curl=/usr/local/curl --with-php-config=/home/innpay/php/php/bin/php-config
[innpay@localhost curl]$ make
[innpay@localhost curl]$ make install
注意–with-php-config这个要根据自己的php目录实际修改。
安装完成后,会提示我们动态库安装到了一个目录下:
我的是在
php安装目录/lib/php/extensions/no-debug-non-zts-20131226/
在这个目录下可以找到curl.so文件。
编辑php.ini文件
找到前面加pdo_oci.so的位置,增加一行:
extension = curl.so
重启apache即可生效。
项目中也用到了openssl,所以也要添加openssl扩展,步骤类似上面。
[innpay@localhost openssl]$ mv config0.m4 config.m4
[innpay@localhost openssl]$ /home/innpay/php/php/bin/phpize
Configuring for:
PHP Api Version: 20131106
Zend Module Api No: 20131226
Zend Extension Api No: 220131226
[innpay@localhost openssl]$
[innpay@localhost openssl]$ ./configure --with-openssl --with-php-config=/home/innpay/php/php/bin/php-config
[innpay@localhost openssl]$ make
[innpay@localhost openssl]$ make install
编辑php.ini文件
找到前面加pdo_oci.so的位置,增加一行:
extension = openssl.so
重启apache即可生效。
```
附上转载的原文链接:
http://blog.csdn.net/pony_maggie/article/details/52758159
```
```
2017年12月4号
推荐三篇博文,基本可以搞定Apache+PHP+PHP插件的安装配置:
(1)源码安装的步骤参考:
https://www.cnblogs.com/zhuque/archive/2012/11/03/2763351.html
(2)但是一定要注意添加php-fpm的配置,具体请参考这篇博文:
http://blog.csdn.net/why_2012_gogo/article/details/51120645
(3)至于PHP插件的安装,譬如常见的openssl、curl、mcrypt等,都可以参照这篇博文:
(4)重点截图:
http://blog.csdn.net/fanyun7654/article/details/20635203
```