lubuntu 安装 php mysql_Ubuntu18.04 搭建Apache+Nginx+Mysql+PHP+php-fpm详细教程及错误分析

Ubuntu18.04 搭建Apache+Nginx+Mysql+PHP+PHP-FPM 详细教程及错误分析

apache

apt-get install apache2 //装apache 在浏览器中输入localhost可以看到apache页面即成功

PHP

apt-get install php //默认安装php最新版 如果要用php-fpm,那就安装新版的 因为旧版的php-fpm不好搞

// 如果安装旧版本的php,不用对应的php-fpm,可以看看下面的内容

php安装时,如果直接使用apt-get install php5会报错,因为最新版到了7.2,但是我只想安装php的低版本,于是搜索到一篇文章Ubuntu 安装多版本PHP ,避免出错,我先存了个快照,再来尝试这个教程,幸好教程用着很成功。(在此之前请确保为国内源,apt-get update,apt-get upgrade,避免不必要的报错)

使用php -v检查安装成功与否

MySQL

apt-get install mysql-server //明明很简单的一条指令,却因为阿里源莫名奇妙的报错,啊啊啊啊,换源就好了

service mysql start //MySQL开启

mysql -uroot -p //输入密码,进入数据库操作界面

php-fpm

由于库里没有php5-fpm,而且大概百度了一下也没有看到解决办法,不想花过多时间的在这上面的我又切换成了php7.0,装了php7.0后按照上方的多版本教程切换就可以了,然后apt-get install php7.0-fpm,装上php7-fpm

nginx

接下来安装nginx,nginx和apache二者的默认端口都是80,先将apache关掉service apache2 stop

/etc/init.d/nginx start //开启nginx服务

/etc/init.d/nginx stop //停止nginx服务

/etc/init.d/nginx reload //重新加载配置文件

此外,二者的默认目录也是相同的,个人并不介意,所以配置文件中的默认目录、端口都没有修改。

关于nginx,如果不了解的可以看这个文章从0开始nginx详解,B站也有nginx课程,配置文件就不做过多解释了

apt-get install nginx //安装nginx

cp /etc/nginx/sites-enabled/default /etc/nginx/default.bak //做个备份,以防万一

vim /etc/nginx/sites-enabled/default //编辑配置文件

//编辑内容如下,去掉文件中的部分注释即可

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

location ~ \.php$ {

include snippets/fastcgi-php.conf;

# With php7.0-cgi alone:

# fastcgi_pass 127.0.0.1:9000;

# With php7.0-fpm:

fastcgi_pass unix:/run/php/php7.0-fpm.sock;

}

# deny access to .htaccess files, if Apache's document root

# concurs with nginx's one

#

location ~ /\.ht {

deny all;

}

/etc/init.d/nginx reload //编辑完成后,reload一下

以上是最基本的配置内容,更加详细的配置信息,可以看看这篇文章,其中对于nginx的灵活配置可以作为一个学习参考,具体怎么做、为什么这么做还需要自己去学习。

测试

cd /var/www/html //这是nginx和apache默认的主页路径

vim hello.php //新建一个php文件,写点测试信息,比如phpinfo,浏览器访问成功即证明环境搭建顺利

以上操作,是我自己实践可行的,如果你在操作过程中碰到什么问题,可以留言给我,一起交流一下。

配置个文件花了大半天,以下是配置时的详细心路历程,希望能给一些人提供帮助,可略过不看

由于没有了解过nginx,盲目的认为他与apache一样,安装很简单,随便在网上找教程安装nginx,但是总是在出问题(启动错误、启动正常PHP无法解析直接下载)。于是又花了大半天的时间,寻找错误的解决办法(百度具体问题、百度错误原因、查看官方文档、换搜索引擎查),但全都没有成功,我只知道是配置文件出了问题。此时,才想到百度nginx是什么,然后发现nginx竟然还有教程,在B站找到了nginx的教学视频,了解了下nginx的配置文件。

仔细看了nginx目录下有哪些文件,才发现nginx.conf并不如同网上所说那样,在某个文件夹中。打开nginx.conf,可以看到http块里,也并不是所有教程里讲的那样有一个server块,而是包含了sites-enable下的default文件,打开default文件,可以看到server块。

这一次,我没有习惯性地忽略掉那些注释英文,之前没看教程,注释似懂非懂的,看了教程后,仔细看注释就可以知道大概怎么做了。首先备份一份default文件到其他地方,一定不能放在sites-enable下(因为nginx.conf包含了她下面的所有文件)。接着去掉default文件的一些注释。

上面的fastcgi_pass,网上搜到的教程是要写两个,但是这样会报错

根据报错提示,输入jaurnalctl -xe,可以看到详细的错误信息,大意:57行重复

百度一下这个报错,果然是因为有两个fastcgi,需要注释一个,由于需要php-fpm,所以注释掉上面的,果然解决了php无法解析的问题

现在为止,环境就算搭好了

测试一下(提前创建好了一个只有id的数据表):

//测试代码 mysql.php

$server_name = 'localhost';

$user = 'root';

$passwd = 'passwd';

$database = 'test';//提前创建了一个数据库test,里面有张表t,表里只有一个字段id

$conn = mysqli_connect($server_name,$user,$passwd,$database);

if(! $conn){

die("wrong!".mysqli_error($conn));

}

echo 'successful!';

$sql = 'INSERT INTO t (id) VALUES (10)';

$result = mysqli_query($conn,$sql);

if(! $result){

echo 1;

die('wrong'.mysqli_error($conn));

}

echo 'successful * 2';

mysqli_close($conn);

?>

另外,要擅用/var/log/nginx/error.log,查看错误日志。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值