ubuntu上配置php + mysql + nginx
环境搭建的最初目的:
为了能够运行thinksns。
版本:
ubuntu 12.04, php 5.3.10,mysql 5.5.22,nginx 1.1.19。
1、安装php

2、安装mysql

其中主要安装mysql-server即可,mysql-client也可以不安装,因为服务器端带有客户端访问的命令。
mysql-client-5.5是服务器默认安装的。
通过sudo apt-get remove mysql-client卸载掉mysql-client。
3、安装nginx

4、整合php+mysql+nginx
4.1、启动nginx服务器
启动服务器命令:sudo /etc/init.d/nginx start (或 sudo service nginx start)
服务器的配置文件:/etc/nginx/sites-available/default,在配置文件中可以修改端口和其他一些配置,比如网站的根目录所在位置
4.2、nginx中配置php
在服务器配置文件中添加index,加入index.php,去掉php配置的注释脚本。
重启服务器,但出现错误,错误信息

查看配置文件中,发现需要安装php5-cgi和php5-fpm,安装后,发现问题还没有解决
于是又安装了一些建议的包,php-pear和php5-suhosin,但结果还是没有解决
继续寻找,以为是unix socket的问题,修改/etc/php5/fpm/pool.d/www.conf,改变listen = /var/run/php5-fpm.sock,
重启php-fpm服务(可以通过netstat查看到9000端口改为了该sock),结果依然没解决
(socket的通信方式相比tcp/ip来说不需要占用带宽,某一程度上提升了性能)
解决之道,发现最终问题是出于fastcgi_pass采用的方式重复了,一个是tcp/ip,一个是unix socket,在配置文件中两个必须注释掉一个。
注释掉fastcgi_pass 127.0.0.1:9000后,重启nginx服务器
4.3、验证php页面
编写一个简单的php页面,<?php phpinfo()>
由于上面采用的是unix socket方式访问,故没有出现502 bad gateway,采用tcp/ip访问会出现。
因为没有启动php-cgi,安装spawn-cgi来管理启动php-cgi

也可作为开机启动,在/etc/init.d/复制一份nginx改为php-cgi,替换
DAEMON=/usr/bin/spawn-fcgi
DAEMON_OPTS="-a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi"
及其他一些描述,这样就能开机启动php-cgi了
4.4、管理mysql
为了能够管理,安装phpmyadmin,并通过nginx虚拟目录访问phpmyadmin

安装好后,配置nginx的服务器,使能够访问phpmyadmin
配置location /php/myadmin/{} 和location ~ /phpmyadmin/.+\.php.*${},具体的内容和配置文件中的实例类似
访问时出现file not found,这是由于location ~ /php/myadmin/.+\.php.*${}在location ~ \.php${}后面的原因,放在前面即可。
4.5、测试mysql
测试例子: user为mysql的用户名,passwd为该用户名的密码
1 <?php 2 $conn = mysql_connect('localhost', 'user', 'passwd'); 3 if ($conn) { 4 echo "Connected successful!"; 5 } else { 6 die("Could not connect to the mysql: <br/>".mysql_error()); 7 } 8 ?>
访问该页面,若连接成功后,则返回Connected successful!
至此整个php+mysq+nginx配置算完成了,通过ubuntu下的apt-get安装解决了很多依赖问题。不过在安装的过程中还有些Suggested packages没有安装,这些并不影响使用。
接下来就是安装thinksns。

浙公网安备 33010602011771号