首先我得说这是我第二次搭建LNMP了。第一次搭建的时候没出什么问题,很快就弄好了,遂以为其实也没什么坑。结果第二次弄了几乎整整一天,重置了两次系统才弄好(幸好阿里云重置系统比较方便)!现在把坑分享给大家,大家引以为鉴~~~
大坑1:LNMP一键安装包
第一次我是从头开始一个一个部件来安装的,也没出什么问题,只是略为繁琐,需要配置不少东西。于是第二次我想偷偷懒,看到有LNMP一键安装包,可以无人值守安装,方便快捷,内心狂喜。方便倒是挺方便的,只需要指明要安装的PHP,MySQL版本,然后就可以帮你自动安装了。不过,这整个过程耗费了整整三个小时——全程都是下载源代码然后编译,不慢才怪呢。速度慢嘛也没什么大问题,装好后发现软件安装的位置都不是默认的位置(汗),然后root目录也不是正常的/var/www/html(大汗),这~~~以后出了问题要改配置文件什么的也麻烦呀!没办法,重置系统!
应对策略:自己动手,丰衣足食!
大坑2:安装顺序
重置完系统,我开始乖乖的一个个装。先装PHP,MySQL,Nginx…打开浏览器,输入ip——
呀嘿,怎么显示的是Apache2!我明明装的是Nginx呀!(汗汗汗)仔细回忆,好像在装PHP的时候屏幕上闪过Apache2,莫非是Apache2作为依赖给安装上了……第一次装的时候可没这么多问题的呀!难道第一次运气好,顺序给蒙对了(⊙﹏⊙)。
应对策略:先装Nginx,然后装MySQL,最后装PHP!
正确操作
安装Nginx
sudo apt install nginx
安装MySQL
sudo apt install mysql
安装PHP7.2
sudo add-apt-repository ppa:ondrej/php -y
sudo apt install php7.2-mysql php7.2-fpm php7.2-gd php7.2-mbstring php7.2-xmlrpc php7.2-curl
sudo apt install php7.2
在安装的时候要注意一下会不会顺便把Apache2作为依赖项给装上了。
当然装PHP其他版本都是可以的,把版本号替换掉就行(例如php7.3)。
配置php-fpm
sudo nano /etc/php/7.2/fpm/php.ini
//;cgi.fix_pathinfo=1 改为
cgi.fix_pathinfo=0
这个是为了安全考虑,原因可以看这里。
创建数据库
sudo mysql
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'username' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON wordpress.* TO 'username';
quit
要把username和password替换成自己的。
配置Nginx
sudo nano /etc/nginx/sites-available/default
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.php;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
#try_files $uri $uri/ =404;
try_files $uri $uri/ /index.php?$args;
}
# pass PHP scripts to FastCGI server
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
# With php-cgi (or other tcp sockets):
#fastcgi_pass 127.0.0.1:9000;
}
}
在第8行加入index.php, 两个location 里面的内容也有改变(高亮部分)。
注意:第16行的内容是用于解决固定链接404错误的。
保存后记得重启一下服务方可生效:
sudo service nginx restart
sudo service php7.2-fpm restart
好了,如果重启服务没有错误提示,理论上LNMP应该搭建好了,我们可以简单验证一下:
cd /var/www/html
sudo nano info.php
写入以下内容:
<?php
phpinfo();
?>
保存后,在浏览器输入http://yourIp/info.php,如果出现了PHP信息页,恭喜你成功了!