安装及配置php环境 centos+nginx+mysql+php

简单记录一下lnmp环境安装、配置,以及常遇到的问题。
使用的是阿里云的ESC,centOS 7

一、Nginx

1.安装Nginx

centos一般自带nginx,我们可以使用如下命令,
yum list nginx
查看是否已经有nginx包了,然后使用
yum install nginx -y,
其中 -y 是指,默认全部选择yes.
如果显示没有nginx包的话,我们可以添加相应的repo文件;

cd /etc/yum.repos.d/

然后创建一个文件

vim nginx.repo

添加一下内容

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

然后保存,执行

yum makecache 

再 执行安装命令 yum install nginx -y 即可

2.关于多站点

我们可以使用nginx反向代理来达到一个服务器多个站点。
原理,就是根据请求的地址来区分不同的站点,同时把请求转发到指定的路径中。
先把/etc/nginx/nginx.conf里面的server默认配置注释掉,然后在/etc/nginx/conf.d/下,建立newsite.conf,在这个里面配置单个站点的server。

server {
    listen       80;
    server_name   yoursite.com www.xxx.com;
    set $basefilepath  /html/app;
    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;

    location / {
        root   $basefilepath;
        index  index.php index.html index.htm;
    }
    error_page  404              /404.html;
    location = /404.html {
        root   $basefilepath;
    }

location ~ .php$ {

    root           $basefilepath;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}
}

上面是一个简单的例子:
其中,server_name 为访问的地址,可以多个(空格分隔),也可以为ip地址。

3.常用到的命令

  • 启动nginx
    systemctl start nginx
  • 重启nginx
    systemctl restart nginx
  • 查看nginx的状态
    systemctl status nginx
  • 设置nginx开机自启动
    systemctl enable nginx

4.常见的问题

有时候,修改配置后,重启nginx,通过命令systemctl status nginx,查看到下面的提示

Failed to read PID from file /run/nginx.pid: Invalid argument

如果在反复检查配置无误后,可能会是如下原因:

因为 nginx 启动需要一点点时间,而 systemd 在 nginx 完成启动前就去读取 pid file

造成读取 pid 失败

决方法很简单,让 systemd 在执行 ExecStart 的指令后等待一点点时间即可

如果你的 nginx 启动需要时间更长,可以把 sleep 时间改长一点

mkdir -p /etc/systemd/system/nginx.service.d
printf "[Service]\nExecStartPost=/bin/sleep 0.1\n" > /etc/systemd/system/nginx.service.d/override.conf

然后

systemctl daemon-reload
systemctl restart nginx

二、MySQL

1.安装MySQL

貌似从centos7以后,yum默认的已经改为MariaDB版本的,这样的话,如果想要安装社区版,只能先下载源

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
然后,再安装
rpm -ivh mysql-community-release-el7-5.noarch.rpm
之后,就可以安装mysql
yum install mysql-server

2.配置

  • 先登录mysql
    mysql -u root(回车)

登录的格式为 mysql -u 用户名 -h 主机名(缺省为本地localhost) -p (缺省为无密码)
因为尚未设置密码所以,-h 和 -p 均可省略

  • 设置密码
    use mysql; 先选择服务器

update user set password=PASSWORD('yourpassword') where User='root'; 更新密码
flush privileges; 刷新权限表

  • 设置权限
    由于mysql的root用户,默认是不允许远程访问的,我们这里添加一个可以新的root用户。

GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "yourpassword";
% 是指允许所有的ip登录mysql,也可以改为指定的ip,但是这样只能仅该ip访问登录mysql了。
flush privileges;
同样需要刷新权限表

三、PHP

1.安装

centos 已经自带了PHP5.4
我们可以使用yum list php,来查看默认自带的PHP版本。
还有,一般我们需要安装一些PHP的扩展,比如 图片处理用到GD、CURL、json、xml等等,因此
yum install php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-devel php-fpm
然后一路 yes,也可以直接在上述命令后面加上 -y

2.配置

一般常用到的,就是打开session、设置图片上传的限制大小...

  • 图片上传大小
    max_file_uplads = 2M 改为 max_file_uploads = 10 M
  • session
    session.auto_start =0 改为 session.auto_start = 1

如果在使用中,发现session无法保存数据,请到 phpinfo() 中查看 session.save_path 所指向的真实路径,检查该路径的读写权限。

更为详细的配置,可以百度 php.ini 和 php-fpm 配置
路径:
php.ini /etc/php.ini
php-fpm /etc/php-fpm.d/www.conf


最后

我想说的是,如果在你检查好所有的配置项后,依然出现 页面无法访问 以及mysql无法登录的问题,
一定要去阿里云的后台,控制台 > 云服务器ECS > 网络和安全 > 安全组 >编辑规则
看一下,入方向的对应的端口号有没有开启。
表示第一次配置的时候,默认只开启了 3389 443 22 和80 这四个端口,反复确认都没问题,但是mysql就是无法链接,最后才发现是阿里云后台的设置的问题。
第二次,在配置nginx的时候,出现了页面无法访问,最后也发现,80端口没有开放。心酸 0.0!
微信图片_20171024004018.png
ps: 一般情况下,阿里云默认只开放了图中红框里面的几个端口

lnmpcentos

我来吐槽

*

*