ubuntu+nginx+php8+mysql8环境搭建教程

一、Ubuntu系统安装

win7系统下安装Ubuntu20.04.5系统保姆级教程_慕白杨的博客-CSDN博客_win7系统安装ubuntu

二、编译安装安装nginx

1、下载nginx

nginx下载

选择 stable 版本,右键复制要下载版本的链接

2、打开终端

cd /usr/local/src

wget http://nginx.org/download/nginx-1.22.0.tar.gz    ---后面是nginx下载版本的链接

tar xvfz nginx-1.22.0.tar.gz   ---解压

 3、配置

cd nginx-1.22.0

./configure --prefix=/usr/local/nginx

4、报错解决

(1)报错:./configure: error: the HTTP rewrite module requires the PCRE library.

解决方法:

wget https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.40/pcre2-10.40.tar.bz2
tar xfj pcre2-10.40.tar.bz2

继续配置nginx  --(将pcre库路径写到配置命令中)

./configure --prefix=/usr/local/nginx --with-pcre=/usr/local/src/pcre2-10.40

(2) 报错:./configure: error: the HTTP gzip module requires the zlib library.

解决方法:

wget http://www.zlib.net/zlib-1.2.12.tar.gz

tar xfz zlib-1.2.12.tar.gz

继续配置nginx  --(将lib库路径写到配置命令中)

./configure --prefix=/usr/local/nginx --with-zlib=/usr/local/src/zlib-1.2.12 --with-pcre=/usr/local/src/pcre2-10.40
https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.40/pcre2-10.40.tar.bz2

 5、配置成功

6、安装

 make && make install

 出现上述信息,表示nginx安装成功!!

7、启动nginx

cd /usr/local/nginx

./sbin/nginx

 打开浏览器,输入http://localhost/  出现如下页面,即可表示nginx启动成功!!

8、启动nginx提示80端口被占用问题

{nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) }

解决方法:

(1)先查看nginx 是否已经启动

ps aux|grep nginx

 (2)或是apache已经默认在运行了

ps aux|grep httpd

 (3)杀掉进程

pkill -9 httpd

二、 编译安装PHP

编译安装PHP,需要先提前安装多个它的依赖库。

1、官网下载

PHP: Downloads

2、编译安装

cd /usr/local/src

wget https://www.php.net/distributions/php-8.0.23.tar.gz

tar xfz php-8.0.23.tar.gz

cd php-8.0.23

./configure --prefix=/usr/local/php --with-gd\ --enable-gd-native-ttf --enable-mysqlnd\ --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd\ --with-openssl --enable-mbstring --enable-fpm\

这里配置可能会提示错误,但没关系,根据提示一步步排查问题,然后解决!

3、 安装多个依赖库

我这里安装时提示必须安装(libxml-2.0 >= 2.9.0)、(sqlite3 > 3.7.4)、(oniguruma)、(zlib)、(libpng)。安装可通过apt安装或编译安装,选择适合自己的即可! 

4、配置

./configure --prefix=/usr/local/php --enable-gd --enable-gd-native-ttf --enable-mysqlnd --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --enable-mbstring --enable-fpm

  

5、安装

 make && make install

 

 安装成功!查看/usr/local下有无php文件夹。

6、总结

1、说缺少 openssl时,你安装了,仍然缺少,此时可安装 openssl-dev 就能解决问题!

2、apt-get install 时,提示没有软件包

此时,先排查apt源 ,如果源没问题

          运行命令查询 apt-cache search 包名

           按照名字进行安装

3、遇到错误时,不要慌张,搜索问题,一步一步解决!!

7、执行PHP程序

php-fpm --- php的独立运行程序

cd /usr/local/php

./sbin/php-fpm --- 执行php程序 

报错: 

{

[20-Sep-2022 18:11:01] ERROR: failed to open configuration file '/usr/local/php/etc/php-fpm.conf': No such file or directory (2)

[20-Sep-2022 18:11:01] ERROR: failed to load configuration file '/usr/local/php/etc/php-fpm.conf'

[20-Sep-2022 18:11:01] ERROR: FPM initialization failed

}

解决:

cp ./etc/php-fpm.conf.default ./etc/php-fpm.conf

./sbin/php-fpm

又报错:

