我们的开发环境一般现在时用Linux + Nginx + MySQL(mariaDB) + PHP的组合进行项目的搭建与开发,工欲善其事必先利其器。
搭建环境:
Centos7 + mysql5.6 + php7
废话少说,直接上干货
1. 安装mysql5.*
与centos6不同,centos7必须使用社区仓库来按章mysql
如果使用
yum install mysql
默认会安装MariaDB数据库
所以,安装:
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum update
yum install mysql-server
安装过程中。使用y确定安装
完成之后,mysql会默认安装在/var/lib/mysql目录下
启动mysql并设置开机启动
systemctl start mysqld #启动 mysql
systemctl enable mysqld #开机启动mysql
mysql安装后会绑定到地址localhost(127.0.0.1),默认用户名:root。密码为空
使用下面的mysql_secure_installation进行密码修改
注意: mysql5.7.6+版本修改方式会不同
2. 安装nginx
如果系统中存在apache,可以先进行卸载
service httpd stop
systemctl disable httpd
yum remove httpd
nginx安装
yum install peel-release
yum -y install nginx
启动nginx服务并设置为开机启动
systemctl start nginx
systemctl enable nginx
好了,现在我们可以打开浏览器输入服务器的域名或IP地址:
nginx默认的html根目录是: /usr/share/nginx/html
为了让web应用能读写,设置拥有者为nginx用户:
chown -R nginx:nginx html/
注意点:
有时候会出现nginx正常启动,但是页面无法正常访问的问题,这个有可能是防火墙的问题
使用telnet测试端口
telnet 192.168.11.119 80
正常连接
查看端口是否开启
firewall-cmd --zone=public --query-port=80/tcp
如果没有开启,将其开启
firewall-cmd --zone=public --add-port=80/tcp --permanent
//设置完成之后,一定要记得重启防火墙
systemctl-cmd --reload
3. php-fpm 安装
PHP通过 php-fpm(FastCGI进程管理器)可以很好的与nginx协同工作
PHP5的安装:
yum install php php-mysql php-fpm
PHP7的安装:
rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm. # 安装epel源
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm #安装Webstatic源
yum install php72w php72w-common php72w-fpm php72w-opcache php72w-mysqlnd php72w-gd php72w-mbstring # PHP 5.3.0以上推荐使用mysqlnd驱动,而不是msyql
这里使用webstatic源来安装PHP7.2
进行配置:
1)打开配置文件 /etc/php.ini 删除cgi.fix_pathinfo前面注释符并赋值为0
[...]
cgi.fix_pathinfo=0
[...]
再配置PHP-FPM.打开文件/etc/php-fpm.d/www.conf
将127.0.0.1:9000 改为php-fpm.sock
取消listen.owner 和 listen.group 前面的注释
将user和group值都由apache改成nginx
如下:
[...]
listen = /var/run/php-fpm/php-fpm.sock
[...]
listen.owner = nobody
listen.group = nobody
[...]
user = nginx
group = nginx
[...]
启动php-fpm并设置开机启动
systemctl start php-fpm
systemctl enable php-fpm
php-fpm启动之后,会生成socket文件 /var/run/php-fpm/php-fpm.sock 作为守护进程运行FastCGI服务
nginx配置:
Nginx 的配置文件是:/etc/nginx/nginx.conf 进行配置
首先,根据情况调整worker_processes
和keepalive_timeout
(可选)
[...]
worker_processes 4;
[...]
keepalive_timeout 2;
[...]
虚拟主机定义在 server{}
容器中,修改为如下内容:
[...]
server {
listen 80;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
# 设置默认主页
index index.php index.html index.htm;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
# PHP脚本转发至PHP-FPM解析
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
include fastcgi_params;
}
}
[...]
关于配置的一些说明:
- 首先,我们打开两个
listen
,让 Nginx 同时侦听 IPv4 和 IPv6 的80
端口。 server_name _;
绑定所有的域名(可以指定主机名,如www.example.com
)。- 脚本根目录 root 不变,依然是
/usr/share/nginx/html
。 - 索引首页文件 index 添加上
index.php
。 - 其中针对 PHP 很重要的部分在
location ~\.php$ {}
中。为防止零日攻击(详见:http://wiki.nginx.org/Pitfalls#Passing_Uncontrolled_Requests_to_PHP andhttp://forum.nginx.org/read.php?2,88845,page=3),该部分开头设置了try_files $uri =404;
。
保存配置文件后,检查配置文件的语法,再重新加载 Nginx:
nginx -t # 检查配置文件语法
systemctl reload nginx # 重新加载nginx
使用tcp进行连接:
默认情况下,PHP-FPM 通过 /var/run/php-fpm/php-fpm.sock 文件侦听 socket。
当然,也可以设置 PHP-FPM 使用 TCP 连接。
打开文件 /etc/php-fpm.d/www.conf,设置 listen
值如下:
[...]
;listen = /var/run/php-fpm/php-fpm.sock
listen = 127.0.0.1:9000
[...]
这样 PHP-FPM 会侦听地址 127.0.0.1
(localhost)和端口9000
,确保这个端口没有被其他程序占用。
然后重新加载 PHP-FPM:
systemctl reload php-fpm
接下来,编辑 /etc/nginx/nginx.conf 文件,修改如下一行:
[...]
#fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_pass 127.0.0.1:9000;
[...]
然后,重载 nginx 就可以了:
systemctl reload nginx
参考文件:
1.http://dl.fedoraproject.org
2.https://webtatic.com/packages/php72/
3.http://php.net/manual/zh/install.unix.nginx.php
4.Centos7 安装 PHP7最新版
5.CentOS 7 安裝 Nginx、PHP7、PHP-FPM
6.How To Install Linux, Nginx, MySQL, PHP (LEMP) stack On CentOS 7
7.Installing Nginx With PHP5 (And PHP-FPM) And MySQL Support (LEMP) On Ubuntu 14.04 LTS
8.How to Install MySQL on CentOS 7
9.HOW TO INSTALL AND CONFIGURE NGINX ON CENTOS 7