在 Ubuntu 系统中,可以使用 apt-get 命令来搭建 LNMP环境。这种方式较编译方式安装更加简便,因此选择使用该方式来搭建环境以供学习。
在安装个软件之前,为了确保获得的软件是最新的,可以先使用 sudo apt-get update 命令更新源列表。
安装 Nginx
执行命令
sudo apt-get install nginx
就能自动安装 Nginx
安装好之后,使用 dpkg -S nginx 命令来搜索 nginx相关文件,可以从命令显示结果看出 Nginx默认的安装位置是/etc/nginx目录,其配置文件nginx.conf也是在该目录下,并且在 etc/init.d 下有 nginx的启动程序,该目录下的程序都会在系统开启时启动。
此外,
Nginx的默认网站目录是 /usr/share/nginx/html/,
默认Nginx网站配置文件为 /etc/nginx/sites-available/default 。
启动 Nginx 服务,使用下面两个命令任意一个即可:
sudo /etc/init.d/nginx start sudo service nginx start
关闭 Nginx 服务
sudo /etc/init.d/nginx stop
重启 Nginx 服务
sudo /etc/init.d/nginx restart
使用 netstat -anp 则可以看到80端口已经处于 LISTEN 状态了。
直接查看80端口可以使用命令:sudo lsof -i :80
在浏览器输入 127.0.0.1后,就可以看见 Nginx的欢迎页面了。
安装 PHP 7.1 与 PHP7.1-FPM
执行命令
sudo apt-get install php7.1 php7.1-fpm php7.0-dev
此过程中如果报如下错误:
E: Unable to locate package php7.1
E: Couldn't find any package by regex 'php7.1'
则原因是 PHP7 等并不在 Ubuntu的软件库中,因此要使用 PPA ppa:ondrej/php 库
可使用下列命令将 php7 添加到 ubuntu 软件库中:
sudo apt-add-repository ppa:ondrej/php sudo apt-get update
安装完毕可以执行 php -v 命令来查看 PHP 版本信息。
Nginx 与 PHP-FPM集成
PHP-FPM 与 Nginx 通信方式有两种,一种是基于TCP的 Internet domain socket 方式,一种是 UNIX domain socket 方式。
UNIX domain socket 可以使同一台操作系统上的两个或多个进程进行数据通信。UNIX domain socket 的接口和 Internet domain socket 很像,但它不使用网络底层协议来通信。
服务器压力不大的情况下,这两种方式性能差别不大,但在压力比较满的时候,用UNIX domain socket方式,效果确实比较好。
UNIX domain socket 方式:
在 /etc/nginx/sites-available/default 配置文件中(网站根目录也在是这里更改), Nginx已经为与 PHP-FPM的整合准备好了,主要是通过配置 fastcgi_pass 参数来完成。如下:
location ~ \.php$ { ...... # fastcgi_pass 127.0.0.1:9000; fastcgi_pass unix:/run/php/php7.1-fpm.sock; #基于UNIX domain socket的方式 }
然后再修改 PHP-FPM的配置文件 /etc/php/7.1/fpm/pool.d,与 Nginx监听同一个 sock
listen = /run/php/php7.1-fpm.sock
配置好后重启服务:
sudo /etc/init.d/nginx restart sudo /etc/init.d/php7.1-fpm restart
安装 MySQL
执行命令
sudo apt-get install mysql-server mysql-client php7.0-mysql
第三个是 PHP的 MySQL扩展。
安装过程中会让你为 MySQL root用户设置密码。
同样,使用命令 netstat -anp ,会发现 3306端口正在被监听了。
现在可以编写 PHP脚本来连接数据库了。
下面附一个 nginx 的简要站点配置信息:
server { listen 90; # 监听端口 server_name local.yaf.com; # 站点域名 root /home/yhm/yhmyaf; # 站点根目录 index index.html index.html index.php; # 默认导航页 location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; } }