Ubuntu LNMPR环境搭建(Ubuntu 20.04 + Nginx1.8 + PHP 7.3 + Mysql8.0 + Redis5.0)

简介: Ubuntu LNMPR环境搭建(Ubuntu 20.04 + Nginx1.8 + PHP 7.3 + Mysql8.0 + Redis5.0)
本文环境 Windows10,Ubuntu 20.04,Nginx1.8,PHP 7.3,Mysql8.0,Redis5.0\
不懂的可以评论或联系我邮箱:owen@owenzhang.com\
著作权归OwenZhang所有。商业转载请联系OwenZhang获得授权,非商业转载请注明出处。

本文是Windows10下的Ubuntu下已实践,放心使用,不懂联系我

image.png

2022 年什么会火?Ubuntu LNMPR环境!

一、Ubuntu 20.04 SSH配置

先用命令查看ubuntu 是否安装ssh-server

ps -e|grep ssh

如果没有显示sshd,说明未安装ssh-server

安装ssh-server

sudo apt-get install openssh-server

启动ssh-server

/etc/init.d/ssh start

image.png

二、安装Nginx

先更新资源列表

sudo apt-get update

下面开始安装

sudo apt-get install nginx

查看nginx版本

nginx -v

输出:

nginx version: nginx/1.18.0 (Ubuntu)

补充说明:

Nginx 网站目录是 /var/www/html\
将项目代码放在这个文件夹下(类似apache/htdocs)\
Nginx 网站配置文件位置是 /etc/nginx/sites-available/default

启动Nginx服务

sudo service nginx start 启动
sudo service nginx status 启动状态
sudo service nginx enable 开机自动启动
sudo service nginx disable 禁止开机自动启动
sudo service nginx stop 停止
sudo service nginx restart 重启

用命令查看状态

sudo lsof -i:80

也可以在虚拟机上的浏览器输入127.0.0.1可以看见Nginx页面\
输入 ifconfig 查看ip 在虚拟机外访问也能看到

image.png

image.png

二、安装PHP7.3 和 PHP扩展

安装命令

sudo apt-add-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php7.3 php7.3-fpm

如果提示:

add-apt-repository: command not found

则运行下面命令即可:

sudo apt-get install software-properties-common python-software-properties

查看php版本

php -v

输出:

owenunix@DESKTOP-CC1MK5I:~$ php -v
PHP 7.3.33-1+ubuntu20.04.1+deb.sury.org+1 (cli) (built: Nov 19 2021 06:25:05) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.33, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.33-1+ubuntu20.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies

image.png

三、配置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方式,效果确实比较好。

先配置Nginx

cd /etc/nginx/sites-available
sudo cp default default.bak
sudo vim /etc/nginx/sites-available/default

修改文件中的注释和7.4改成7.3和路径,如下图所示

image.png

php7.3-fpm启动失败

注意:
我们安装的是php7.3,但nginx里缺省值是php7.4-fpm.sock.如果它们不一致,则不能解析php页面,nginx 出现502 bad gateway 错误提示,nginx log日志出现错误

sudo cat /var/log/nginx/access.log

192.168.10.85 - - [07/Jan/2022:11:08:24 +0800] "GET /test.php HTTP/1.1" 502 568 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.62"

接着查看PHP-FPM php.ini文件

sudo cat /etc/php/7.3/fpm/pool.d/www.conf

image.png

最后分别启动Nginx和PHP-FPM

sudo /etc/init.d/nginx restart
sudo /etc/init.d/php7.3-fpm start
sudo /etc/init.d/php7.3-fpm restart

测试一下:

进入 /var/www/html 目录下 创建文件test.php

cd /var/www/html
sudo vim test.php

<?php phpinfo(); ?>

保存后退出在浏览器中访问 127.0.0.1/test.php
或者在虚拟机外访问 http://192.168.10.85/test.php (192.168.10.85 为虚拟机ip,输入 ifconfig 查看ip)

image.png

image.png

四、安装MySQL8.0

命令

sudo apt-get install mysql-server mysql-client

查看Mysql版本

owenunix@DESKTOP-CC1MK5I:/var/www/html$ mysql -V
mysql  Ver 8.0.27-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))

启动Mysql服务

如果有安装别的版本,需要先停止别的版本服务,再重启该8.0版本服务

sudo service mysql start 启动
sudo service mysql status 启动状态
sudo service mysql enable 开机自动启动
sudo service mysql disable 禁止开机自动启动
sudo service mysql stop 停止
sudo service mysql restart 重启

启动Mysql失败问题解决

owenunix@DESKTOP-CC1MK5I:/var/www/html$ sudo service mysql status
 * MySQL is stopped.
owenunix@DESKTOP-CC1MK5I:/var/www/html$ sudo service mysql restart
 * Stopping MySQL database server mysqld                                                       
 [ OK ]
 * Starting MySQL database server mysqld 
 su: warning: cannot change directory to /nonexistent: No such file or directory
[fail]

su: warning: cannot change directory to /nonexistent: No such file or directory

解决办法如下:

sudo service mysql stop
sudo usermod -d /var/lib/mysql/ mysql
sudo service mysql start
sudo service mysql restart

运行命令来测试mysql是否能成功运行。

mysql -uroot -p您的密码

首次安装密码应该是空的

修改root密码123456

//开启无密码登录skip-grant-tables
sudo service mysql stop
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
skip-grant-tables
sudo service mysql restart

//设置登录密码123456
mysql -uroot -p
use mysql;
flush privileges;
update mysql.user set authentication_string='', plugin='mysql_native_password' where user='root';
alter user 'root'@'localhost' identified by 'root'; 
set password for root@localhost = '123456';
flush privileges;
quit;
sudo service mysql restart

