Ubuntu LEMP( 也叫LNMP) 安装

一、 先来Nginx

一种方法:

Ubuntu16.04编译安装nginx

另一种方法: 官方Nginx存储库安装Nginx最新版本 nano等文本编辑器打开sources.list文件

sudo nano /etc/apt/sources.list

在nano文本编辑器中,按CTRL+W然后CTRL+V跳转到文件的末尾。接下来,在文件末尾附加以下两行。

    主线版本
    deb http://nginx.org/packages/mainline/ubuntu/ xenial nginx
    deb-src http://nginx.org/packages/mainline/ubuntu/ xenial nginx
    稳定版本
    deb http://nginx.org/packages/ubuntu/ codename nginx
    deb-src http://nginx.org/packages/ubuntu/ codename nginx
    
    CTRL+O保存文件  
    CTRL+X退出。

为了验证从这个repo下载的软件包的完整性,我们需要使用以下命令导入Nginx公钥

wget http://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key

将存储库添加到Ubuntu 16.04系统后,运行以下命令更新存储库信息并安装Nginx。

sudo apt-get update && sudo apt-get upgrade --show-upgrade
sudo apt install nginx

如果您从Ubuntu软件仓库安装了Nginx,则需要在执行上述两个命令之前将其删除,删除命令如下,再运行安装

sudo apt remove nginx nginx-common nginx-full nginx-core 此外,您可能需要备份主Nginx配置文件,/etc/nginx/nginx.conf因为它将被替换为新nginx.conf文件。

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

您现有的服务器块文件将保持不变。

在安装Nginx之后,我们需要nginx.service使用下面的命令允许运行文件。

sudo systemctl unmask nginx

然后启动Nginx。

sudo systemctl start nginx

如果nginx.service没有被屏蔽,并尝试启动Nginx,您将看到以下错误。 failed to start nginx.service: unit nginx.service is masked.

Nginx自动启动,请运行

sudo systemctl enable nginx

检查Nginx的状态,运行

systemctl status nginx

系统状态显示:

● nginx.service - LSB: Stop/start nginx
Loaded: loaded (/etc/init.d/nginx; generated; vendor preset: enabled)
Active: active (running) since Sat 2017-07-15 12:55:24 UTC; 11min ago
 Docs: man:systemd-sysv-generator(8)
Main PID: 3118 (code=exited, status=0/SUCCESS)
Tasks: 2 (limit: 4915)
Memory: 1.8M
  CPU: 20ms
CGroup: /system.slice/nginx.service
       ├─4250 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
       └─4251 nginx: worker process

要检查Nginx版本,请使用以下命令: nginx -v 会显示: nginx version: nginx/1.13.3

设置Nginx进程用户 /etc/nginx/nginx.conf文件 默认的用户和组的nginx user = nginx ; 可以设置www为Nginx进程用户的/etc/nginx/nginx.conf文件。 sudo nano /etc/nginx/nginx.conf 更改 user www www; 保存并关闭文件。然后重新加载Nginx。 sudo systemctl reload nginx

包括服务器块文件 默认情况下,只/etc/nginx/conf.d/包含目录下的文件。如果您还想在sites-enabled目录中使用服务器块文件,请确保在文件http部分添加以下行nginx.conf。 include /etc/nginx/conf.d/.conf; include /etc/nginx/sites-enabled/;

希望本教程帮助您在Ubuntu 16.04和Ubuntu 16.10上安装Nginx最新版本。一如以往,如果您发现这篇文章有用,那么请 订阅或加入我们。

二、安装MariaDB

  • sudo apt install mariadb-server mariadb-client
    安装完毕后,MariaDB服务器应该自动启动。使用systemctl检查其状态
  • systemctl status mysql
    如果没有运行,用此命令启动它
  • sudo systemctl start mysql
    MariaDB自动启动
  • sudo systemctl enable mysql
  • MariaDB设置
    sudo mysql_secure_installation
    要求您输入MariaDB root密码时,请按enter键,因为您尚未设置root密码。然后输入y设置MariaDB服务器的根密码

三、安装PHP7和PHP7扩展

sudo apt install php7.0-fpm php7.0-mbstring php7.0-xml php7.0-mysql php7.0-common php7.0-gd php7.0-json php7.0-cli php7.0-curl

  • PHP扩展通常内容管理系统(CMS)所需要的,像WordPress。例如,如果您安装缺少php7.0的XML,然后一些你的WordPress网站页面可能为空,你可以找到在Nginx的错误日志中这样的错误:
    PHP message: PHP Fatal error: Uncaught Error: Call to undefined function xml_parser_create()

  • 启动php7.0-FPM
    sudo systemctl start php7.0-fpm

  • 检查状态
    systemctl status php7.0-fpm
    sudo systemctl restart php7.0-fpm 重启

  • 查看php 运行用户及组
    ps -aux | grep php-fpm

  • 配置phpfpm
    /etc/php/7.0/fpm pool.d中的www.conf unix: /run/php/php7.0-fpm.sock listen = 127.0.0.1:9000监听9000端口为socket (默认就是socket,也可不配置)

  • session 目录权限
    存储 session 文件的地方,是 session.save_path 配置的,现在它的值是:
    /var/lib/php/sessions
    这个目录一般是在安装 PHP 的时候创建的,目录的拥有者会是 php-fpm,上面我们把运行 PHP-FPM 的用户修改成了 www,所以你需要把这个 session 目录的拥有者也修改成www,这样 PHP-FPM 才能写入 session 文件到这个目录的下面。
    执行:
    chown -R www:www /var/lib/php/sessions
    PHP php.ini中配置文件中session.save_path负责session文件的存放位置。

  • nginx配置文件加入

  location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }  

LEMP

重启 php
sudo systemctl restart php7.0-fpm
重启 apache
service apache2 restart
重启nginx
/usr/local/nginx/sbin/nginx -s reload