如何部署LNMP环境(Linux+Nginx+MySQL+PHP)?

PHP

1 安装nginx

1.1 安装nginx相关包

yum install -y http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install -y nginx

1.2 创建项目目录

mkdir -p /var/www/www.cmdschool.org

1.3 配置http和https服务

http config:

cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/www.cmdschool.org_80.conf
vim /etc/nginx/conf.d/www.cmdschool.org_80.conf

保留以下内容:

server {
    listen       80;
    server_name  www.cmdschool.org;

    location / {
        root   /var/www/www.cmdschool.org;
        index  index.html index.htm  index.php;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

https config:

cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/www.cmdschool.org_443.conf
vim /etc/nginx/conf.d/www.cmdschool.org_443.conf

确认存在如下内容:

server {
    listen       443;
    server_name  www.cmdschool.org;
    ssl on;
    ssl_certificate 1_www.cmdschool.org_bundle.crt;
    ssl_certificate_key 2_www.cmdschool.org.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;

    location / {
        root   /var/www/www.cmdschool.org;
        index  index.html index.htm  index.php;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

添加静态测试页面:

mkdir -p /var/www/www.cmdschool.org
echo www.cmdschool.org > /var/www/www.cmdschool.org/index.html

1.4 配置nginx服务

systemctl enable nginx
systemctl restart nginx

1.5 配置防火墙

firewall-cmd --permanent --add-service http
firewall-cmd --permanent --add-service https
firewall-cmd --reload
firewall-cmd --list-all

1.6 关闭selinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0

2 集成PHP fastCGI

2.1 安装基础软件包

yum install -y php-fpm php

注:如果需要编译方式安装,请按照如下教程,
https://www.cmdschool.org/archives/55

2.2 启动并配置服务自启动

systemctl enable php-fpm.service
systemctl start php-fpm.service

2.3 配置集成php fastCGI

vim /etc/nginx/conf.d/www.cmdschool.org_80.conf

vim /etc/nginx/conf.d/www.cmdschool.org_443.conf

增加如下代码

server {
    [...]
    location ~ \.php$ {
        root           /var/www/www.cmdschool.org;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        /etc/nginx/fastcgi_params;
    }
}

重启nginx服务

systemctl restart nginx

2.4 测试php fastCGI

添加调试代码

echo '<?php phpinfo(); ?>' > /var/www/www.cmdschool.org/index.php

访问以下链接测试fastCGI
http://www.cmdschool.org/index.php
https://www.cmdschool.org/index.php

2.5 如下日志可以协助你排错

tail -f /var/log/nginx/error.log
tail -f /var/log/php-fpm/error.log

2.6 安装辅助工具包

yum install -y unzip

3 配置MariaDB数据库

3.1 安装MariaDB相关包

yum install -y mariadb-server mariadb-devel mariadb

注:如果需要二进制包的安装方式,请按如下教程执行,
https://www.cmdschool.org/archives/2364

3.2 启动MariaDB服务并配置自启动

systemctl start mariadb.service
systemctl enable mariadb.service

3.3 初始化MariaDB

mysql_secure_installation

向导如下:

[...]
Set root password? [Y/n] y
New password:
Re-enter new password:
[...]
Remove anonymous users? [Y/n] y
[...]
Disallow root login remotely? [Y/n] y
[...]
Remove test database and access to it? [Y/n] y
[...]
Reload privilege tables now? [Y/n] y
[...]

====================
参阅文章
———
https://secure.php.net/manual/en/install.unix.nginx.php

没有评论

发表回复

PHP
如何隐藏PHP的版本号?

1 前言 一个问题,一篇文章,一出故事。 最近外部的安全扫描发现我们一个站点对外宣告PHP的版本号, …

PHP
如何编译安装php-fpm的模块?

1 前言 一个问题,一篇文章,一出故事。 笔者最新部署了一个PHP-FPM的环境,本章将整理如何部署 …

PHP
如何获取PHP编译的配置参数?

1 前言 一个问题,一篇文章,一出故事。 笔者有时候编译PHP需要参考其他组织的编译的配置参数,于是 …