阿里云CentOS-6.x-64 PHP环境配置详细教程
常用命令:
1.df –h,查看所有硬盘分区空间占用情况。
2.du –hs /usr/local,查看某目录空间占用情况总计。du –h /usr/local,查看某目录下所有目录文件空
间占用情况。
3.getconf LONG_BIT,查看系统是多少位的。
4.free –m,以m为单位查看内存。
5.echo 1 > /proc/sys/vm/drop_caches,释放缓存,效果显著。1后面有空格。
6.top,显示系统cpu和内存使用情况,类似于任务管理器。shift+M以内存占用率排序。
7.jcmd –l 可以查看所有jvm进程。会列表展示所有jvm进程,第一列是进程id。接着使用jcmd 进程
号VM.flags就可以查看所有的jvm参数,包括堆内存等等。
8.java命令中用-d32和-d64来表明程序运行在32位或者64位环境。如果JVM本身不支持该参数,会
报告错误:当前仅有java Hotspot server VM支持64位模式。选择"-server"选项必须使用-d64;
"-client"选项会忽略使用-d64;如果没有指定-d32或者-d64,则默认运行在32位模式,除非仅支持64位模式。目前在windows平台下jdk1.5,JDK1.6不支持-d32,-d64的选项,jdk1.7支持-d32,-d64的选项,在linux平台下jdk1.5, 1.6, 1.7均支持-d32,-d64的选项。
9.whereis php 查找php在哪个目录
10.vi :$到最后一行:n n =1,2,3,4,5 跳转到第几行
11.直接输入mount,可查看所有mount记录。
12.查看selinux状态,/usr/sbin/sestatus –v,如果显示如下:
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
则表示selinux为开启状态。
查看selinux模式,getenforce,会显示selinux的模式。
13.关闭selinux。vi /etc/selinux/config,将SELINUX=enforcing更改为SELINUX=disabled,保存,
shutdown -r now #重启系统即可。
14.查看防火墙iptables状态,service iptables status。关闭防火墙,取消开机启动:service iptables stop
&& chkconfig iptables off
15.开启selinux和iptables防火墙,可能会导致navicat无法访问mysql,以及其它诸多无法访问问题,
除非你知道出现问题时该怎么做,否则最好关闭它们。
16.安装中文字体:yum install mkfontscale;
在/usr/share/fonts下,可创建自定义目录,如chinese/TrueType,Linux下目录和文件名称区分大小写,复制字体文件(运行ttf和ttc)到此目录下,赋字体文件权限chmod 644 *
#mkfontscale
#mkfontdir
#fc-cache –fv
17.查看apache版本,httpd –v,查看php版本,php -v
配置过程:
1.修改CentOS主机密码,重启实例。
2.阿里云主机CentOS6.5-64位默认是安装了OpenSSH的。所以使用PUTTY进行登录,用户名:root,
密码:上面修改后的密码。
3.对数据盘进行挂载,并分区。
a)df –h,查看当前磁盘分区使用情况,此时是看不到数据盘的。使用fdisk –l,可以看到一个未分区
未挂载的磁盘,通常叫做/dev/xvdb
b)对数据盘进行分区:fdisk /dev/xvdb,根据提示,依次输入“n”、“p”、“1”、两次回车,“w”,
分区就开始了,瞬间就会完成。其中,第一次选择n表示进行分区,第二次输入p,表示创建主分区,Linux最多4个主分区。如果选择e,表示创建扩展分区,扩展分区还要创建逻辑分区后才能使用。
此处直接创建主分区了。第三次选择1,表示创建1个分区,当然根据情况也可以创建多个(最多4个),之后两次回车默认,最后选择w,写入分区表。如果是创建逻辑分区的话,后面步骤略有差异。
c)fdisk –l,此时应该可以看到新的分区/dev/xvdb1了。通过ls –l /dev,也可看到目录信息。
d)mkfs –t ext4 /dev/xvdb1,把分区格式化为ext4文件系统格式。
e)cd / &&mkdir /data。在/分区下创建一个data目录用于挂载新硬盘新分区。
f)设置开机挂载:vi /etc/fstab,文件末尾添加新的一行:
/dev/xvdb1 /data ext4 defaults 0 0
g)重启,最好使用阿里云控制台的重启,当然直接在PUTTY中reboot也可以。
h)df –h,应该可以看到新的分区,及挂载到/data目录了。
4.更换数据源:如果觉得默认数据源速度比较慢或者缺少软件的话,可考虑更换源,通常情况下无需更换。
a)cd /etc/yum.repos.d
b)备份默认源:mv CentOS-Base.repo CentOS-Base.repo.backup
c)下载163源:wget https://www.360docs.net/doc/9c2006583.html,/.help/CentOS6-Base-163.repo,会直接下载到
当前目录。
d)备份163源:cp CentOS6-Base-163.repo CentOS6-Base-163.repo.backup
e)把下载下来的文件CentOS6-Base-163.repo设置为默认源。
mv CentOS6-Base-163.repo CentOS-Base.repo
f)运行yum makecache生成缓存。
g)yum update 更新软件库
5.安装vsftp。
a)查看是否安装vsftp,rpm –qa|grep vsftpd。阿里云的centos-6.5默认是没有预装vsftp的。
b)yum install ftp vsftpd
c)启动vsftp服务。service vsftpd start。
d)执行:ftp 114.215.128.136#ip地址即阿里云的公网ip,用户名:anonymous,密码:空。
回车后,如果出现230Login successful,表示vsftpd安装成功。输入bye退出到命令行状态。
e)添加一个ftp属主账户:useradd –d /data/ftp –g ftp –s /sbin/nologin ftpadmin,此句的意思
是创建一个名为ftpadmin的用户,属主目录是/data/ftp,所属组是ftp,并且不能进行登录。
f)使用passwd ftpadmin命令,给此用户设置密码,密码必须是字母+数字。
g)修改配置文件vi /etc/vsftpd/vsftpd.conf。
anonymous_enable=NO 不允许匿名用户访问
local_enable=YES允许本地用户访问注:如果为NO 则所有虚拟用户都将不能访问原因:虚拟用户访问基实质是以服务器本地用户访问的
write_enable=YES 可写,默认。
chroot_list_enable=YES取消注释,允许使用list中的用户。
chroot_list_file=/etc/vsftpd/chroot_list取消注释,指定宿主用户文件,此文件需要自己创建,每一行为一个服务器本地用户名,名称默认此名称chroot_list即可。
pam_service_name=vsftpd 指定pam认证文件名,此例则对应于/etc/pam.d/vsftpd
以下在文件末尾新增:
guest_enable=YES 启用虚拟用户功能,必须启用
guest_username=ftpadmin 指定虚拟用户的宿主用户,注:此用户需要在chroot_list_file中指定的/etc/vsftpd/chroot_list文件里存在。
user_config_dir=/etc/vsftpd/vsftpuser_conf 设置虚拟用户个人vsftp的服务配置文件目录,
必须指定。
h)在配置文件中添加被动模式,以支持windows常见客户端flashfxp访问。以下为继续新增:
listen_port=21
pasv_enable=YES(Default: YES)设置是否允许pasv模式
pasv_max_port=50000(Default: 0 (use any port))pasv使用的最大端口
pasv_min_port=45000(Default: 0 (use any port))pasv使用的最小端口
此端口范围,需要在iptables中开放(对于CentOS6.5无需任何操作)。保存,退出。
i)查看是否安装db4和db4utils。阿里云CentOS6.5默认是已经预安装了的。
rpm -qa|grep db4,如未安装,则yum -y install db4 db4-utils
j)创建vi /etc/vsftpd/chroot_list文件,在文件中添加宿主用户ftpadmin,文件末尾不能有空格,一行一个用户名,不需要密码。
k)创建虚拟用户列表:vi /etc/vsftpd/vsftpuser.txtx (奇数行为用户名,偶数行为密码,文件名称任意)。
l)生成虚拟用户的db文件:
db_load -T -t hash -f /etc/vsftpd/vsftpuser.txtx /etc/vsftpd/vsftpuser.db
其中,vsftpuser.txtx与第6步的文件名称相同,vsftpuser.db文件名可随意,但是下面会用到。
生成虚拟用户的认证文件:vi /etc/pam.d/vsftpd,删除掉此文件中的所有内容,同时:
32位系统增加以下两句:
auth required pam_userdb.so db=/etc/vsftpd/vsftpuser
account required pam_userdb.so db=/etc/vsftpd/vsftpuser
64位系统增加以下两句:
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpuser
account sufficient /lib64/security/pam_userdb.sodb=/etc/vsftpd/vsftpuser
注:db=/etc/vsftpd/vftpuser 中的vftpuser 是你生成的虚拟用户的db文件,省略扩展名。
m)创建每个虚拟用户自己的配置文件,配置文件的路径是/etc/vsftpd/vsftpd.conf中的user_config_dir路径。mkdir/etc/vsftpd/vsftpuser_conf/并在此目录下创建以用户名为名称的文件(用户名是/etc/vsftpd/vftpuser.txtx 下面的奇数行)。内容如下:
local_root=/data/ftp(虚拟用户的根目录根据实际情况修改,虚拟用户只能操作此目录)
write_enable=YES
download_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_umask=022
n)确认设置文件夹权限,chmod -R 777 /data/ftp,设置777权限,必须有可执行权限,否则提示打不开目录。-R表示递归设置。chgrp -R ftp/data/ftp,设置用户属主。
o)重启vsftpd,service vsftpd restart。
p)设置开机启动服务:
chkconfig --list|grep vsftpd ( 查看情况),如果全是off表示尚未设置成开机启动。
chkconfig --level 2345 vsftpd on
q)登录测试:
ftp 114.215.128.136,输入虚拟用户名和密码,如果显示230Login successful,表示配置成功。
注:使用FlashFXP或其它客户端时,应设置传输编码为utf8,否则会中文乱码。同时为防止上传下载时出现乱码及不能切换目录的情况,建议上传时一律使用utf8编码上传。
6.安装Lamp环境。阿里云上默认是没有安装apache、php和mysql的
a)安装php:yum install php。
b)安装依赖:yum install php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml
php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt curl curl-devel
c)安装mysql的php支持,yum install php-mysql
d)如果安装nginx,需要安装yum install php-fpm,详细参见下面的步骤。
e)如果安装apache,则yum -y install httpd
f)启用php扩展的话,在/etc/php.d目录中
g)常用配置:vi /etc/php.ini启用短标签,设置short_open_tag = On,设置mbstring开启及编
码,mbstring.interal_encoding= UTF-8,设置时区:date.timezone = Asia/Shanghai,否则DateTime类会无法使用。
h)修改etc/httpd/conf下的httpd.conf文件,第276行ServerName https://www.360docs.net/doc/9c2006583.html,:80
取消注释,并把https://www.360docs.net/doc/9c2006583.html,改为localhost。同时把Listen 80临时更改为Listen 9090,因为阿里云如果没有备案域名的话,是无法访问80端口的。待备案发布产品时再改回80端口即可。
i)开启服务service httpd start。外网访问:http://114.215.128.136:9090,如果能成功访问到
php信息,表示apache和php都安装设置成功。
j)安装mysql:yum install mysql mysql-server,默认版本通常比较低。如果需要安装较新版本,# wget https://www.360docs.net/doc/9c2006583.html,/get/mysql-community-release-el6-5.noarch.rpm
rpm –ivh mysql-community-release-el6-5.noarch.rpm
全新安装:yum remove mysql mysql-server && yum install mysql mysql-server
数据库更新或升级之后:先备份所有自己创建的数据库,然后将其删除
#mysql_upgrade –uroot –p #此步骤用于升级数据库后,升级系统数据库的内容
#service mysqld restart #升级数据库后重新启动服务
修改mysql配置文件:vi /etc/https://www.360docs.net/doc/9c2006583.html,f。通常是修改data-dir的指向位置,如data-dir = /data/mysqlroot,每次修改后都要重新启动服务对目录进行初始化,包括root密码也会重置。
socket文件指向最好不要修改,修改后会很多麻烦。如果想要删除/var/lib/mysql下的数据库文件,则需要在mysqld服务重启之后删除即可,但需要保留mysql.sock文件。
k)修改mysql数据库编码:
登录到mysql后,使用show variables like “character”;来查看mysql各编码,默认应该是未设置。
更改成utf8编码的方法:
vi /etc/https://www.360docs.net/doc/9c2006583.html,f
在[mysqld]下添加两行:
character-set-server=utf8 #老版本使用的是default-character-set=utf8 init_connect=?SET NAMES utf8?
default-storage-engine=InnoDB
max_allowed_packet=50M
增加
[client]
default-character-set=utf8
l) 更改mysql配置文件,支持运行大sql文件。vi /etc/https://www.360docs.net/doc/9c2006583.html,f,在[mysqld]下添加一行:max_allowed_packet=50M
m)service mysqld start。控制台使用命令:mysql_secure_installation,设置root用户密码。第一次密码默认为空,直接回车确认即可。按提示进行操作,设置新密码,移除匿名用户,是否禁止root远程访问,移除测试数据库,重载私有表。
n)设置开机启动:chkconfig –level 2345 httpd on chkconfig –level 2345 mysqld on(level 前是两个横杠)
o)注:另有两种设置root密码的方式:
/usr/bin/mysqladmin -u root password '123456'// 为root账号设置密码
或者也可以使用mysql命令登录后,使用以下语句更改密码:
update https://www.360docs.net/doc/9c2006583.html,er set password=PASSWORD(…123456?) where user=?root?;
flush privileges;
p)使用mysql –u root –p即可进行登录。如果不能登录,则额外指定ip,则使用mysql –h 127.0.0.1 –uroot –p
q) 通常情况下,此时在外部仍不能访问服务器上的数据库,也就是说不能远程访问。需要做以下设置:对用户授权,允许指定用户远程访问,将mysql库中user表中的对应的用户的host设置为%,亦即允许该用户从任意ip远程访问,通常完成此步骤即可解决ip远程无法访问问题。
# mysql -u root -p //进入mysql控制台
# mysql>use mysql;
# mysql>update user set host = '%' where user = 'root'; //这个命令执行错误时可略过,通常会提示错误。
# mysql>flush privileges;
# mysql>select host, user from user; //检查…%? 是否插入到数据库中
#mysql>quit
此操作完成之后,外部即可访问,使用Navicat也可以连接了。
r) 如果出现root用户无法登录的情况,可尝试使用-h 参数登录,登录之后,重新设置root用户的密码。
s) 查看数据库连接情况:
mysql –uroot –p
登录后:show processlist;
如果想杀死一个数据库连接,直接
kill 1xxxx;后面是显示的进程id号。
t) 为了防止发生too many connections时候无法登录的问题
1.修改配置文件/etc/https://www.360docs.net/doc/9c2006583.html,f,调整连接参数
2.检查程序代码,对于没有关闭的链接及时进行关闭
产生这种问题的原因是:
连接数超过了MySQL 设置的值,与max_connections 和wait_timeout 都有关系。
wait_timeout 的值越大,连接的空闲等待就越长,这样就会造成当前连接数越大。
解决方法:
修改MySQL配置文件/etc/https://www.360docs.net/doc/9c2006583.html,f,设置成max_connections=1000,wait_timeout=5。如果没有此项设置可以自行添加,修改后重启MySQL服务即可。要不经常性报此错误,则要对服务器作整体性能优化
如果使用mysql –uroot –p出现提示localhost无法登录的情况。
尝试使用mysql –h 127.0.0.1 –uroot –p
u)如果发现mysql运行时异常,日志文件在/var/log/mysqld.log。重新初始化数据库:执行脚本/usr/bin/mysql_install_db
7.部署java和tomcat环境。CentOS6.5没有预安装java环境。
a)rpm –ivh jdk-7u60-linux-x64.rpm,安装新版本。
b)设置环境变量。
cd /etc/profile.d/
vi java.sh,创建一个新的文件。
添加以下内容:
export JAVA_HOME=/usr/java/jdk1.7.0_60 #rpm安装后一般安装到/usr/java下,此目
录下有个latest是个软链接,链接到最后安装的jdk版本,所有不要删除。
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib #注:等号前后不能有空格。
c)source /etc/profile,让修改后的环境变量立即生效。java –version。若显示java版本,表示安
装正常,且环境变量设置成功。
8.tomcat环境部署:
a)将源文件复制到/usr/local下,tar zvxf apache-tomcat-7.0.54.tar.gz
b)将目录改名为tomcat7
c)cd /bin & ./startup.sh
d)在外网使用http://114.215.128.136:8080,如果正常显示页面,表示安装成功。
e)yum install openssl-devel,安装openssl。
f)在https://www.360docs.net/doc/9c2006583.html,/download.cgi 下载Apr和AprUtils。
g)安装apr
tar zvxf apr-1.5.1.tar.gz
cd apr-1.5.1
./configure –prefix=/usr/local/apr
make
make install
apr 默认安装在/usr/local/apr
h)安装apr-util
tar zvxf apr-util-1.5.3.tar.gz
cd apr-util-1.5.3
./configure –prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make
make install
i)安装tomcat-native tomcat-native.tar.gz 可以在tomcat/bin目录下找到。
cd /usr/local/tomcat7/bin
tar zvxf tomcat-native.tar.gz
cd tomcat-native-1.1.30-src/jni/native
./configure --with-apr=/usr/local/apr --with-java-home=/usr/java/jdk1.7.0_60
make
make install
j)设置apr 的环境变量:
vi /etc/profile
文件末尾添加以下内容:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib #等号前后不能有空格使profile生效,
source /etc/profile
k)启动tomcat 后,看日志:
./startup.sh
cat logs/catalina.out
可以看到以下结果:
INFO: Loaded APR based Apache Tomcat Native library 1.1.30 using APR version 1.5.1.
INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
表示安装配置成功。
9.配置apache和tomcat多实例环境。对于无域名的局域网内主机设置无效。
a)yum install httpd-devel,此时在/usr/sbin下会生成一个apxs文件。
b)下载tomcat-connector,解压缩tar zvxf tomcat-connectors-1.2.40-src.tar.gz。
c)cd tomcat-connectors-1.2.37-src/native/
d)./configure --with-apxs=/usr/sbin/apxs
e)make && make install,安装完成后,会看到/usr/lib64/httpd/modules/mod_jk.so,表示编
译安装到此目录中。
f)vi /etc/httpd/conf/httpd.conf,在文件末尾加一行Include conf/mod_jk.conf
g)在conf目录下新建mod_jk.conf文件,添加内容如下:
#加载moldules下mod_jk.so文件
loadModule jk_module modules/mod_jk.so
#加载集群中的工作的tomcat配置文件
JkWorkersFile conf/workers.properties
#共享内存的配置和运行时信息文件名
JkShmFile logs/mod_jk.shm
#指定jk的日志输出文件
JkLogFilelogs/mod_jk.log
#日志输出文件的级别
JkLogLevelerror
h)创建tomcat多实例配置文件conf/workers.properties,添加内容如下:
# 指定Tomcat 和JDK 路径
workers.tomcat_home=/usr/local/tomcat7
workers.java_home=/usr/java/jdk1.7.0_60
ps=/
# worker列表
# 定义转发请求到不同Tomca列表,此处定义3个,分别对应虚拟主机site1、site2和site3 worker.list=site1,site2,site3
# 虚拟主机https://www.360docs.net/doc/9c2006583.html,定义,端口10002随后在用户的server.xml 定义
worker.site1.port=10002
worker.site1.host=https://www.360docs.net/doc/9c2006583.html,
worker.site1.type=ajp13
# 虚拟主机https://www.360docs.net/doc/9c2006583.html,定义,端口10004随后在用户的server.xml 定义
worker.site2.port=10004
worker.site2.host=https://www.360docs.net/doc/9c2006583.html,
worker.site2.type=ajp13
# 虚拟主机https://www.360docs.net/doc/9c2006583.html,定义,端口10006随后在用户的server.xml 定义
worker.site3.port=10006
worker.site3.host=https://www.360docs.net/doc/9c2006583.html,
worker.site3.type=ajp13
i)tomcat7目录,仅留下bin和lib目录,其余目录以副本形式创建多个,每一个都是一个tomcat
实例。在webapps下的ROOT目录下,放置JavaEE应用。
j)vi /etc/httpd/conf/httpd.conf,在文件末尾添加如下内容:
#
# DocumentRoot 是网站文件存放的根目录(针对于php,java无需此设置)
# ServerName 是网站域名, 需要跟DNS 指向的域名一致,不包含http://
#
NameVirtualHost *:80#必须
ServerAdmin viogel4@https://www.360docs.net/doc/9c2006583.html,
DocumentRoot /data/wwwroot/php #如果是php站点,指定其位置,java则无需指定ServerName https://www.360docs.net/doc/9c2006583.html,#不带http://前缀
DirectoryIndex index.jsp index.php
#转发到tomcat实例处理请求时才需要,php站点不需要。
#JkMount /* site1 #如果对任何url全部转发,可按此设置
JkMount /*.jsp site1
JkMount /*.do site1
JkMount /servlet/* site1
JkMount /*.action site1
JkMount /*.jhtml site1
第一个虚拟主机创建一个。
k)将apache的监听端口更改为80
l)编辑tomcat实例下的server.xml,进行如下更改:
注释掉8080端口的connector。
将protocol="AJP/1.3"的connector端口更改为workers.properties中设置的端口。
m)在每个实例下,编写一个启动服务和停止服务的脚本tomcat.sh
#!/bin/bash
# description: Start up the Tomcat servlet engine.
# Sourc function library.
. /etc/init.d/functions
RETVAL=$?
export CATALINA _BASE= /data/wwwroot/java/yueyoga #tomcat实例目录
export CATALINA _HOME= /usr/local/tomcat7
case $1 in
start
if [ -f $CATALINA _HOME/bin/startup.sh ];
then
echo $ Start Tomcat
$CATALINA _HOME/bin/startup.sh
fi
;;
stop
if [ -f $CATALINA _HOME/bin/shutdown.sh ];
then
echo $ Stop Tomcat
$CATALINA _HOME/bin/shutdown.sh
fi
;;
*
echo $ Usage: $0 {start|stop}
exit 1
;;
esac
exit $RETVAL
注意:此脚本文件要在CentOS系统下生成,不能使用windows编写,格式不兼容。
10.配置apache自动进行gzip压缩
必须先开启以下两个模块:去掉前面的#
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
对于阿里云的centos 6.5系统安装的apache默认是已经开启此两个模块的。
同时在配置文件的末尾加上一段:配置压缩级别以及压缩文件和不进行压缩的文件。
SetOutputFilter DEFLATE
DeflateCompressionLevel 9
AddOutputFilterByType DEFLATE text/*
AddOutputFilterByType DEFLATE application/javascript application/x-javascript
AddOutputFilter DEFLATE js css
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:pdf|doc|docx|xls|xlsx|ppt|pptx|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary
11.注:tomcat也可单独进行配置gzip压缩。如果使用apache和tomcat结合使用的话,只需要在apache
服务器配置gzip压缩即可。
阿里云部署PHP项目及ThinkPHP项目注意事项:
1.安装常见php扩展:yum install php-gd libjpeg* php-xml php-xmlrpc php-mbstring php-mcrypt
libmcrypt,安装完成后,可使用phpinfo()函数验证是否安装成功。已启用的扩展可在/etc/php.d目录中查看。
2.安装mysql数据库:yum install php-mysql
3.确认php项目是否使用了php短标签或asp格式的标签,如果有,那么需要开启。在/etc/php.ini中,
找到short_open_tag = Off,将Off改为On
4.确认php项目是否使用了mbstring等相关函数,如果使用了,则需要安装php-mbstring扩展。安装
后,在/etc/php.ini中,取消注释并设置mbstring.internal_encodeing = UTF-8
5.设置时区:date.timezone = Asia/Shanghai,否则PHP 5.3之后的DateTime类会无法使用。
6.如果项目中用到了hessianPHP2,则需要安装curl,yum install curl curl-devel
7.如果项目中需要使用ssl,则需要安装openssl,yum install openss openssl-devel
8.修改etc/httpd/conf下的httpd.conf文件,查找ServerName https://www.360docs.net/doc/9c2006583.html,:80取消注释,
并把https://www.360docs.net/doc/9c2006583.html,改为localhost。否则,在启动httpd服务的时候会有警告。
9.开启apache的pathinfo支持:修改/etc/php.ini,找到;cgi.fix_pathinfo=1,去掉前面的分号。在
apache配置文件中/etc/httpd/conf/httpd.conf加入,
AcceptPathInfo On
10.开启apache的rewrite模块。修改/etc/httpd/conf/httpd.conf,找到LoadModule rewrite_module
modules/mod_rewrite.so,将前面的“#”去掉,如果不存在则添加此句。阿里云CentOS-6.5在安装apache服务器的时候默认是启动rewrite模块的。如果你的网站(或应用)是放在根目录/中,则找到Options FollowSymLinks
AllowOverride None
将上面的None改为All
如果设置了DirectoryRoot,则在DirectoryRoot标签内部,设置
Order allow,deny
Allow from all
AllowOverride All
如果启用的是虚拟主机,则在虚拟主机的标签内部,设置
Options Indexes FollowSymLinks
AllowOverride all
Order Allow,Deny
Allow from all
11.a pache的日志在/var/log/httpd目录下,可在此目录下查看错误日志。日志设置在
/etc/httpd/conf/httpd.conf文件中,设置LogLevel = debug,info,warn,error等。
12.注意php项目的权限设置,如果权限设置不正确,可能导致目录或文件,不可读,不可写,不可执行。
13.项目入口文件index.php,在linux下是不能正常使用的,需要进行测试(使用echo输出即可)改为正
确格式。
define('THINK_PATH',dirname(__FILE__).'/CORE/');
define('APP_NAME',dirname(__FILE__).'App');
define('APP_PATH',dirname(__FILE__).'/App/');
define('APP_DEBUG',0);
define('APP_PUBLIC_PATH',dirname(__FILE__).'./Public');
define('BUILD_DIR_SECURE',true);
define('DIR_SECURE_FILENAME', 'default.html');
define('DIR_SECURE_CONTENT', 'deney Access!');
//echo dirname(__FILE__);
//echo APP_PATH;
require(THINK_PATH.'Core.php');
nginx环境安装
1.可使用yum install nginx,直接进行安装,但是CentOS-6.6库提供的nginx版本实在是太老了。所
以先安装nginx-release-centos-6-0.el6.ngx.noarch.rpm,安装之后,会将nginx添加到centos 软件库,此时再进行yum 安装即可安装较新的版本。
2.安装之前,需要关闭Selinux和iptables,如果不关闭,则需要开放所有需要开放的端口。
3.安装之前,先安装必要的依赖:
yum install php-gd libjpeg* php-xml php-xmlrpc php-mbstring php-mcrypt libmcrypt yum install curl curl-devel
yum install zlib zlib-devel openssl openssl-devel pcre pcre-devel
4. 开始安装:yum install nginx,安装完成后,已自动注册为系统服务且默认开机启动,可以使用
chkconfig –list nginx 来进行查看,可使用service nginx start|stop|restart来进行服务的启动。
nginx的几个默认目录
whereis nginx
nginx: /usr/sbin/nginx /etc/nginx /usr/share/nginx
配置所在目录:/etc/nginx/
PID目录:/var/run/nginx.pid
错误日志:/var/log/nginx/error.log
访问日志:/var/log/nginx/access.log
默认站点目录:/usr/share/nginx/html
5.常用命令
服务开启|停止|重启:service nginx start|stop|restart
启动nginx:nginx
重启nginx:killall -HUP nginx
测试nginx配置:nginx -t
启动后使用http://114.215.128.136:80,测试是否启动成功,如果启动成功,会显示如下界面。
6.安装php支持。yum install php-fpm。设置为开机启动chkconfig –level 2345 php-fpm on
7.配置nginx。
vi /etc/nginx/nginx.conf,第一行更改为user nginx nginx;
vi /etc/nginx/conf.d/default.conf
修改location / 部分,index index.php index.html index.htm;增加index.php
取消关于php FasgCGI部分的注释
location ~ \.php$ {
root /usr/share/nginx/html;#web应用目录,指此localtion的目录
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
同时,fastcgi改为红色字体部分。
8.配置php-fpm
vi /etc/php-fpm.d/www.conf #编辑
user = nginx #修改用户为nginx
group = nginx #修改组为nginx
:wq #保存退出
注意:这里的user和group是不能使用root的。
9. 配置虚拟主机:
修改default.conf
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.php index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
添加ytree.conf
server {
listen 80;
server_name https://www.360docs.net/doc/9c2006583.html,;
root /data/www/php/ytree;
index index.php index.html index.htm;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
10. session读取不到的问题:查看/etc/php.ini,默认session.save_path=/var/lib/php/session,此配置对
apache是没有问题的。但是nginx由于对用户敏感性,在nginx.conf和/etc/php-fpm.d/www.conf中均设置了用户和组为nginx,所以如果部署在nginx中的应用无法读取session,则进行以下操作:
chown nginx.nginx /var/lib/php/session
chmod 766 /var/lib/php/session
此时读取session应该没有问题了。
如果是apache环境,则要设置chown root.apache /var/lib/php/session
chmod 770 /var/lib/php/session
Nginx与tomcat整合
1.tomcat安装过程如上。
2.cd /etc/nginx && vi proxy.conf,添加一个代理设置,内容如下:
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
3.cd /etc/nginx/conf.d && vi test.conf,添加一个tomcat应用代理设置,内容如下:
server {
listen 80;
server_name https://www.360docs.net/doc/9c2006583.html,;
root /usr/local/tomcat7/webapps/ROOT;
location / {
index index.jsp index.jhtml index.do index.html index.htm;
include /etc/nginx/proxy.conf;
proxy_pass http://127.0.0.1:8080;
}
}
这是一个tomcat虚拟主机,通过nginx进行代理,使用域名https://www.360docs.net/doc/9c2006583.html,进行访问,被nginx直接代理到http://127.0.0.1:8080这个地址。如果想创建多个虚拟主机,就可以在本机或其它主机创建多个tomcat应用,使用不同的端口如8081,8082,8088,9000,9090等。具体配置方法是在tomcat的server.xml中配置多个server,不同的server使用不同的端口,指向不同的目录。