LNMP环境搭建

2018-01-10 Vaniot 更多博文 » 博客 » GitHub »

nginx php mysql

原文链接 https://vaniot-s.github.io/2018/01/10/LNMP%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA/
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


一、安装nginx

首先来安装nginx,使用如下命令:

sudo apt-get -y install nginx

查看nginx安装的文件。使用如下命令进行查看,如下:

dpkg -S nginx

nginx默认的安装位置是/etc/nginx目录,而且nginx的配置文件nginx.conf也是在该目录下。 除此之外,nginx的默认网站目录在/usr/share/nginx/html下,默认nginx网站配置文件为/etc/nginx/sites-available/目录下的default文件。 启动nginx,可以使用如下命令:

sudo /etc/init.d/nginx start
sudo service nginx start

<!--more-->

二、安装php与php-fpm

nginx安装完毕后,安装php与php-fpm,使用如下命令,如下:

sudo apt-get -y install php7.1 php7.1-fpm php7.1-cli

安装较低版本的php

add-apt-repository ppa:ondrej/php
apt-get update
apt-get install php5.6

三、nginx与php-fpm集成

nginx与php安装完毕后,开始把nginx与php集成。其实nginx与php集成是通过fastcgi来实现,而fastcgi一般使用的是php-fpm。 php-fpm与nginx通信方式有两种,一种是TCP方式,一种是unix socket方式。

  • TCP方式就是使用TCP端口连接,一般是127.0.0.1:9000。
  • Socket是使用unix domain socket连接套接字/dev/shm/php-cgi.sock(很多教程使用路径/tmp,而路径/dev/shm是个tmpfs,速度比磁盘快得多),在服务器压力不大的情况下,tcp和socket差别不大,但是在压力比较满的时候,使用套接字方式,效果确实比较好。

3.1 TCP方式 先来修改nginx的默认网站文件default,如下:

sudo vi /etc/nginx/sites-available/default
location ~ \.php$ {
   fastcgi_split_path_info ^(.+\.php)(/.+)$;
   fastcgi_pass 127.0.0.1:9000;
   fastcgi_index index.php;
   include fastcgi_params;
}

检验nginx的配置:

sudo nginx -t

修改nginx的fastcgi_params文件,添加如下命令。 注意:这个命令一定要添加,否则nginx与php集成后,网页会显示空白。

sudo vi /etc/nginx/fastcgi_params
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

修改php的配置文件php.ini,如下:

sudo vi /etc/php/7.1/fpm/php.ini +758
将cgi.fix_pathinfo=1修改为 cgi.fix_pathinfo=0

修改php-fpm的配置文件www.conf,如下:

sudo vi /etc/php/7.1/fpm/pool.d/www.conf
修改liten为
listen = 127.0.0.1:9000

修改完毕后,我们现在来重启nginx与php-fpm,如下:

sudo /etc/init.d/nginx restart
sudo /etc/init.d/php7.1-fpm restart

3.2 socket方式 修改nginx的默认网站文件default,如下:

sudo vi /etc/nginx/sites-available/default
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
fastcgi_index index.php;
include fastcgi_params; 
}

修改nginx的fastcgi_params文件,添加如下命令。 注意:这个命令一定要添加,否则nginx与php集成后,网页会显示空白。

sudo vi /etc/nginx/fastcgi_params
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

修改php的配置文件php.ini,如下:

sudo vi /etc/php/7.1/fpm/php.ini +758
将cgi.fix_pathinfo=1修改为 cgi.fix_pathinfo=0

现在再来修改php-fpm的配置文件www.conf,如下:

sudo vi /etc/php/7.1/fpm/pool.d/www.conf
listen = /var/run/php/php7.1-fpm.sock

再来重启nginx与php-fpm。如下:

sudo /etc/init.d/nginx restart
sudo /etc/init.d/php7.1-fpm restart

四、安装mysql

现在来开始安装mysql,如下:

sudo apt-get –y install mysql-server mysql-client php7.1-mysql

五、搭建laravel环境

1.php拓展

    sudo apt-get –y install  php7.1-mcrypt //安装php7.1的加密拓展库

启用php的加密拓展库

    sudo phpenmod mcrypt

2.安装 Composer

在命令行执行:

    curl -ss https://getcomposer.org/installer | php

在当前目录会发现 composer.phar 这个文件,这个文件就是 Compoesr 的执行文件,我们需要移到 /usr/local/bin , 这样全局就能调用 Composer 。

    sudo mv composer.phar /usr/local/bin/composer

Composer 安装完成。

3.安装laravel

用composer来安装 Laravel

    composer create-project laravel/laravel --prefer-dist  //默认的国外镜像

使用国内镜像源:
①、修改 composer 的全局配置文件,打开命令行并执行如下命令:

    composer config -g repo.packagist composer https://packagist.phpcomposer.com  
   然后输入安装命令:

    composer create-project --prefer-dist laravel/laravel blog  
②、修改当前项目的 composer.json 配置文件,打开命令行窗口,进入你的项目的根目录( composer.json 文件所在目录),执行如下命令:

    composer config repo.packagist composer https://packagist.phpcomposer.com  

更改网站目录所属组:

    sudo chown -R :www-data /var/www/laravel
    sudo chown -R  777 storage

4.配置 Nginx

开 nginx 默认配置文件:

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

增加如下配置:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    # 设定网站根目录
    root /var/www/laravel/public;
    # 网站默认首页
    index index.php index.html index.htm;

    # 服务器名称,server_domain_or_IP 请替换为自己设置的名称或者 IP 地址
    server_name server_domain_or_IP;

    # 修改为 Laravel 转发规则,否则PHP无法获取$_GET信息,提示404错误
    location / {
        try_files $uri $uri/ /index.php?$query_string;        
        add_header 'Access-Control-Allow-Origin' 'http://localhost:8080/';# 前后段分离时允许跨域请求
    }

    # PHP 支持
    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }
}

修改完成,要重启下 nginx 服务:

    sudo nginx -t
    sudo service nginx restart

在浏览器中打开localhost: laravel