//注释无密码skip-grant-tables
sudo service mysql stop
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
#skip-grant-tables
sudo service mysql restart

修改外网可以连接Mysql

sudo service mysql stop
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
注销掉  #bind-address           = 127.0.0.1
sudo service mysql restart

image.png

查看mysql日志

sudo cat /var/log/mysql/error.log

1130 host is not allowed to connect to this mysql server

五、安装PHPmysql 扩展用来连接数据库

命令

sudo apt-get install php7.3-mysql

写个程序测试一下,在刚才写的test.php后面加上一段数据库连接代码(可以用mysqli或者PDO但是不要用mysql,因为PHP7不支持mysql)

image.png

Mysql的PHP扩展测试

cd /var/www/html
sudo vim test.php


<?php             

echo "Mysql连接测试: \n";
$mysql = new mysqli('127.0.0.1', 'root', '123456');
if ($mysql->connect_error) {
    echo "连接Mysql失败: " . $mysql->connect_error ;
}else{
    echo "连接Mysql成功";
}

?>

image.png

六、安装Redis5.0

命令

sudo apt-get update
sudo apt-get install redis-server

查看Redis版本

owenunix@DESKTOP-CC1MK5I:~$ redis-server -v
Redis server v=5.0.7 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=636cde3b5c7a3923

启动Redis服务器

redis-server 

image.png

启动Redis客户端

Redis 服务器已启动,因此您可以启动 redis 客户端以在它们之间进行通信。

redis-cli

image.png

七、安装PHPredis 扩展用来连接Redis数据库

命令

sudo apt-get install php7.3-redis

查看安装php相关软件包

dpkg -l | grep 'php'

image.png

php.ini添加扩展文件

sudo vim /etc/php/7.3/cli/php.ini

extension=redis.so

image.png

查看php已安装扩展

php -m
php -m | grep redis
redis
root@DESKTOP-CC1MK5I:/home/owenunix#

重启php服务

sudo /etc/init.d/nginx restart
sudo /etc/init.d/php7.3-fpm start
sudo /etc/init.d/php7.3-fpm restart

image.png

Redis的PHP扩展测试

cd /var/www/html
sudo vim test.php


<?php             

echo "Mysql连接测试: \n";
$mysql = new mysqli('127.0.0.1', 'root', '123456');
if ($mysql->connect_error) {
    echo "连接Mysql失败: " . $mysql->connect_error ;
}else{
    echo "连接Mysql成功";
}

echo "-------------------------------\n";

echo "Redis连接测试: \n";
$redis = new Redis();
$redis->connect('127.0.0.1',6379);
$redis->set('owenkey2','owenzhang',60);
echo $redis->get('owenkey1');

echo "-------------------------------\n";
echo $redis->get('owenkey2');

echo "-------------------------------\n";

phpinfo();

?>

image.png

Buy me a cup of coffee :)

觉得对你有帮助,就给我打赏吧,谢谢!

2538d4.jpg

目录
相关文章
|
12月前
|
缓存 NoSQL 关系型数据库
MySQL 与 Redis 如何保证双写一致性?
我是小假 期待与你的下一次相遇 ~
1228 7
|
缓存 NoSQL 关系型数据库
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
|
关系型数据库 应用服务中间件 nginx
Docker一键安装中间件(RocketMq、Nginx、MySql、Minio、Jenkins、Redis)
本系列脚本提供RocketMQ、Nginx、MySQL、MinIO、Jenkins和Redis的Docker一键安装与配置方案,适用于快速部署微服务基础环境。
|
应用服务中间件 PHP nginx
今日小结通过aliyun的本地容器镜像部署我的nginx和php环境
简介: 本教程介绍如何基于 Dragonwell 的 Ubuntu 镜像创建一个运行 Nginx 的 Docker 容器。首先从阿里云容器镜像服务拉取基础镜像,然后编写 Dockerfile 确保 Nginx 作为主进程运行,并暴露 80 端口。最后,在包含 Dockerfile 的目录下构建自定义镜像并启动容器,确保 Nginx 在前台运行,避免容器启动后立即退出。通过 `docker build` 和 `docker run` 命令完成整个流程。
730 25
今日小结通过aliyun的本地容器镜像部署我的nginx和php环境
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
649 18
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
1084 6
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
1061 17
|
Ubuntu PHP Apache
在Ubuntu系统中为apt的apache2编译PHP 7.1的方法
以上就是在Ubuntu系统中为apt的apache2编译PHP 7.1的方法。希望这个指南能帮助你成功编译PHP 7.1,并在你的Apache服务器上运行PHP应用。
407 28
|
Ubuntu PHP
Ubuntu下使用apt为Apache2编译PHP7.1
以上就是在Ubuntu系统下,使用apt为Apache2编译PHP7.1的过程。希望这个过程对你有所帮助,如果你在执行过程中遇到任何问题,都可以在网上找到相关的解决方案。
356 25
|
缓存 NoSQL 关系型数据库
Redis和Mysql如何保证数据⼀致?
1. 先更新Mysql,再更新Redis,如果更新Redis失败,可能仍然不⼀致 2. 先删除Redis缓存数据,再更新Mysql,再次查询的时候在将数据添加到缓存中 这种⽅案能解决1 ⽅案的问题,但是在⾼并发下性能较低,⽽且仍然会出现数据不⼀致的问题,⽐如线程1删除了 Redis缓存数据,正在更新Mysql,此时另外⼀个查询再查询,那么就会把Mysql中⽼数据⼜查到 Redis中 1. 使用MQ异步同步, 保证数据的最终一致性 我们项目中会根据业务情况 , 使用不同的方案来解决Redis和Mysql的一致性问题 : 1. 对于一些一致性要求不高的场景 , 不做处理例如 : 用户行为数据 ,