热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Apache+Nginx+MySql+PHP配置介绍

Apache+Nginx+MySql+PHP配置介绍,有需要的朋友可参考一下

Apache+Nginx+MySql+PHP配置介绍,有需要的朋友可参考一下

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" 这二要目录一样
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里

Listen 80 修改 httpd-vhost.conf文件格式如下
# 为虚拟主机在所有 IP 地址上监听

代码如下
NameVirtualHost *:80

ServerAdmin edu1211@163.com
DocumentRoot /var/www/
ServerName www.example.com
# 你可以在这里添加其他指令


DocumentRoot /var/www/a
ServerName www.a.com
# 你可以在这里添加其他指令
Errorlog "logs/a.log"
CustomLog "logs/b.log" common

上面可以在外部电脑更改 /etc/hosts 文件 如在 windows平台更改 C:WindowsSystem32driversetchosts 文件 (假设 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.org/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


#service nginx restart建一个测试页面加上 vim /usr/share/nginx/html/a.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 然后修改一下就可以了


推荐阅读
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • 本文探讨了如何解决PHP文件无法写入本地文件的问题,并解释了PHP文件中HTML代码无效的原因,提供了一系列实用的解决方案和最佳实践。 ... [详细]
  • 本文详细介绍了一种通过MySQL弱口令漏洞在Windows操作系统上获取SYSTEM权限的方法。该方法涉及使用自定义UDF DLL文件来执行任意命令,从而实现对远程服务器的完全控制。 ... [详细]
  • 本文详细介绍了如何检查和配置电脑上的PHP环境,包括位数、运行支持以及文件格式的打开方式。适合初学者了解PHP的基础知识和操作方法。 ... [详细]
  • Google排名优化-面向Google(Search Engine Friendly)的URL设计 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 本题来自WC2014,题目编号为BZOJ3435、洛谷P3920和UOJ55。该问题描述了一棵不断生长的带权树及其节点上小精灵之间的友谊关系,要求实时计算每次新增节点后树上所有可能的朋友对数。 ... [详细]
  • 探索新一代API文档工具,告别Swagger的繁琐
    对于后端开发者而言,编写和维护API文档既繁琐又不可或缺。本文将介绍一款全新的API文档工具,帮助团队更高效地协作,简化API文档生成流程。 ... [详细]
  • 深入解析Serverless架构模式
    本文将详细介绍Serverless架构模式的核心概念、工作原理及其优势。通过对比传统架构,探讨Serverless如何简化应用开发与运维流程,并介绍当前主流的Serverless平台。 ... [详细]
  • 智能医疗,即通过先进的物联网技术和信息平台,实现患者、医护人员和医疗机构之间的高效互动。它不仅提升了医疗服务的便捷性和质量,还推动了整个医疗行业的现代化进程。 ... [详细]
  • 本文详细介绍如何通过设置SSH密钥来获取连接GitHub远程仓库的权限,包括生成密钥、添加到GitHub账户以及验证连接等步骤。 ... [详细]
  • 本文介绍如何配置SecureCRT以正确显示Linux终端的颜色,并解决中文显示问题。通过简单的步骤设置,可以显著提升使用体验。 ... [详细]
  • CentOS 7.2 配置防火墙端口开放
    本文介绍如何在 CentOS 7.2 系统上配置防火墙以开放特定的服务端口,包括 FTP 服务的临时与永久开放方法,以及如何验证配置是否生效。 ... [详细]
  • WinSCP: 跨Windows与Linux系统的高效文件传输解决方案
    本文详细介绍了一款名为WinSCP的开源图形化SFTP客户端,该工具支持SSH协议,适用于Windows操作系统,能够实现与Linux系统之间的文件传输。对于从事嵌入式开发的技术人员来说,掌握WinSCP的使用方法将极大提高工作效率。 ... [详细]
author-avatar
Sadness_小妖_619
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有