lamp搭建

来源:互联网 发布:php的存储过程调用 编辑:程序博客网 时间:2024/05/17 09:32

CentOS 系统上yum搭建LAMP


简要介绍:

LAMP是Linux+Apache+MySQL+PHP的简称,是用于搭建web服务器的一种解决方案。从RHEL 7开始Red Hat公司推荐使用MariaDB而不是MySQL,但为了信仰还是坚持了MySQL

 

安装Apache软件

Apache软件的软件包名称叫做httpd,因此,要安装Apache软件,就使用下述命令:

[root@localhost ~]# yum install httpd

wKioL1UrY0ezJ0cBAAE_1MQqSFk946.jpg

如上图所示,安装的Apache 软件版本为2.4版。根据红帽官方文档说明,RHEL 7 (或CentOS 7)上可用的Apache版本正是2.4版的。

 

安装完成后,Apache是以httpd服务的形式存在的。因此,要启动Apache并将其设置为开机启动,就使用命令:

[root@localhost ~]# systemctl start httpd.service

[root@localhost ~]# systemctl enable httpd.service

然后,检查httpd服务状态:

[root@localhost ~]# systemctl status httpd.service

wKiom1UrYkGxhQZ-AAISk9Xnz2g901.jpg

如上图所示,“enabled”表示httpd服务已设为开机启动,“active(running)”则表示httpd服务正在运行中。

 

这样的话,HTTP协议就已被启动起来了,由于HTTP协议使用到tcp端口80,因此防火墙要放通tcp端口80:

