Apache/Nginx+MySql+PHP配置
1. 装完系统后开启 sshd, 关闭防火墙 (不然外链接是访问不了 apache) 关闭安全系统 SELinux( 不然报403 访问页面错误 )
重启后永久性生效
chkconfig sshd on (
开启
sshd)
chkconfig iptables off (
关闭防火墙
)
修改
/etc/selinux/config
文件中设置
SELINUX=disabled (
关闭
SELinux)
即时生效
,
重启后失效
#service sshd start (
开启
sshd)
#service iptables stop(
关闭防火墙
)
#setenforce 0 (
关闭
SELinux)
2.
默认
centos6
装了
mysql+apache
可用
rpm -q mysql
或
httpd
查看是否已经装
默认已安装
chkconfig
设成开机启动
( chkconfig --list
是列出当前
,
如果
list
里面没有
mysqld
和
httpd
则用
chkconfig --add mysqld
和
httpd)
接着
chkconfig httpd on
和
chkconfig mysqld on
这只是要重启后才永久生效
如果即时生效
用
service httpd start service mysqld start
3.
修改
apache
的配置文件比如更改网站文档目录或不同域名指向不同的文件夹或开端口等等
默认配置文件在
/etc/httpd/conf
文件夹下的
httpd.conf
1).
修改网站文档目录在
httpd.conf
下修改
DocumentRoot "/var/www" <Directory "/var/www">
这二要目录一样
2).
不同域名指向不同目录
在
httpd.conf
查找
#Inculde /etc/httpd/conf/httpd-vhosts.conf
去掉前面的
#
号如果不存在刚加上这一句且创建
httpd-vhosts.conf
文件
(
或者直接在
/etc/httpd/conf.d
目录下建一个
httpd-vhosts.conf
因为
http.conf 已经#Inculde /etc/httpd/conf.d/*.conf
了
)
#
确保
Apache
在监听
80
端口
即
httpd.conf
文件里要有下面一句话 其实也可以放在httpd-vhosts.conf里
修改
httpd-vhost.conf
文件格式如下
#
为虚拟主机在所有
IP
地址上监听
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin edu1211@163.com
DocumentRoot /var/www/
ServerName www.example.com
# 你可以在这里添加其他指令
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/a
ServerName www.a.com
# 你可以在这里添加其他指令
Errorlog "logs/a.log"
CustomLog "logs/b.log" common
</VirtualHost>
上面可以在外部电脑更改
/etc/hosts
文件
如在
windows
平台更改
C:\Windows\System32\drivers\etc\hosts
文件
(
假设
192.168.0.110
是我们部署的服务器
)
127.0.0.1 localhost
192.168.0.110 www.example.com
192.168.0.110 www.a.com
192.168.0.110 www.b.com
则在外部电脑输入
www.example.com
则跳到
/var/www/
目录
则在外部电脑输入
www.a.com
则挑到
/var/www/a
目录
则在外部电脑输入
www.b.com
则挑到
/var/www/
目录
为什么输入
www.b.com
会挑到
/var/www/
目录下
因为服务器在
httpd-vhosts.conf
找不到虚拟主机名刚默认挑到
80
端口的第一个虚拟目录下
3).
为网站开不同端口
首先在
httpd.conf
或httpd-vhosts.conf(建议写在这里面)加上要监听的端口
Listen 8080 //
添加的要开的断口
然后
httpd-vhost.conf
添加格式跟
80
端口一样
参考文档
http://blog.csdn.net/edisonlg/article/details/7217153
4.
安装
php
初始系统是没有安装的
yum install php
即可
php
配置文件是
php.ini
可以用
find / -name php.ini
一般在
/etc/php.ini
这个位置
现在要
apache
支持
(
绑定
)php
脚本语言
即修改
apache
的配置文件
httpd.conf
在
#AddType application/x-tar .tgz
下加上以下二行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
DirectoryIndex index.html index.html.var index.php//即加上访问目录时index.php
其实上面可以改
/etc/httpd/conf.d
目录下的
php.conf
就可以了
(
建议这样
因为
/etc/httpd/conf/httpd.conf
已经有
Include conf.d/*.conf)
在php.conf 里面我们都可以看到 Apache 绑定PHP 脚本语言的代码所以上面的 httpd-vhosts.conf 文件可以直接写在 /etc/httpd/conf.d目录下就可以了
同时修改
php
的配置文件
php.ini
打开
mysql
扩展
即去掉
;extension=mysql.so
的分号
然后重启
apache
即可
service httpd restart
5.
安装
phpMyAdmin
1)
到官网下载最新的
phpMyAdmin
包
2)
解压包
tar zxvf phpMyAdmin-2.113-all-languages.tar.gz
3) mv phpMyAdmin-2.113-all-languages /var/www/phpMyAdmin
4) phpMyAdmin
的配置文件在
/phpMyAdmin/libraies/config.default.php
文件
(
如果是以根目录下
config.ini.php
配安装例外
)
安装完成
即可通过网页登录
但是默认
mysql
是空密码
而
phpMyAdmin
禁止空密码登录
则可通过命令行的方式更改
mysql
密码或改
phpMyAdmin
的配置文件让允许空密码登录
打开配置文件找到
$cfg['Servers'][$i]['nopassword'] =false
$cfg['Servers'][$i]['AllowNoPassword'] =false
把这二行的
false
都改成
true
即可
$cfg['Servers'][$i]['auth_type'] ='cookie';
是默认的
,
如果更成
$cfg['Servers'][$i]['auth_type']='config';
用
config
模式时需要
user,password
参数,这时登录
PhpMyAdmin
不需要输入用户名密码,安全性较低,适合多用户测试开发即
$cfg['Servers'][$i]['user']='root';
$cfg['Servers'][$i]['password']='';
就生效了
即以种默认身份登录
6.
安装
PHP
扩展模块
linux
下
PHP
扩展安装模块比如打开
phpMyAdmin
的话会提示
没有找到
PHP
扩展
mbstring
,而您现在好像在使用多字节字符集。没有
mbstring
扩展的
phpMyAdmin
不能正确分割字符串,可能产生意想不到的结果
.
则在
php.ini
加上
extension=mbstring.so
重启
apache(httpd)
还是不行
那么运行
find / -name mysql.so
找到存放模块的目录一般是
/usr/lib/php/modules/mysql.so
这个位置则找找
/usr/lib/php/modules/
目录下有没有
mbstring.so
很显示没有
那么得安装
yum install php-mbstring
然后再重启
apache(httpd)
刚提示错误没有了
7.
安装
Nginx+PHP(要源码安装 )
1)
安装
Nginx
centos
默认是安装了
apache
那么用
yum remove httpd
然后再安装
ngnix
因为
yum
源是不包含
ngnix
官网有提供
yum
安装说明
:
CentOS:
To add nginx yum repository, create a file named /etc/yum.repos.d/nginx.repo and paste one of the configurations below:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
其它系统参考
http://wiki.nginx.or
g
/Install
当然也有源码安装但是需要你安装依赖包
(
有点麻烦
)
Nginx
的配置文件在
/etc/nginx/nginx.conf
但是文件的最后是包含其它文件的 Include /etc/nginx/conf.d/*.conf;
然后
#service nginx start #chkconfig nginx on
2)
安装
PHP
但是安装
PHP
的时候如果直接
yum
安装
php
是不行的
因为默认情况下
Nginx
和
PHP
他俩之间是一点感觉没有的,在之前,很多朋友都搭建过
Apache+PHP
,
Apache+PHP
编译后生成的是模块文件,而
Nginx+PHP
需要
PHP
生成可执行文件才可以,所以要利用
fastcgi
技术来实现
N ginx
与
PHP
的整合,这个只要我们安装是启用
FastCGI
即可。此次我们安装
PHP
不仅使用了
FastCGI
,而且还使用了
PHP-FPM
这么一个东东,
PHP-FPM
说白了是一个管理
FastCGI
的一个管理器,它作为
PHP
的插件纯在,在安装
PHP
要想使用
PHP-FPM
时就需要把
PHP-FPM
以补丁的形式安装到
PHP
中,而且
PHP
要与
PHP-FPM
版本一致,这是必须的,切记!
所以
PHP
得源码安装的时候把
PHP-FRM
选项带上即解压
PHP
源码包后
先安装
gcc
套件这是个编译器
yum install gcc yum install gcc-c++
(libmcrypt
要用到
)
./configure --prefix=/usr/local/php --with-gd --enable-mbstring --with-mysql --with-mysqli --with-jpeg-dir --with-zlib --with-openssl --with-mcrypt --enable-fastcgi --enable-fpm
此过程会出现以下错误
a) error: xml2-config not found. Please check your libxml2 installation.
因为
php5
是需要
libxml2
支持
rpm -qa|grep libxml2
只需要安装
libxml2-dev ,
yum install libxml2-devel
b)
同样出会出现
openssl
错误那么
yum install openssl-devel
c) configure: error: jpeglib.h not found.
解决方法是:
yum install libjpeg-devel
d) configure: error: png.h not found
解决方法是:
yum install libpng-devel
e) configure: error: mcrypt.h not found. Please reinstall libmcrypt.
解决方法
yum
码安装不了
所以得百度搜
libmcrypt
源码
下载页面
http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/
(
这个跟
php
版本可以不一至
)
libmcrypt./configure (
这里不能
--prefix
指定安装路径不然下面安装还是会出错
)
可能会报
check ....no
忽视这些
checking for g77... no
什么
fastcgi
警告
但是没出现错误比如
configure: error: No F77 compiler found
就可以了所以
接着
#make #make install
跳到
php
目录下继续
./configure --prefix=/usr/local/php --with-gd --enable-mbstring --with-mysql --with-mysqli --with-jpeg-dir --with-zlib --with-openssl --with-mcrypt --enable-fastcgi --enable-fpm
安装
php
过程会遇到的报错可以参考
http://www.cnblogs.com/1110111abc/articles/2528102.html
接着
#make
#make install
#cp php.ini-production /usr/local/php/etc/php.ini
#mv /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf //不然下面启动php-fpm会报错找不到php-fpm.conf文件
下面我们就要启动
PHP-FPM
#/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini //如果不加上-c参数指定他的php.ini参数(必须不然以后没法修改他的php.ini文件) (lsof -i:9000 可以查看9000端口占用详细情况) 网上说后面加上start是不行的(可能以前版本要吧)
vim /etc/rc.local
在这个文件的最后加入如下语句
:
/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini
这里你所要启动的服务一定要写成是绝对路径的形式
!!
不然的话
,
这个服务是启动不起来的
!!
最后一步关联
Nginx
与
PHP
#vim /etc/nginx/conf.d/default.conf
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
# include fastcgi_params;
#}
改成
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
提示
:Nginx
自己知道咋找
PHP
了还不行,还需要
PHP
知道咋找
Nginx
,这点我们不需要担心,
PHP-FPM
已经在配置文件中定义了从哪接受
PHP
请求,我们可以打开配置文件看一下
(Apache
却不同
只要
Apache
绑定了
PHP
就行)
#vi /usr/local/php/etc/php-fpm.conf
如果要把
9000
端口改成其它的端口那么二个文件的端口要改成一至
最后重启
Nginx
建一个测试页面加上
vim /usr/share/nginx/html/a.php
<?php
phpinfo();
?>
执行
phpinfo();date
时区不正确
解决方法
vim /usr/local/php/etc/php.ini
设置为
date.timezone = Asia/Shanghai
大功告成 参考
http://wenku.baidu.com/view/570b78b765ce050876321377.html
如果要在Nginx 开端口什么的跟 Apache 上一样
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#location ~ /\.ht {
# deny all;
#}
}
复制一下
server
然后修改一下就可以