Ubuntu 16.04 安装 Apache, Mysql, PHP7, phpMyAdmin过程解析和错误总结

引言

本篇文章是想总结下我的一些建站经验以及踩过的坑,这个是从上个月底备案成功到现在也有几个礼拜了,然而我一直没有什么太多的时间和太大的精力去完善它,本来是想用Django来做个简约版顺便提升自己的代码量,但中途花了一天时间规划了下方向以及数据表发现太烧时间了,然后找了wordpress替代,不过阿里云为了图方便用的一键安装,然后本篇是基于本机一步步LAMP安装。

LAMP概念

什么是LAMP?它是由Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了很高的兼容性,并且非常的稳定,从而形成了一个构建强大的Web应用程序平台的组合。与之对应的还有LNMP(Nginx/MySQL/PHP),LNMPA(Nginx/MySQL/PHP/Apache)等,下面就将一步步的进行部署。


Apache安装

Apache是一款Web服务器软件,有多种产品,可以支持SSL技术,支持多个虚拟主机。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。

Apache2安装步骤

下面我们就在终端里输入如下三句命令来安装:

sudo apt-get update  # 更新软件源
sudo apt-get install -y apache2  # 安装apache2
sudo service apache2 start  # 开启服务

这个文件很小,我记得只有几千k的样子,基本都是秒下,这里就没有截图记录了。完成后,我们有三种方式进行验证是否成功。

ifconfig  # 显示当前网络设备的状态与位置
ifconfig | grep inet | awk '{ print $2 }' # 直接显示本机ip

第一种就是输入如上两句代码中的任意一个,找到本机的内网地址,第二种和第三种其实意思一样,在浏览器中输入localhost或者是127.0.0.1这个本机回送地址,跳转到如下页面:
在这里插入图片描述
如图就是表示已经安装成功,然后我们就可以去apache2安装的根目录看看有没有更新文件,按常理来讲会有一个index.html文件,默认位于 /var/www/html/,当然我们也可以修改,原始路径如下:
在这里插入图片描述

bug1:执行 apt update 更新时报错

这个bug我是在后面遇到的,可以归结于软件源不稳或者说是我的IP不稳,然后就放在前面说明了,当时具体的错误如下图:
在这里插入图片描述
这里一定要看清楚是什么源更新失败,后面还会有另一种软件源问题。那么很明显,这个是官方的软件源无法导入,然后我就去搜了很多的解决方案,也试了很多种,大致列举一些我记得的可能的解决方案。

解决方案一:更换软件源

这是最容易想到的一种方式,也是最可能的原因之一,可以设想当时正好在更新?服务器短暂连接不上去?那么我们就换个源看看,找到源文件:

sudo vim /etc/apt/sources.list  # 进入源文件
cp /etc/apt/sources.list /etc/apt/sources.list.bak  # 备份软件源

源文件一般也是默认的地址,可能里面是source.list,我们可以直接找这个路径下的目录文件或者用vim一探究竟,输入第一句话后如果有源信息,退出vim将其拷贝一份,然后就可以进行编辑了,我们将清华源替换为中科大软件源:

deb http://mirrors.ustc.edu.cn/ubuntu/ precise-updates main restricted
deb-src http://mirrors.ustc.edu.cn/ubuntu/ precise-updates main restricted
deb http://mirrors.ustc.edu.cn/ubuntu/ precise universe
deb-src http://mirrors.ustc.edu.cn/ubuntu/ precise universe
deb http://mirrors.ustc.edu.cn/ubuntu/ precise-updates universe
deb-src http://mirrors.ustc.edu.cn/ubuntu/ precise-updates universe
deb http://mirrors.ustc.edu.cn/ubuntu/ precise multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ precise multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ precise-updates multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ precise-updates multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ precise-backports main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ precise-backports main restricted universe multiverse
 
deb http://security.ubuntu.com/ubuntu precise-security main restricted
deb-src http://security.ubuntu.com/ubuntu precise-security main restricted
deb http://security.ubuntu.com/ubuntu precise-security universe
deb-src http://security.ubuntu.com/ubuntu precise-security universe
deb http://security.ubuntu.com/ubuntu precise-security multiverse
deb-src http://security.ubuntu.com/ubuntu precise-security multiverse

替换成功后,再次执行sudo apt-get update但结果并没有啥改变:
在这里插入图片描述

解决方案二:清理缓存文件

这个的意思是说apt更新如果非正常结束,会留有lock文件、以及许多更新缓存文件,导致无法继续执行apt update操作。解决办法是手工删除这些文件,即可正常使用apt update更新命令。
在这里插入图片描述
那么我们只需要清理缓存,删除lock文件,以及update目录下的文件就可以了:

sudo rm  /var/lib/dpkg/lock  # 删除lock
sudo apt clean  # 清理缓存
sudo rm /var/lib/dpkg/updates/*  # 清理update目录下文件

然而结果是对我并没有啥用,我删之前去update文件夹下看了一下,没有零散错误文件,那么也就是说内存都没启动,哪里来的缓存。当然还有几种方案尝试过,但因为不熟,不知道表达些啥意思,而且看评论说还是没有解决问题,就没提了,有些牵扯进DNS了,我就大概看了看。

解决方案三:重新联网

其实,我应该想到的。。。但是,好像试了很多种方法,瞎搞了很久。。。因为吃完饭回来继续,我是虚拟机并接的网线,进入屏保后自动断网,然后我连接了Windows,一般Linux会跟着连的,但这次不知道怎么没连,然后。。。就没了吧,不做过多解释了,可以参照我之前的一篇博客:

Linux虚拟机网络超时解决
在这里插入图片描述
正常图如上,这里记录一下,希望以后不再犯了,加上上面那篇博文里的,就三次了。。我只能说,事不过四!

Mysql 安装

MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 旗下产品。在 WEB 应用方面 MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体,分支的开发者希望提供访问即将到来的MySQL 5.4 InnoDB性能。

MySQL安装步骤

上述均来自百度百科,不过确实MariaDB是可以考虑一波的,这里我们还是用mysql,因为我虚拟机mysql并没有卸载,所以我没有安装什么数据库,直接用的已有的,然后回忆了一下之前在阿里云服务器上的安装顺序,再结合一些博文,安装步骤如下:

sudo apt-get install mysql-server
sudo apt-get install libapache2-mod-auth-mysql

安装mysql-server也会同时安装如:mysql-client-5.7、mysql-client-core-5.7、mysql-common、mysql-server-5.7、mysql-server-core-5.7等19个包。所以我们不需要担心是否没有装全,安装过程中会出现可视化界面,提示我们需要设置初始密码,我原先大致截了一张图如下:

之后我们便需要激活mysql服务,再和apache2一样开启,如果上述没有设置初始账号和密码,这里还可以通过脚本再设置一次:

sudo mysql_install_db  # 激活mysql
sudo service mysql start # 开启mysql服务
sudo mysql_secure_installation  # 运行脚本

这里大致会提示如下信息(摘自 实验楼):

#提示让我们输入 root 用户的密码,此时我们并没有设置,所以为空,直接敲回车键即可
Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.
#询问我们是否要设置密码
Set root password? [Y/n] y
#此处我选择的需要
New password: 
Re-enter new password: 
#成功的更新我们的 root 密码
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
#在 mysql 安装时有创建一个默认的匿名用户,询问你是否删除,处于安全考虑我们选择的是 yes
Remove anonymous users? [Y/n] y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
#mysql 支持远程的操作,这里询问我们在远程操作时是否可以使用 root 登陆
Disallow root login remotely? [Y/n] y
 ... Success!

By default, MySQL comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

#询问我们是否需要删除安装时存在的测试数据库
Remove test database and access to it? [Y/n] y

 - Dropping test database...

#因为我们并没有这个数据库,所以在这里报错,并没有什么影响
ERROR 1008 (HY000) at line 1: Can't drop database 'test'; database doesn't exist
 ... Failed!  Not critical, keep moving...
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!

bug2:mysql E:无法定位软件包问题

因为自己虚拟机已经装好了,所以没有出现mysql无法定位的问题和图,这里可以分享一些我的经验以及找到的比较好的资源。

解答方案一:更换软件源

这个问题还是可以参考上面的软件源问题,可能是版本源太低,这里推荐两个国内的比较好的源:

清华大学开源软件镜像站
中科大镜像站

上述都是基于Ubuntu镜像的跳转页,如果是centos可以通过搜索查找。然后除了清华和中科大外,还有阿里、搜狐、网易等,这里推荐一篇
博客,里面介绍了软件源详细的使用方法:

Ubuntu下安装MYSQL出现 E: 无法定位软件包问题

解答方案二:卸载mysql残留文件

如果说我们本机里自带了mysql,但又想装一个新的,那么旧版本势必会对安装产生影响,这里我看到了另一篇博主非常详细的卸载手法。。嗯,先mark一下,以后可能会有用吧

linux彻底卸载mysql

bug3:libapache2-mod-auth-mysql没有安装候选

在mysql刚开始,我写了两个需要下载的代码,但前面都只是对第一条的解释,也就是mysql服务,第二个是关于apache调用mysql的模块,关于libapache2-mod-auth-mysql的问题,很大可能这个会安装不成功,那么显示是这样的:
在这里插入图片描述

解决方案一:更换软件源
这个还是惯性思维,只要是源有问题,那么第一反应都是更换软件源,如果不行,那么考虑第二种了,这里就不再过多提了,这个libapache2的软件源在Ubuntu16.04里大概率没用。

解决方案二:导入有源网站的软件源

这里我也尝试了挺久的,试了网上说的很多种方法,但基本上没有一个成功的。后来机缘巧合,找到了一个网站的软件源,然后就成功了:

libapache2-mod-auth-mysql_4.3.9-13.1ubuntu3_amd64.deb 的下载页面

进入上面网站复制源代码,然后黏贴进sources.list中,再更新apt就行了:

sudo vim /etc/apt/sources.list  # 进入源文件
# 找到空位黏贴后,:wq保存
sudo apt-get update
sudo apt-get install libapache2-mod-auth-mysql

然后我们就会看到:
在这里插入图片描述
上图表示安装成功。

PHP 安装

PHP我想大家都懂,那我就不介绍了。。。

PHP 安装步骤

#分别安装 php5(Linux有自带)、apache 的 php 库文件以及php的加密库
sudo apt-get install php7
apt-cache search php7  # 查询或者说激活php
sudo apt-get install libapache2-mod-php7 php7-mcrypt
sudo apt-get install php7-mysql

这里的安装和mysql一样,输完第一句后,等待安装,安装完成后,可以用第二个命令查看相关的库和模块:
在这里插入图片描述
然后我们就可以检验一下是否安装成功了,首先编写一个文件, sudo vim /var/www/html/info.php,在里面输入这样的一段 php 语句(用于显示 php 信息的一段语句)

<?php
phpinfo();
?>

然后打开我们的浏览器,在浏览器里面输入 http://localhost/info.php 然后就可以验证了:
在这里插入图片描述
然后显示如下页面就安装成功了。

bug4:指定PHP5提示安装失败

Ubuntu16.04的PHP标准是7,更低的版本可能是不再维护或者说停止更新了,但我直接以实验楼的代码为依据安装更新了,虽然我也不清楚到底PHP现在是什么版本了,然后发现安装错误。后来找问题的时候找到了这篇博文,然后解决了我PHP的问题,但我并没有安装完就删了换回了7,然后就出现了如上图,博文如下:

解决方案:添加ppa

Ubuntu16.04 php5安装失败解决方案

我大致提一下就下面三句命令:

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update 
sudo apt-get install php5.6

然后这里我们需要注意一个问题,就是说我们添加了这个我也不知道该叫php的源还是什么,然后后面又报了个错误,关于这个ppa的,如果以后更新源出现如下问题,那么可能就需要这样解决:

http://ppa.launchpad.net/fcitx-team/nightly/ubuntu xenial Release

然后我们需要删除这个ppa来重新让我们的apt更新,即在etc/apt/sources.list.d 目录中删除对应的ppa,用sudo,当然也可以赋予删除权限,然后在该文件目录下直接删除文件。这里就没有图了,当时删了后我也没管了,因为我装的7。

bug5:php-mysql无法定位

这里的问题和上面的libapache2-mod-auth-mysql一样,但这个就不需要找软件源了,因为这是包管理版本管理不当导致的。

解决方案:使用aptitude

aptitude 是 Debian GNU/Linux 系统中, 非常神奇的的软件包管理器,基于大名鼎鼎的 APT 机制, 整合了 dselect 和 apt-get的所有功能, 并提供的更多特性,特别是在依赖关系处理上。
然后我们用aptitude能改进版本的问题,比如这里,我发现这个版本低于其余三个,所以我输入下面命令后,其余两个需要退一个小版本才能和它形成强依赖关系:
在这里插入图片描述

phpadmin 安装

phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库

phpadmin 安装

如果上述都安装成功了,这里的phpadmin不会有太大问题,输入几句命令之后基本就是图形可视化安装了:

sudo apt-get install -y phpmyadmin

然后这里会出现很多的图,如下:
在这里插入图片描述
选apache2。然后回车,下面也是一样,默认应该为是,直接回车:
在这里插入图片描述
然后安装好后需要配置 apache 才能正常的访问该页面。

sudo vim /etc/apache2/apache2.conf

#在配置文件中添加这句话,因为在安装的时候phpmyadmin为我们做好了配置文件,现在只需要包含进来即可
Include /etc/phpmyadmin/apache.conf

#修改配置文件之后,只有重新启动服务才能生效
sudo service apache2 restart

在这里插入图片描述
然后我们只需要在浏览器的地址栏中输入 localhost/phpmyadmin 便可访问。
在这里插入图片描述
登录为上面设置的mysql的账号密码,到这里基本就安装成功啦!

之后就是选择自己mysql已经有的数据库,如果是新建的需要在终端输入mysql -u root -p进行mysql,进行SQL语句的编写。我的大概如下,新表左边可能是空的:
在这里插入图片描述

总结

其实关于LAMP、LNMP等这些都有很多种的方式,可能已经有人做成了完全的可视化窗口安装,那么只需要点下一步就行了,也有一条命令搞定所有的,比如说一键安装包这种,但这些方式我觉得都不如从最基础的开始进步得大,收货得多,或许有些人只求结果,并不想了解这方面的东西,其实我也一样,目前仅仅是想能找到自己所尝试的本职,其它想法很少,但我所希望的是,不论什么样的问题,至少要去尝试,只要有大概的想法和敢于付诸行动的态度,即使仅仅是一篇博客,我也没想过会总结这么多,对于这个领域。我对上述的这些东西也了解不深,才漏洞百出,但稍稍能学到点东西,走了非常多的弯路但有一个好的结果我觉得还是挺有意思的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

submarineas

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值