[root@localhost ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent

重启防火墙以让更改立刻生效:

[root@localhost ~]# firewall-cmd --reload

使用以下命令检查配置是否成功:

[root@localhost ~]# firewall-cmd --list-all

wKioL1UrY8OD4WHhAAB1h8uBO2s719.jpg

如上图所示,tcp端口80已放通。

 

然后这个时候,就可以在物理机上使用浏览器来访问刚刚搭建的web服务器了。不过,因为这个时候还未创建任何页面,所以它显示的是Apache软件自带的测试页面:

wKioL1UrY_2ikCYVAAYIK9VCOWw524.jpg

 

 

 

设置Apache配置文件

Apache软件的主配置文件为/etc/httpd/conf/httpd.conf。关于Apache 2.4版软件的详细说明文档,可在网页http://httpd.apache.org/docs/2.4/en/中查阅到。特别是,关于主配置文件httpd.conf中各指令的详细说明,可在网页http://httpd.apache.org/docs/2.4/mod/directives.html中查阅到。

关于Apache 2.4版软件的详细说明文档,也可以将它安装在本地Linux主机上面,使用命令yum install httpd-manual即可安装它。安装完成后,重启httpd服务。在web服务运行正常的情况下,可在本地Linux主机上面使用网址http://localhost/manual/来访问它。在其它设备上面,则使用相应的网址即可,如在本实例中,我可以在物理机上使用网址http://172.31.2.2/manual/来访问它。

另外还需要知道:/etc/httpd/conf.d目录下以.conf结尾的配置文件也会被读取;可加载模块(如PHP)的配置文件应放置在/etc/httpd/conf.modules.d目录下,并且也以.conf结尾。

 

下面介绍一下httpd.conf这个配置文件的内容(少量配置有修改):

ServerRoot "/etc/httpd"                      //服务器根目录:本配置文件中没有使用绝对路径的地方,都认为是在该目录下              

Listen 80                                    //侦听80端口                                                                                                            

                                                                                                                                                                               

Include conf.modules.d/*.conf                                                                                                                                    

//该设定让/etc/httpd/conf.modules.d目录下以.conf结尾的配置文件也会被读取进来。DSO对象的配置文件应放置在此目录下       

                                                                                                                                                                               

User apache                                                                                                                                                             

Groupapache                                                                                                                                                           

//当你使用浏览器访问web服务器时,会产生相应的httpd进程,该进程所属的用户和组就由这里设定。                                       

                                                                                                                                                                               

//从这里开始,下面的设定适用于“主”服务器,与虚拟主机区别开来。但如果<VirtualHost>部分未设定这些值,也会使用这些值  

                                                                                                                                                                               

ServerAdmin root@localhost                 //系统管理员的邮箱。改成自己的邮箱即可。                                                         

ServerName www.speedsnail.com            //设置主机名。生产环境中,该主机名应该是能被正确解析成这台服务器的IP的。       

                                                                                                                                                                               

<Directory />                                                                                                                                                           

   AllowOverride none                                                                                                                                               

   Require all denied                                                                                                                                                  

</Directory>                                                                                                                                                            

//<Directory 目录路径>和</Directory>:用于设定指定目录(这里是系统根目录)的访问权限。目录路径那里可以使用绝对         

//路径和相对路径,还可以搭配使用通配符和正则表达式。                                                                                                  

//AllowOverride:如果指定目录下(这里是系统根目录)存在一个.htaccess文件,那么AllowOverride设定的是,该文件里面的     

//设置是否能够覆盖<Directory>这部分的设置,或该文件里面的设置可以覆盖的是<Directory>这部分的哪些设置。none表示不    

//允许进行覆盖。                                                                                                                                                        

//Require:设定哪些用户可以访问该目录(这里是系统根目录)。all denied表示不允许访问该目录。                                       

                                                                                                                                                                               

DocumentRoot "/var/www/html"                                                                                                                                 

//设定网页存放目录。比如说,访问http://host/index.html实际上就是访问这个host的/var/www/html/index.html这个文档。         

                                                                                                                                                                                

<Directory "/var/www">                                                                                                                                             

   AllowOverride None                                                                                                                                                

   Require all granted                        //all granted表示可无条件访问该目录。                                                                   

</Directory>                                                                                                                                                             

                                                                                                                                                                                

<Directory"/var/www/html">                                                                                                                                       

   Options FollowSymLinks                                                                                                                                          

   AllowOverride None                                                                                                                                                

   Require all granted                                                                                                                                                 

</Directory>                                                                                                                                                             

//Options:用于设定在该目录中哪些特性可用。FollowSymLinks,让该目录下的符号链接可以生效。默认这里还有个Indexes选     

//项,建议拿掉。它的作用是,当浏览器访问该目录(而非该目录下的某一个档案)时,如果该目录下没有默认网页(如index.html),

//那么此时就会返回该目录下的文件名列表。                                                                                                                    

                                                                                                                                                                                

<IfModule dir_module>                                                                                                                                             

   DirectoryIndex index.html                                                                                                                                        

</IfModule>                                                                                                                                                             

//<IfModule 模块>和</IfModule>:如果Apache有加载这里指定的模块,那么Apache就会对它们之间的语句进行处理。            

//也可以使用<IfModule!模块>和</IfModule>,那么就表示没有加载指定的模块时才进行处理。                                              

//这里的模块可以是模块ID(如rewrite_module),也可以是模块文件名(如mod_rewrite.c)。                                               

//DirectoryIndex:这就是设置默认网页的,即当浏览器访问某一个目录时,会返回该目录下的index.html文件(如果存在的话)。   

//也可以接多个档名,如DirectoryIndexindex.html index.htm index.cgi index.pl,这样就会返回找到的第一个文件。                   

                                                                                                                                                                                

<Files ".ht*">                                                                                                                                                             

   Require all denied                                                                                                                                                   

</Files>                                                                                                                                                                    

//<Files 文件名>和</Files>:对指定文件名的文件应用这里指定的语句。                                                                              

//这里的语句的意思是:任意目录下,文件名符合.ht*的文件都会被禁止访问。                                                                         

                                                                                                                                                                                

ErrorLog "logs/error_log"                           //错误日志所在文档为/etc/httpd/logs/error_log                                             

LogLevel warn                                     //设置日志记录级别                                                                                            

                                                                                                                                                                                

<IfModule log_config_module>                                                                                                                                  

   LogFormat "%h %l %u %t \"%r\" %>s %b\"%{Referer}i\" \"%{User-Agent}i\"" combined                                               

   LogFormat "%h %l %u %t \"%r\" %>s %b" common                                                                                                  

   <IfModule logio_module>                                                                                                                                       

     LogFormat "%h %l %u %t \"%r\" %>s %b\"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio                               

   </IfModule>                                                                                                                                                          

   CustomLog "logs/access_log" combined        //客户端访问服务器的日志会记在/etc/httpd/logs/access_log                       

</IfModule>                                                                                                                                                             

                                                                                                                                                                                

<IfModule alias_module>                                                                                                                                           

   ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"                                                                                                                   

</IfModule>                                                                                                                                                             

//ScriptAlias会将URL路径映射到指定目录,并且让该目录具有CGI脚本执行权限(因此CGI脚本都可放置在该目录下)。                

//以这里的设定举个例子,假如在浏览器中输入http://example.com/cgi-bin/foo,此时就会执行/var/www/cgi-bin/foo这个         

//CGI脚本。                                                                                                                                                               

                                                                                                                                                                                

<Directory"/var/www/cgi-bin">                                                                                                                                   

   AllowOverride None                                                                                                                                                

   Options None                                                                                                                                                         

   Require all granted                                                                                                                                                 

</Directory>                                                                                                                                                             

                                                                                                                                                                                

<IfModule mime_module>                             //这部分是关于MIME的                                                                            

   TypesConfig /etc/mime.types                                                                                                                                   

   AddType application/x-compress .Z                                                                                                                         

   AddType application/x-gzip .gz .tgz                                                                                                                          

   AddType text/html .shtml                                                                                                                                         

   AddOutputFilter INCLUDES .shtml                                                                                                                             

</IfModule>                                                                                                                                                             

                                                                                                                                                                                

AddDefaultCharset Off                                                                                                                                               

//AddDefaultCharset会强制客户端浏览器使用指定的字符集编码方式。这可能会有问题,所以要将它关闭。实际上,所使用的编     

//码方式在网页里有声明。                                                                                                                                            

                                                                                                                                                                                

<IfModule mime_magic_module>                                                                                                                               

   MIMEMagicFile conf/magic                                                                                                                                     

</IfModule>                                                                                                                                                             

                                                                                                                                                                                

EnableSendfile on                                           //允许Apache使用系统核心支持的sendfile来传送文件给客户端                      

IncludeOptional conf.d/*.conf                          //在/etc/httpd/conf.d目录下以.conf结尾的配置文件也会被读取                      

 

从上面也可以知道,默认情况下,网页文档可以放置在/var/www/html目录下,CGI脚本可以放置在/var/www/cgi-bin目录下;错误日志在/etc/httpd/logs/error_log,访问日志在/etc/httpd/logs/access_log

 

设定好配置文件后,要测试配置文件语法有没有问题,可使用命令:

[root@localhost ~]#apachectl configtest

然后,重启httpd服务:

[root@localhost ~]# systemctl restart httpd

 

 

 

安装PHP

使用以下命令安装PHP软件:

[root@localhost ~]# yum install php

wKioL1UrZb2z59WcAAEf9VptT_8126.jpg

从上图可以看到,安装的PHP版本为5.4版。

安装完成后,PHP会生成配置文件/etc/httpd/conf.d/php.conf,因为该配置文件在/etc/httpd/conf.d目录下,所以它会被Apache所读取。PHP还会生成配置文件/etc/httpd/conf.modules.d/10-php.conf,该配置文件也会被Apache所读取,它的设定让Apache可以加载PHP模块。不过,PHP软件本身的配置文件其实是/etc/php.ini

 

下面介绍一下配置文件/etc/httpd/conf.d/php.conf:

<FilesMatch \.php$>                                                                                                                                       

   SetHandler application/x-httpd-php                                                                                                               

</FilesMatch>                                                                                                                                                

//<FilesMatch 正则表达式>和</FilesMatch>:文件名与正则表达式相匹配的文件,将适用这里设定的语句。                   

//SetHandler:强制所有匹配的文件使用指定handler进行处理。                                                                               

                                                                                                                                                                     

AddType text/html .php                          //设定扩展名为.php的档案的类型为text/html                                            

DirectoryIndex index.php                         //默认网页档名增加index.php                                                               

php_value session.save_handler"files"                                                                                                               

php_value session.save_path    "/var/lib/php/session"                                                                                        

 

下面介绍一下配置文件/etc/httpd/conf.modules.d/10-php.conf:

<IfModule prefork.c>                                                                                                                                     

 LoadModule php5_module modules/libphp5.so                                                                                               

</IfModule>                                                                                                                                                  

//如果Apache使用的多处理模块(MPM)是prefork(默认),那么Apache就会加载LoadModule指定的模块(PHP模块)       

 

最后,来看看配置文件/etc/php.ini。在该文件的开头处,有说明针对生产环境和开发环境,有一些设定值可以进行修改,以提高PHP的效能。假设该web服务器是用于生产环境的,将下面的这些设定值改成这样(或确认这些设定值是这样的):

display_errors = Off                                       //当发生错误时,不将错误信息显示出来(到浏览器上)                          

display_startup_errors = Off                               //不将PHP启动时发生的错误信息显示出来(到浏览器上)                    

error_reporting = E_ALL &~E_DEPRECATED & ~E_STRICT   //这一项设定PHP会告知的错误或信息类型                       

html_errors = On                                         //当PHP显示或记录错误信息时,将该信息格式化成HTML格式                

log_errors = On                                           //这让PHP可以将错误信息日志记录到日志文件里                                 

ignore_repeated_errors = On                              //忽略重复的错误信息                                                               

ignore_repeated_source = On                             //当忽略重复的错误信息时忽略信息源                                          

post_max_size = 25M                                      //PHP所允许的POST数据的最大值。可按照需要进行调整                    

file_uploads = On                                          //允许文件上传,默认为On                                                             

upload_max_filesize = 20M                                 //上传文件所允许的最大值。可按照需要进行调整                            

memory_limit = 128M                                     //PHP可用的最大内存。可按照需要进行调整                                      

 

然后,重启httpd服务:

[root@localhost~]# systemctl restart httpd

 

为了测试Apache能不能正常调用PHP,在/var/www/html目录下新建一个phpinfo.php文档,内容如下所示:

wKiom1UrZNuQIT8aAAA2jbF5zeo089.jpg

其中的<?php   ?>是PHP程序的语法,phpinfo ();则是PHP程序提供的一个函式库,该函式库可以显示出你这个web服务器的相关信息。然后,使用浏览器来访问服务器的这个文件,看看页面能不能正常打开。如果正常的话,应该可以看到下面这个页面:

wKiom1UrZQ3CE18XAAE_1I5fZZc130.jpg

测试完后,因为这个页面里面的信息还挺重要的,所以应该把phpinfo.php这个档案删除。

首先CentOS7 已经不支持mysql,因为收费了你懂得,所以内部集成了mariadb,而安装mysql的话会和mariadb的文件冲突,所以需要先卸载掉mariadb,以下为卸载mariadb,安装mysql的步骤。

#列出所有被安装的rpm package 
rpm -qa | grep mariadb

#卸载
rpm -e mariadb-libs-5.5.37-1.el7_0.x86_64
错误:依赖检测失败:
libmysqlclient.so.18()(64bit) 被 (已安裝) postfix-2:2.10.1-6.el7.x86_64 需要
libmysqlclient.so.18(libmysqlclient_18)(64bit) 被 (已安裝) postfix-2:2.10.1-6.el7.x86_64 需要

#强制卸载,因为没有--nodeps
rpm -e --nodeps mariadb-libs-5.5.37-1.el7_0.x86_64

#安装mysql依赖
yum install vim libaio net-tools

其他情况:

1、centos下yum暂时没有mysql-server直接安装包;
MariaDB是MySQL社区开发的分支,也是一个增强型的替代品;

2、安装MariaDB
yum -y install mariadb-server mariadb mariadb-devel
systemctl start mariadb
systemctl enable mariadb
mysql_secure_installation
firewall-cmd --permanent --add-service mysql
systemctl restart firewalld.service
iptables -L -n|grep 3306

CentOS7的yum源中默认好像是没有mysql的。为了解决这个问题,我们要先下载mysql的repo源。

1. 下载mysql的repo源

$ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

2. 安装mysql-community-release-el7-5.noarch.rpm包

$ sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm

安装这个包后,会获得两个mysql的yum repo源:/etc/yum.repos.d/mysql-community.repo,/etc/yum.repos.d/mysql-community-source.repo。

3. 安装mysql

$ sudo yum install mysql-server

根据步骤安装就可以了,不过安装完成后,没有密码,需要重置密码。

4. 重置密码

重置密码前,首先要登录

$ mysql -u root

登录时有可能报这样的错:ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘ (2),原因是/var/lib/mysql的访问权限问题。下面的命令把/var/lib/mysql的拥有者改为当前用户:

$ sudo chown -R openscanner:openscanner /var/lib/mysql

然后,重启服务:

$ service mysqld restart

接下来登录重置密码:

$ mysql -u root

mysql > use mysql;

mysql > update user set password=password(‘123456‘) where user=‘root‘;

mysql > exit;

保存后重启防火墙:

$ sudo service iptables restart

这样从其它客户机也可以连接上mysql服务了。

MYSQL启动后报:ERROR! The server quit without updating PID file错误的问题解决
MYSQL日志:Can't find file: './mysql/plugin.frm' (errno: 13 - Permission denied)

1、权限不够:chown -R mysql:mysql /home/mysql/data” “chmod -R 755 /home/mysql/data
2、centos7的selinux问题:打开/etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled后存盘退出重启机器。

如果要删除本地用户,使用:

mysql> drop user '用户名'@'localhost';

如果要删除数据库,使用:

mysql> drop database 数据库名;

查看存在的数据库:

mysql> show databases;

退出MySQL管理后台:

mysql> exit

 

下面为实际所进行的操作:

[root@localhost ~]# mysql -u root -p                                                                                                                

Enter password:                                                                                                                                               

mysql> create user'myuser'@'localhost' identified by '1234';          //新建本地用户myuser,密码为1234                    

mysql> create database mydb;                                                   //新建数据库mydb                                             

mysql> grant all privileges on mydb.*to myuser@localhost;          //将数据库mydb的所有权限授权给本地用户myuser  

mysql> flush privileges;                                                              //刷新系统权限表                                                

mysql> use mysql;                                                                     //进入数据库mysql(该数据库为系统自带)             

mysql> select * from user where user ='myuser';                         //查询数据库mysql中是否存在用户myuser               

mysql> show databases;                                                           //显示所有已有的数据库                                        

mysql> exit                                                                                                                                                       

上面设定好后,就可以使用myuser这个账号登录MySQL了,并且可以发现该用户拥有一个数据库mydb。

 

关于MySQL,还需要知道:

/etc/my.cnf:这是MySQL的配置文件。不过,因为我还玩不转MySQL,所以先暂时不动它。

/var/lib/mysql:这是数据库实际存放目录。毫无疑问,不能删,并且,要注意,给予其所在分区足够的容量。

/var/log/mysqld.log:这是MySQL的错误日志文件。

 

安装php-mysql

php-mysql是一个用于让PHP程序使用MySQL数据库的模块。要安装该模块,使用命令:

[root@localhost ~]# yum install php-mysql

wKiom1UrZeDyr_gVAADs6jEfZ-A205.jpg

然后,重启httpd服务:

[root@localhost ~]# systemctl restart httpd

 

为了测试PHP能否连接到MySQL数据库,在/var/www/html目录下新建一个文档test.php。因为之前已经在MySQL中新建了一个数据库mydb,并给这个数据库建了个用户myuser,密码是1234,所以test.php的内容是这样的:

[root@www ~]# vim /var/www/html/test.php                                                                                                  

<?php                                                                                                                                                         

$mydbhost = 'localhost';                        //数据库服务器                                                                                  

$mydbuser = 'myuser';                          //用户名                                                                                            

$mydbpwd = '1234';                            //密码                                                                                                

$mydbname = 'mydb';                          //数据库名称                                                                                      

                                                                                                                                                                  

$db =mysql_connect($mydbhost,$mydbuser,$mydbpwd) or die(‘Cannot find the database.’);                        

mysql_select_db($mydbname,$db) or die(‘Cannotconnect the database.’);                                                    

                                                                                                                                                                  

?>                                                                                                                                                              

                                                                                                                                                                  

Everything is OK!                                                                                                                                          

上面这个测试页面的内容纯粹是我百度出来的,不过测试后的确有用。在浏览器中访问test.php这个页面,如果测试失败的话(可以试着改一下用户名或数据库名称),那么就会显示Cannot find the database或Cannot connect the database;如果测试成功的话,就会显示Everythingis OK!。如下所示:

wKiom1UrZiCTSZflAABwEvrOn0I369.jpg

不过,虽然测试成功了,但查看Apache的错误日志文件,还是发现有报错“mysql_connect():Headers and client library minor version mismatch”。百度了一下,说是使用PHP5运行旧式PHP程序代码出现的兼容性问题。解决方法是,使用php-mysqlnd模块来代替php-mysql模块。即执行yum remove php-mysql和yum install php-mysqlnd,然后重启httpd服务。


 

1.什么是mysqlnd驱动?

PHP手册上的描述:

MySQL Native Driver is a replacement for the MySQL Client Library (libmysql). 

MySQL Native Driver is part of the official PHP sources as of PHP 5.3.0. 


mysqldnd即mysql native driver简写,即是由PHP源码提供的mysql驱动连接代码.它的目的是代替旧的libmysql驱动.

2. PDO与mysqlnd, libmysql又是何种关系?
PDO是一个应用层抽象类,底层和mysql server连接交互需要mysql驱动的支持也就是说无论你使用了何种驱动,都可以使用PDO.

PDO是提供了PHP应用程序层API接口,mysqlnd, libmysql则负责与mysql server进行网络协议交互(它并不提供php应用程序层API功能)

 

3. 为何要使用mysqlnd驱动?
PHP官方手册描述:
A.libmysql驱动是由mysql AB公司(现在是oracle公司)编写并按mysql license许可协议发布,所以在PHP中默认是被禁用的.

mysqlnd是由php官方开发的驱动,php license许可协议发布,故就规避了许可协议和版权的问题

B.因为mysqlnd内置于PHP源代码,故你在编译安装php时就不需要预先安装mysql server也可以提供mysql client API (mysql_connect, pdo , mysqli), 这将减化一些工作量.

 

C. mysqlnd是专门为php优化编写的驱动,它使用了PHP本身的特性,在内存管理,性能上比libmysql更有优势. php官方的测试是:libmysql将每条记录在内存中保存了两份,mysqlnd只保存了一份

 

D. 一些新的或增强的功能
增强的持久连接
引入特有的函数mysqli_fetch_all()

引入一些性能统计函数mysqli_get_cache_stats(), mysqli_get_client_stats(), 

mysqli_get_connection_stats(),

使用上述函数,可很容易分析mysql查询的性能瓶颈!

SSL支持(php 5.3.3开始有效)

压缩协议支持

命名管道支持(php 5.4.0开始有效)

  

修改SELinux规则

有可能未来Apache需要进行联机工作,那么就先修改一下,让SELinux规则放行:

[root@www ~]# setsebool -P httpd_can_network_connect=1

然后确认一下修改是否生效:

[root@www ~]# getsebool httpd_can_network_connect

 

 

安装PHP缓存器XCache

其实,到上面那里为止,基本的LAMP平台已经架设好了。但为了优化LAMP平台,所以还需要进行一些工作。XCache是一款开源的PHP缓存器/优化器,它通过把编译 PHP 后的数据缓冲到共享内存从而避免重复的编译过程, 使客户端访问时服务器能够直接使用缓冲区已编译的代码从而提高速度,同时降低服务器负载。到我写这篇文章为止,XCache最新的版本为3.2.0。我选择使用官网提供的源码来安装XCache。

 

由于我这台服务器在安装系统时是以最小化模式安装的,所以要使用源码,得先安装编译器:

[root@www ~]# yum install gcc

再安装php-devel,它用于让PHP可以支持扩展工具(如XCache):

[root@www ~]# yum install php-devel

wKiom1UrZluAFZSGAAGjtbKhQ50558.jpg

然后,使用XCache官网提供的源码来安装XCache:

[root@www ~]# wget http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz                                          

[root@www ~]# tar -zxfxcache-3.2.0.tar.gz                                                                                                          

[root@www ~]# cd xcache-3.2.0                                                                                                                         

[root@www xcache-3.2.0]# phpize --clean                                                                                                           

[root@www xcache-3.2.0]# phpize                                                                                                                      

[root@www xcache-3.2.0]# ./configure--enable-xcache                                                                                         

[root@www xcache-3.2.0]# make                                                                                                                        

[root@www xcache-3.2.0]# make install                                                                                                               

[root@www xcache-3.2.0]# cat xcache.ini>> /etc/php.ini                                                                                       

//千万注意,有两个>号,表示把xcache.ini的配置追加到php.ini后面。如果只有一个>号,会把php.ini原有的配置覆盖掉。     

//建议在操作前可以先备份/etc/php.ini文件。                                                                                                           

然后,重启httpd服务:

[root@www ~]# systemctl restart httpd

这样就安装完了,那怎么确认XCache有没有正常运行呢。在我这篇文章的前面部分,不是有使用一个phpinfo.php页面吗?就打开那个页面,搜索xcache,应该可以搜索到关于XCache的相关信息,可以看到XCache是enabled的:

wKiom1UrZrrDeFZTAAGJwUW3JQ8961.jpg

 

另外,其实XCache有提供管理后台。如果要使用XCache管理后台,可以这样做。首先,在/var/www/html目录下新建一个档案,假设为account.php,将这个档案的内容该成如下所示:

[root@www ~]# vim/var/www/html/account.php                                                                                                   

<?php                                                                                                                                                               

echo md5("1234");                                                                        //双引号内可以填入你想要使用的密码                   

?>                                                                                                                                                                     

然后,从浏览器访问这个页面,可以得到一串数字和字母的组合,我得到的是81dc9bdb52d04dc20036dbd8313ed055。然后,再修改/etc/php.ini中的这两个设定的值:

xcache.admin.user ="admin"                                                         //双引号内可以填入你想要使用的用户名                 

xcache.admin.pass ="81dc9bdb52d04dc20036dbd8313ed055"       //双引号内填入刚刚得到的那串组合                        

再将XCache安装包里面的htdocs整个目录复制到/var/www/html目录下:

[root@www ~]# cp -a/root/xcache-3.2.0/htdocs /var/www/html                                                                             

修改目录htdocs及其子目录和档案的所属用户和组,我选择将其都改为root:

[root@www ~]# chown -R root:root/var/www/html/htdocs                                                                                    

使用restorecon命令来重置目录htdocs及其子目录和档案的SELinux相关设定:

[root@www ~]# restorecon -Rv/var/www/html/htdocs                                                                                          

最后重启httpd,使用浏览器访问地址http://服务器IP/htdocs/,然后输入你设定的用户名和密码,就可以打开XCache的管理后台了:

wKioL1UraMSy2BwdAAKd6yNADTY591.jpg

出现问题

 

一般刚刚配置好的环境,php.ini是没有对date.timezone进行设置的,所以一般配置好都会对php.ini文件进行timezone的配置,要不涉及到

使用时间的一些函数之前进行date_default_timezone_set()设置,否则就会抛出警告的错误,所以你会测试一下环境里使用:phpinfo();

错误是:

Warning: phpinfo(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in E:\documentRoot\index.php on line 2

所以我们应该在php.ini做好配置,预防错误发生,查找php.ini里“date.timezone”,会定位到差不多923行吧,把注释去掉,后面跟上我们的时区:Asia/Shanghai

然后:date.timezone = Asia/Shanghai

这里还要把date.timezone = Asia/Shanghai改为date.timezone =UTC

重启一下httpd就可以了。

关于UTC

世界的每个地区都有自己的本地时间,在Internet及无线电通信时,时间的统一非常重要! 
    整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信中,为统一而普遍使用一个标准时间,称为通用协调时(UTC, Universal Time Coordinated)。UTC与格林尼治平均时(GMT, Greenwich Mean Time)一样,都与英国伦敦的本地时相同。UTC与GMT含义完全相同。

京时区是东八区,领先UTC 8个小时,在电子邮件信头的Date域记为+0800。如果在电子邮件的信头中有这么一行:
       Date: Sun, 13 June 2010 09:45:28 +0800
    说明信件发送地时间是2010年6月13号,星期日,上午9点45分28秒,该地区本地时领先UTC差 8个小时(+0800,就是东八区时间)。电子邮件信头的Date域使用24小时的时钟,而不使用AM和PM来标记上下午。
    以这个电子邮件的发送时间为例,如果要把这个时间转化为UTC,可以使用以下公式: 
                        UTC + 时区差=本地时间



 

补充信息:关于重启httpd服务

 

有三种方法可以重启httpd服务:

1、  若要完全重启httpd服务:

[root@localhost ~]# systemctl restart httpd.service

该命令会中断正在运行的httpd进程。在安装或移除一个动态加载模块(如PHP)后,需要使用此命令。

 

2、  让httpd服务重新读取它的配置文件:

[root@localhost ~]# systemctl reload httpd.service

该命令会让httpd重新加载配置文件,同时也会中断httpd进程的运行。

 

3、  让httpd服务重新读取它的配置文件并且不影响httpd服务的运行:

[root@localhost ~]# apachectl graceful

该命令会让httpd重新加载配置文件,并且不会中断httpd服务。但现有的http请求将会继续使用旧的配置。

0 0
原创粉丝点击