写点什么

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

作者:Owen Zhang
  • 2022 年 1 月 11 日
  • 本文字数:3556 字

    阅读完需:约 12 分钟

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 下已实践,放心使用,不懂联系我



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
复制代码


二、安装 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 在虚拟机外访问也能看到



二、安装 PHP7.3 和 PHP 扩展

安装命令

sudo apt-add-repository ppa:ondrej/phpsudo apt-get updatesudo 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 -vPHP 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 GroupZend 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
复制代码


三、配置 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-availablesudo cp default default.baksudo vim /etc/nginx/sites-available/default
复制代码


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


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
复制代码


最后分别启动 Nginx 和 PHP-FPM

sudo /etc/init.d/nginx restartsudo /etc/init.d/php7.3-fpm startsudo /etc/init.d/php7.3-fpm restart
复制代码

测试一下:

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


cd /var/www/htmlsudo 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)



四、安装 MySQL8.0

命令

sudo apt-get install mysql-server mysql-client
复制代码

查看 Mysql 版本

owenunix@DESKTOP-CC1MK5I:/var/www/html$ mysql -Vmysql  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 stopsudo usermod -d /var/lib/mysql/ mysqlsudo service mysql startsudo service mysql restart
复制代码

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

mysql -uroot -p您的密码
复制代码


首次安装密码应该是空的

修改 root 密码 123456

//开启无密码登录skip-grant-tablessudo service mysql stopsudo vim /etc/mysql/mysql.conf.d/mysqld.cnfskip-grant-tablessudo service mysql restart
//设置登录密码123456mysql -uroot -puse 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-tablessudo service mysql stopsudo vim /etc/mysql/mysql.conf.d/mysqld.cnf#skip-grant-tablessudo service mysql restart
复制代码

修改外网可以连接 Mysql

sudo service mysql stopsudo vim /etc/mysql/mysql.conf.d/mysqld.cnf注销掉  #bind-address           = 127.0.0.1sudo service mysql restart
复制代码


查看 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)


Mysql 的 PHP 扩展测试

cd /var/www/htmlsudo 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成功";}
?>
复制代码


六、安装 Redis5.0

命令

sudo apt-get updatesudo apt-get install redis-server
复制代码

查看 Redis 版本

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

启动 Redis 服务器

redis-server 
复制代码


启动 Redis 客户端

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


redis-cli
复制代码


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

命令

sudo apt-get install php7.3-redis
复制代码

查看安装 php 相关软件包

dpkg -l | grep 'php'
复制代码


php.ini 添加扩展文件

sudo vim /etc/php/7.3/cli/php.ini
extension=redis.so
复制代码


查看 php 已安装扩展

php -mphp -m | grep redisredisroot@DESKTOP-CC1MK5I:/home/owenunix#
复制代码

重启 php 服务

sudo /etc/init.d/nginx restartsudo /etc/init.d/php7.3-fpm startsudo /etc/init.d/php7.3-fpm restart
复制代码


Redis 的 PHP 扩展测试

cd /var/www/htmlsudo 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();
?>
复制代码


Buy me a cup of coffee :)

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



发布于: 刚刚阅读数: 2
用户头像

Owen Zhang

关注

还未添加个人签名 2020.05.10 加入

还未添加个人简介

评论

发布
暂无评论
Ubuntu LNMPR环境搭建(Ubuntu 20.04 + Nginx1.8 + PHP 7.3 + Mysql8.0 + Redis5.0)