四月 9, 2018

Ubuntu+Nginx+PHP+MySql

安装Nginx

sudo apt-get update
sudo apt-get install nginx

Nginx安装完,会默认启动80端口,也会默认处于启动状态,在浏览器里面输入 http://ip 就能访问了

配置nginx 指令

sudo nano /etc/nginx/sites-available/default

重启nginx指令

sudo service nginx restart

重新加载nginx配置指令

/etc/init.d/nginx reload

验证配置文件是否正确的指令

nginx -c /etc/nginx/nginx.conf -t 

安装MySql

sudo apt-get install mysql-server

如果出现Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)错误
可以运行一下指令

sudo service mysql start

MySQL数据目录是MySQL数据库的重要部分,如何确定MySQL数据目录的位置是每一个DBA都需要掌握的知识。

一个缺省MySQL数据目录被编译进了服务器,如果你从一个源代码分发安装MySQL,典型的缺省目录为/usr/local/var,如果从RPM文件安装则为/var/lib/mysql,如果从一个二进制分发安装则是/usr/local/mysql/data

在你启动服务器,通过使用一个--datadir=/path/to/dir选项可以明确指定MySQL数据目录位置。如果你想把数据目录置于其它缺省位置外的某处,这很有用。
参考链接

卸载mysql

sudo apt-get autoremove --purge mysql-server-5.0
sudo apt-get remove mysql-server
sudo apt-get autoremove mysql-server
sudo apt-get remove mysql-common //这个很重要

清理残留数据

dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

安装PHP

sudo apt-get install php5-fpm php5-mysql

php-fpm已经默认包含fastcgi了,不需要额外安装

php配置指令

sudo nano /etc/php5/fpm/php.ini

配置nginx中的php模块

location ~ \.php$ {
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

                # With php5-cgi alone:
                #fastcgi_pass 127.0.0.1:9000;
                # With php5-fpm:
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }

php fastcgi(spawn-fcgi)的启动与关闭

重点参考链接

对于nginx+php的方案来说,php5-fpm已经完全可以满足使用需求,但是有时候,在服务器部署的时候回出现502问题,也就是说fastcgi没有启动,这时候值需要调用 service php5-fpm restart命令,就能重新启动cgi,然后将nginx中的对于php的配置中对fastcgi的依赖修改为 fastcgi_pass unix:/var/run/php5-fpm.sock;,注释掉:fastcgi_pass 127.0.0.1:9000;
上面的参考里面实在无法解决情况下再考虑使用下面的方案。

在实际的使用中,有可能某些未知原因导致网页打开出现502错误,这个错误基本上就是因为php的fastcgi引起的。

这时候可以先使用端口查看命令查看fastcgi是否已经启动,如果已经启动的话,那么fastcgi占用的端口是9000。

启动:

spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi 

说明:

-a 127.0.0.1: PHP FastCGI 绑定IP地址
-p 9000: PHP FastCGI 指定端口
-u www: PHP FastCGI 用户名
-g www: PHP FastCGI 用户组
-f /usr/local/bin/php-cgi: 指向 PHP5 fastcgi

查看运行状态
使用netstat配合grep即可

netstat -an |grep 9000
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN  
tcp        0      0 127.0.0.1:9000          127.0.0.1:58879         TIME_WAIT  
tcp        0      0 127.0.0.1:9000          127.0.0.1:58880         TIME_WAIT 

如果出现了这样的提示就说明fastcgi正在运行
如果想查看pid的话可以用 ps -ef

ps -ef | grep spawn-fcgi
ubuntu   27329 24796  0 02:50 pts/0    00:00:00 grep --color=auto spawn-fcgi

退出

pkill -9 php-cgi

这个操作很危险。如果你使用的是nginx环境,中断fastcgi后前台访问php会提示502,很多人遇到502都是因为fastcgi忘打开或者异常退出引起的

安装redis

安装参考链接

1.运行如下命令行来安装 add-apt-repository 工具。参考链接

