LEMP配置
第1步 - 安装Nginx Web服务器
第2步 - 安装MySQL以管理站点数据
第3步 - 安装PHP并配置Nginx以使用PHP处理器
第4步 - 创建PHP文件以测试配置
由于这是我们第一次使用apt
此会话,因此请先更新服务器的软件包索引。然后,安装服务器:
sudo apt update
sudo apt install nginx
在浏览器中访问服务器的域名或公共IP地址来测试服务器是否已启动并运行:
sudo apt install mysql-server-5.7 //安装MySQL
sudo mysql_secure_installation //修改一些MySQL不安全的默认值
然后进入修改界面,它将询问
配置MySQL系统中使用的密码 输入密码
配置VALIDATE PASSWORD PLUGIN 不配置
删除一些匿名用户和测试数据库 按下Y并ENTER键
禁用远程root登录 按下Y并ENTER键
加载这些新规则 按下Y并ENTER键
注意:
VALIDATE PASSWORD PLUGIN
是一种判断调用。如果启用,MySQL将拒绝与指定条件不符的密码并显示错误。如果你将弱密码与自动配置MySQL用户凭据的软件结合使用,例如phpMyAdmin的Ubuntu软件包,则会导致问题。保持禁用验证是安全的,但是你应该始终为数据库凭据使用强大的唯一密码。
注意:在运行MySQL 5.7(及更高版本)的Ubuntu系统中,MySQL的root用户设置为
auth_socket,
默认使用插件进行身份验证,而不是使用密码。这在许多情况提供了更高的安全性和可用性,但是当我们想要使用外部程序(如phpMyAdmin)访问用户时,就有麻烦了。
将身份验证方法从auth_socket切换为
mysql_native_password:
1.从终端打开Mysql提示符:
mysql -u root -p
2.查看所有MYSQL用户使用的身份验证方法:
SELECT user,authentication_string,plugin,host FROM mysql.user;
3.修改root用户使用密码进行身份验证:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '
password
';
4.重新加载授权表并使新更改生效:
FLUSH PRIVILEGES;
5.再次检查,确保root用户不再使用auth-socket插件进行身份验证:
SELECT user,authentication_string,plugin,host FROM mysql.user;
6.退出Mysql提示符:exit
1 sudo apt install php-fpm php-mysql
若报错(E:Unable to locate package php-fpm),universe在服务器版本上没有默认启用,可以尝试先:
sudo add-apt-repository universe
PHP用来生成动态内容,Nginx不像其他一些Web服务器那样包含本机PHP处理,需要安装
php-fpm
,它代表“fastCGI进程管理器”,将告诉Nginx将PHP请求传递给该软件进行处理。php-mysql是一个允许PHP与mysql数据库后端通信的附加帮助程序包,安装将引入必要的PHP核心文件。
2 sudo nano /etc/nginx/sites-available/example.com
现在已经安装了所有必需的LEMP堆栈组件,但仍需要进行一些配置更改,告诉Nginx将PHP处理器用于动态内容。新建一个服务器块配置文件并将其命名为
example.com
,将以下内容(从默认服务器块配置文件中获取并略微修改)添加到新配置文件example.com中。
server {
listen 80;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name example.com;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
以下是每个指令和位置块的作用:
listen
- 定义Nginx将侦听的端口。root
- 定义存储网站服务的文档根目录。index
- 配置Nginx请求索引文件时优先处理index.ph
p
命名的文件。server_name
- 将此指令指向服务器的域名或公共IP地址。location /
- 第一个位置块包括一个try_files
指令,该指令检查是否存在满足URI请求的文件。如果Nginx找不到合适的文件,则会返回404错误。location ~ \.php$
- 此位置块通过将Nginx指向fastcgi-php.conf
配置文件和php7.2-fpm.sock
文件来处理实际的PHP处理,该文件声明了与哪个套接字相关联php-fpm
。检查/etc/php/7.0/fpm/pool.d/www.conf文件并查找“listen”行。location ~ /\.ht
- 通过添加deny all
指令,如果任何.htaccess
文件碰巧进入文档根目录,它们将不会被提供给访问者。添加此内容后,保存并关闭该文件。
3
通过将新服务器块配置文件(在/etc/nginx/sites-available/
目录中)创建符号链接到/etc/nginx/sites-enabled/
目录来启用新服务器块:(注意/etc/nginx/sites-enabled这个文件夹只会有一个配置文件生效)
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled
4 键入以下命令测试新配置文件的语法错误:
sudo nginx -t
如果报告了任何错误,请返回并重新检查您的文件,然后再继续。
5 准备好后,重新加载Nginx以进行必要的更改:
sudo systemctl reload nginx
验证Nginx是否可以正确地将.php
文件传送到PHP处理器。
使用文本编辑器在文档根目录中创建info.php
测试PHP文件是否能够被处理:sudo nano /var/www/html/info.php
在新文件中输入以下PHP代码,将返回有关服务器的信息:
完成后,保存并关闭文件。
现在,可以通过访问服务器的域名或公共IP地址在Web浏览器中访问info.php页面
:
http://your_server_domain_or_IP/info.php
配置完成页面: