LNMP手动搭建的方法
本教程适用于Debian系(例如Debian、Ubuntu等),本文分四部分:
MariaDB是MySQL的一个分支,兼容MySQL,通常可以直接替代MySQL
请提前开放80和443端口再进行操作。
第一部分:LNMP手动搭建
1. 更新系统
首先,确保你的系统是最新的:
sudo apt update
sudo apt upgrade
2. 安装Nginx
接下来,安装Nginx:
sudo apt install nginx
你可以通过访问你的服务器IP地址来检查Nginx是否安装成功。如果看到默认的Nginx欢迎页面,说明安装成功。这一步需要服务器开放了80端口。
3. 安装MariaDB
安装MariaDB数据库服务器:
sudo apt install mariadb-server
安装完成后,运行安全脚本来增强安全性。
sudo mysql_secure_installation
根据提示,设置MySQL的root密码,并配置其他安全选项。
4. 安装PHP
sudo apt install php-fpm php-mysql
安装完成后看下php-fpm的版本号,下面一步有用
5. 配置Nginx使用PHP
编辑Nginx的默认服务器块配置文件,配置Nginx来处理PHP文件:
sudo vi /etc/nginx/sites-available/default
找到’server’块,并进行以下修改(或者直接删掉里面所有内容,添加下面内容):
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; # 注意这里要对应实际php-fpm版本
}
location ~ /\.ht {
deny all;
}
}
保存并退出编辑器。
6. 测试PHP
创建一个PHP测试文件以确认PHP是否工作正常:
sudo vi /var/www/html/info.php
在文件中添加以下内容:
<?php
phpinfo();
?>
保存并退出编辑器。然后,重启Nginx:
sudo systemctl restart nginx
在浏览器中访问http://your_server_ip/info.php,如果看到PHP信息页面,说明PHP配置成功。
7. 安装phpMyAdmin(可选)
如果你需要一个基于Web的MySQL管理工具,可以安装phpMyAdmin:
sudo apt install phpmyadmin
在安装过程中选择Nginx并配置相关设置。完成后,你需要在Nginx中为phpMyAdmin创建一个符号链接:
sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
现在,你可以通过http://your_server_ip/phpmyadmin访问phpMyAdmin。
8. 完成
现在,你的服务器已经配置好了LNMP环境,可以开始搭建和部署你的Web应用了。
第二部分:nginx如何绑定域名
在第一部分第5步的设置中,将server_name _;改成server_name yourdomain.com;然后重启nginx即可。
如果还想新增绑定别的域名,操作步骤如下。
1. 配置DNS
首先,确保你的域名DNS设置正确,指向你的服务器IP地址。你可以在域名注册商的控制面板中进行配置,通常是添加一个A记录,指向你的服务器IP。
2. 配置Nginx服务器块
编辑Nginx的默认配置文件或创建一个新的服务器块配置文件:
sudo vi /etc/nginx/sites-available/your_domain
在文件中添加以下内容:
server {
listen 80;
listen [::]:80;
server_name your_domain www.your_domain;
root /var/www/your_domain;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; # 确保此路径与实际PHP-FPM版本一致
}
location ~ /\.ht {
deny all;
}
}
将 ‘your_domain’ 替换为你的实际域名。
3. 创建网站根目录
确保网站根目录存在,并且有适当的权限设置:
sudo mkdir -p /var/www/your_domain
sudo chown -R www-data:www-data /var/www/your_domain
4. 创建测试文件
在网站根目录中创建一个测试文件来验证配置:
sudo vi /var/www/your_domain/index.html
添加以下内容:
<!DOCTYPE html>
<html>
<head>
<title>Welcome to Your Domain</title>
</head>
<body>
<h1>Success! Your Nginx server block is working!</h1>
</body>
</html>
保存并退出编辑器。
5. 启用配置
在‘sites-enabled ’目录中创建一个指向 ‘sites-available’ 目录中新配置文件的符号链接:
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
6. 测试Nginx配置
在重新加载Nginx之前,测试配置文件是否有语法错误:
sudo nginx -t
如果没有错误,重新加载Nginx以应用新配置:
sudo systemctl reload nginx
7. 访问域名
现在,你可以在浏览器中访问你的域名 ‘http://your_domain’,应会看到你创建的测试页面
第三部分:nginx如何配置https(可选,但推荐)
为了确保安全性,建议为你的域名配置HTTPS。你可以使用Let’s Encrypt免费SSL证书,Let’s Encrypt是一个知名的免费证书颁发机构,以下是步骤:
1. 安装 Certbot 和 Nginx 插件
Certbot 是 Let’s Encrypt 官方建议的帮助自动获取和安装 Let’s Encrypt 证书的工具:
sudo apt install certbot python3-certbot-nginx
2. 获取 SSL 证书
sudo certbot --nginx -d your_domain -d www.your_domain
按照提示完成证书安装过程,你需要提供你的电子邮件地址,并同意服务条款,共享电子邮件地址可选N(如果你愿意接收来自 EFF 的邮件,可以输入 Y
并按回车;否则,输入 N
并按回车。这不会影响证书的获取和安装)。完成后,Certbot会自动更新Nginx配置以使用HTTPS。你可以通过访问 https://your_domain 来验证 SSL 证书是否正确安装。
3. Certbot 的自动续签功能
Certbot 默认安装一个 cron job
或 systemd timer
来自动检查并续签即将到期的证书。这个自动续签功能会每天运行两次,并在证书有效期少于30天时自动续签证书。
检查自动续签定时任务
如果你的系统使用 systemd
,你可以检查 certbot
的定时任务状态:
sudo systemctl list-timers | grep certbot
你应该会看到类似于以下内容的输出,显示 certbot
定时任务的状态:
Fri 2024-07-23 12:00:00 CET 7h left n/a n/a certbot.timer certbot.service
这表明 certbot
定时任务已正确配置。
手动测试自动续签
为了确保自动续签功能正常工作,可以手动运行以下命令来模拟续签过程:
sudo certbot renew --dry-run
如果 --dry-run
测试成功,说明自动续签功能正常。
手动续签证书(如果需要)
如果你需要手动续签证书,可以使用以下命令:
sudo certbot renew
确保Nginx在证书续签后自动重新加载
sudo systemctl reload nginx
4. Cerbot获取证书时提供的电子邮件后期需要修改的方法
Certbot 提供了一个命令,可以更新与账户关联的电子邮件地址:
sudo certbot update_account --email new-email@example.com
Certbot 会确认电子邮件地址的更改,你可能会收到确认邮件。
第四部分:MariaDB如何新增数据库
1. 登录到MariaDB
首先,使用以下命令登录到MariaDB:
sudo mysql -u root -p
输入你在安装MariaDB时设置的root密码。
2. 创建新数据库
登录到MariaDB后,可以使用以下命令创建一个新数据库:
CREATE DATABASE your_database_name;
将 ‘your_database_name’ 替换为你希望创建的数据库名称。
3. 创建新用户并授予权限
为了安全性,建议为每个数据库创建一个单独的用户,并为该用户授予相应的权限。使用以下命令创建新用户并设置密码:
CREATE USER 'your_username'@'localhost' IDENTIFIED BY 'your_password';
将 ‘your_username’ 替换为你希望创建的用户名,将 ‘your_password’ 替换为你希望设置的密码。
然后,使用以下命令将新用户的权限授予到新创建的数据库:
GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_username'@'localhost';
最后,刷新权限使更改生效:
FLUSH PRIVILEGES;
4. 退出MariaDB
完成后,可以使用以下命令退出MariaDB:
EXIT;
通过这些步骤,你就可以成功创建一个新数据库,并为新用户授予访问和管理该数据库的权限。
附加1:其他数据库常用命令
- 查看数据库列表,登录到MariaDB输入:
SHOW DATABASES;
- 执行这条命令后,MariaDB 会列出所有可用的数据库。例如:
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| database_name |
+--------------------+
- 删除数据库:
DROP DATABASE database_name;
- 查看用户列表:
SELECT User, Host FROM mysql.user;
- 执行这条命令后,MariaDB 会显示所有用户及其关联的主机名。例如:
+------------------+-----------+
| User | Host |
+------------------+-----------+
| root | localhost |
| user1 | % |
| another_user | 127.0.0.1 |
+------------------+-----------+
- 更改已有用户密码,例如更改root用户的密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
- 删除已有用户,例如删除一个名为
user1
的用户,且该用户只能从localhost
访问:
DROP USER 'user1'@'localhost';
- 如果user1可以从任何主机访问,则使用
%
:
DROP USER 'user1'@'%';
- 数据库目录:默认在
/var/lib/mysql
,但实际位置可能会有所不同,查看数据目录位置:
SHOW VARIABLES LIKE 'datadir';
- 执行后,你将看到类似以下的输出:
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| datadir | /var/lib/mysql/ |
+---------------+-----------------+
这里的 Value
列显示的路径即为 MariaDB 存储数据库文件的目录。
附加2:如果没有安装phpmyadmin,如何导入和导出数据库
1.导入数据库(将之前备份的sql导入数据库):
连接数据库:
mysql -u 用户名 -p 数据库名
系统会提示您输入密码。
source /路径/你的sql文件.sql
导入后退出即可。
2.导出数据库(将数据库导出为.sql):
mysqldump -u your_username -p your_database_name > your_database_nameout.sql