sudo apt-get install python-software-properties
sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:rwky/redis //添加源
sudo apt-get update
sudo apt-get install -y redis-server

2.启动redis

sudo service redis-server start  

3.redis 的默认端口是:6379 可以使用 netstat -ntl命令来查看是否打开了这个端口。如果已经打开了,那么说明redis已经启动。

4.进入redis

redis-cli

如果现实127.0.0.1:6379> 那么说明安装成功

安装php-redis扩展

1.下载扩展压缩包

wget https://github.com/nicolasff/phpredis/zipball/master -O php-redis.zip  

2.解压缩

unzip php-redis.zip  

3.进入目录

cd phpredis-phpredis-0f51b8c/

具体的目录名称有可能随着不同版本而不同。

4.运行

phpize5 

如果没有命令则安装php5-dev 依赖

apt-get install php5-dev 

5.编译并且安装

./configure  
make
make install

6.修改php.ini
如果是用使用php-fpm,那php.ini文件在 /etc/php5/fpm/php.ini
如果其他方式的,那么有可能在/etc/php5/cli/php.ini。实际的路径视具体的使用环境变更。但是一定要找到路劲。否则有可能不起作用。

找到php.ini后,添加如下指令:

extension = redis.so

redis.so库,在上面执行make install后应该已经自动安装到php的扩展目录中,目录的路径视各个版本不一样儿不同,我的路径在 /usr/lib/php5/20121212/,如果安装成功的话,redis.so应该已经在那个目录中了。

如果找不到,那么还可以直接使用绝对路径的方法加载扩展。

extension = /home/phpredis-phpredis-b718ce0/modules/redis.so

上面路径也视具体情况做修改。

7.重启php-fpm和nginx

/etc/init.d/php5-fpm restart  
service nginx restart  

8.现在就可以使用redis了

参考文档1
参考文档2

ubuntu php 更新到7.0

1.先更新ubuntu

apt-get update -y && apt-get upgrade -y

2.安装ppa

apt-get install python-software-properties

3.添加php7.0的源

add-apt-repository ppa:ondrej/php

4.执行update

apt-get update

如果报W: GPG error: http://nginx.org precise Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY ABF5BD827BD9BF62类似的异常,那么是因为官方不信任该源。

解决方法:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ABF5BD827BD9BF62

注意,这里的key需要跟上面的报错的key一致。

然后再次update

5.移除php5-fpm

apt-get purge php5-fpm

6.安装php7以及相关的扩展

apt-get install php7.0-cli php7.0-common libapache2-mod-php7.0 php7.0 php7.0-mysql php7.0-fpm php7.0-curl php7.0-gd php7.0-bz2

7.通过 service --status-all 指令,查看service支持的服务列表,这时候,应该已经有php7.0-fpm了
通过 php -v指令,可以看到php已经更新到7.0了。

8.配置nginx

 location ~ \.php$ {
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
                # With php5-cgi alone:
                #fastcgi_pass 127.0.0.1:9000;
                # With php5-fpm:
                #fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }

注意,php5-fpm跟php7.0-fpm的sock路径是不一样的。

然后重启nginx 既可。

PHP7 安装redis扩展

大体可以擦考前面的php5安装扩展。
最主要的区别是由于需要使用php-dev。而不同的php版本是不一样的。因此在安装之前先删除原来的php5-dev。

1.删除老的php5-dev

apt-get purge php5-dev

2.安装php7.0-dev

apt-get install php7.0-dev

3.下载php7-redi扩展

https://github.com/phpredis/phpredis/archive/php7.zip

4.解压然后定位到redis目录
5.执行 phpize指令。
6.配置

./configure --with-php-config=/usr/bin/php-config7.0

其中的php-config 的路径视实际的安装路径为准。
可以使用 whereis php-config查看路径

7.编译和安装

make 
make install

8.剩下的php7添加redis扩展配置可以参考前面的php5的过程。

发表评论

电子邮件地址不会被公开。 必填项已用*标注