{

WARNING: Nothing matches the include pattern '/usr/local/php/etc/php-fpm.d/*.conf' from /usr/local/php/etc/php-fpm.conf at line 143.

}

vim /usr/local/php/etc/php-fpm.conf ---:set nu 显示行号,找到143行,看看

cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf ./sbim/php-fpm

继续报错:

{ [20-Sep-2022 18:18:52] ERROR: [pool www] cannot get gid for group 'nobody' }

groupadd nobody ----添加组 nobody

./sbin/php-fpm ---运行

ps aux | grep php ---查看有无php进程,显示有master 表示php启动成功!! 

8、php显示器

cd /usr/local/php

./bin/php -v --- 显示php版本号 

ls bin/ 下面有个php,这个就是php的显示器 

三、整合nginx+php

 1、nginx与PHP通信的原理(通俗版解释)

nginx--80,php--9000,nginx与PHP是完全独立平行的进程,进程与进程之间是可以说话的。

用户在浏览器发起请求,说nginx,你来帮我解释一下,a.com/b.php文件,但nginx不会解析php文件呀,此时,它会借助进程之间可以通信的方式去找9000端口,找php,让它解析a.php ,但php蒙了,这么多目录,那个目录下的a.php呢?

这时候,nginx就会告诉它,在我的根目录下,那里,那里,把这个信息送给php,这时候,9000这个进程就会根据这个目录去寻找这个b.php文件,然后解析它,再将解析的这个结果,返回给nginx,nginx再显示在浏览器上。

 2、新建php文件并访问它

cd /usr/local/nginx   ---进入 nginx安装目录
cd conf/   ----进入nginx的配置文件目录
vim nginx.conf   ---编辑它的配置文件  
cd ..           ---返回上级目录
vim ./html/a.php   ----新建一个php文件,并写入内容 <?php phpinfo()>  保存并退出
pkill -9 nginx     ---杀掉nginx进程
./sbin/nginx       ----运行nginx
ps aux|grep nginx   ---查看nginx 有无被运行
http://localhost/a.php   ---浏览器访问网址,看是否能显示php配置信息

页面显示:File not found.

3、修改nginx配置文件

cd /usr/local/nginx/conf
vim nginx.conf

location ~ .php$ {
     root           html;
     fastcgi_pass   127.0.0.1:9000;
     fastcgi_index  index.php;
     fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;
      include        fastcgi_params;
}

此时,虽然可以出来了,但很明显可以看到,Loaded Configuration File 后面是none ,表示 php.ini文件没找到!

在usr/local/php/lib目录下没有找到!

ls /usr/local/src/php-8.0.23 | grep php
cp /usr/local/src/php-8.0.23/php.ini-development ./lib/php.ini
pkill -9 php
cd /usr/local/php
./sbin/php-pfm

 再次修改nginx.conf文件

location ~ .php$ {
     root           html;
     fastcgi_pass   127.0.0.1:9000;
     fastcgi_index  index.php;
     fastcgi_param  SCRIPT_FILENAME  DOCUMENT_ROOT$fastcgi_script_name;
      include        fastcgi_params;
}

 4、重新加载nginx

cd /usr/local/nginx
./sbin/nginx -s reload   ---加载最新配置!!

重新访问浏览器,即可看到PHP配置文件信息。至此,PHP与nginx的整合就结束了。

四、安装mysql8

这里选择通过二进制文件来安装mysql

1、下载二进制文件并解压

cd /usr/local/src
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz
ls 
tar xfJ mysql-8.0.30-linux-glibc2.17-x86_64-minimal.tar.xz

2、安装mysql的依赖库

apt-cache search libaio  ---查询
apt-get libaio1        ---安装依赖库

3、移动目录并创建mysql组

mv /usr/local/src/mysql-8.0.30-linux-glibc2.12-x86_64 /usr/local/mysql
cd /usr/local/mysql
groupadd mysql  ---- 创建mysql组
useradd -r -g mysql mysql   --- 添加个用户指定为用户组

chown -R mysql .      ----R递归,递归修改当前文件夹的主人为mysql用户
chgrp -R mysql .        ---递归修改当前目录的组为mysql  

useradd的 -r参数:此参数是用来建立系统帐号。系统帐号的UID会比定义在系统档上/etc/login.defs.的UID_MIN来的小。注意useradd此用法所建立的帐号不会建立使用者目录,也不会在乎纪录在/etc/login.defs.的定义值。

 4、创建data目录

从 mysql5.7 之后的版本没有 data 目录,需要我们自己创建,也可自己指定一个 data 目录

mkdir data    ----#创建日志文件存放目录  ./data/
初始化:
./bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize-insecure
启动mysql服务
/usr/local/mysql/support-files/mysql.server  start
登陆mysql
 /usr/local/mysql/bin/mysql -uroot -p

5、错误提示

{

/usr/local/mysql/bin/mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory

/usr/local/mysql/bin/mysql:加载共享库时出错:libtinfo.so。5: 无法打开共享对象文件:没有此类文件或目录

}

排查 问题:

cd /usr/local/mysql/bin

ldd mysql ---- 查看mysql的依赖

 结果发现,libtinfo.so.5 => not found

搜索发现,是系统中缺少 libtinfo5 ,于是搜索安装

apt-cache search libtinfo5
apt-get install libtinfo5
./bin/mysql -uroot -p    ---登陆mysql,隐藏密码

6、输入密码,登录mysql客户端

初始化mysql时就已经提示密码了

./bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize-insecure

2022-09-21T01:15:08.766385Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.30) initializing of server in progress as process 8506

2022-09-21T01:15:08.812117Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.

2022-09-21T01:15:09.605688Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.

2022-09-21T01:15:11.839226Z 6 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.

root@localhost是用空密码创建的!请考虑关闭--initialize不安全选项。[这才是解决问题的关键!]

 

cd /usr/local/mysql
sudo ./bin/mysql -uroot -p
直接 enter 就进入到mysql了

 

7、修改mysql密码

alter user root@localhost identified with mysql_native_password by "xxx"; --- xxx是你的密码
FLUSH PRIVILEGES;   ---使命令即时生效
exit;   ---退出mysql

8、可能会出现的一个错误

 sock连接错误:

sudo /usr/local/mysql/support-files/mysql.server start
mysql -u root -p

五、总结

1、启动nginx
   /usr/local/nginx/sbin/nginx

2、启动php
 /usr/local/php/sbin/php-fpm

3、启动mysql
/usr/local/mysql/bin/mysql -uroot -p 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ubuntu下搭建LNMP(Linux + Nginx + MySQL + PHP)环境可以通过以下步骤完成: 第一步,安装Nginx: 1. 打开终端,输入以下命令来更新软件包列表:sudo apt update 2. 安装Nginx:sudo apt install nginx 3. 安装完成后,启动Nginx服务:sudo systemctl start nginx 4. 检查Nginx是否正确安装:在浏览器中输入服务器IP地址,如果能看到Nginx的默认欢迎页面,则表示安装成功。 第二步,安装MySQL: 1. 在终端中输入以下命令进行安装:sudo apt install mysql-server 2. 安装过程中会提示输入MySQL root用户的密码,根据提示设置密码。 3. 安装完成后,启动MySQL服务:sudo systemctl start mysql 4. 检查MySQL是否正确安装:在终端输入mysql -u root -p,输入之前设置的密码,如果成功进入MySQL命令行界面,则表示安装成功。 第三步,安装PHP: 1. 在终端中输入以下命令进行安装:sudo apt install php-fpm php-mysql 2. 安装完成后,编辑php.ini文件:sudo nano /etc/php/7.4/fpm/php.ini 3. 将cgi.fix_pathinfo=1这一行的注释符号(#)去掉,并保存退出。 4. 重启PHP-FPM服务:sudo systemctl restart php7.4-fpm 第四步,配置Nginx以使用PHP处理网页: 1. 输入以下命令创建一个新的server block文件:sudo nano /etc/nginx/sites-available/example.com.conf(将example.com替换为你的域名) 2. 在文件中输入以下配置信息: server { listen 80; server_name example.com; root /var/www/example.com; index index.php index.html; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; } } 3. 保存文件并退出,然后运行以下命令:sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/ 4. 测试Nginx配置是否正确:sudo nginx -t 5. 如果显示"successful",则重新启动Nginx服务:sudo systemctl reload nginx 现在,你已经成功搭建了LNMP环境并可以开始部署网站。你可以将网页文件放入/var/www/example.com目录中,并通过浏览器访问你的域名来查看是否正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值