如何在Ubuntu Server下搭建LAMP课程讲解由慕课网老师badguy讲述,本文是视频笔记。
一、关于Ubuntu Server:
一、关于Ubuntu Server:
1993年具有Linux血统的Debian诞生
2004年10月Debian的衍生操作系统Ubuntu Server诞生,版本号采用年份+月份,坚持每半年更新一个版本。LTS 是其长期版本,更新周期为4年,普通版本仍为半年。
LAMP:是一种web服务器解决方案之一(LNMP也是),由独立系统或软件组合而成
通常理解为:Linux+Apache+MySQL+PHP
LNMP:Linux+Nginx+MySQL+PHP #(前面有介绍过Nginx)
Ubuntu Server管理员权限解读
为了安全,Ubuntu官方不推荐使用root账户远程登陆
1、普通账户没有管理员权限
2、默认情况下root账户无法登陆
3、su(switch user)切换到超级管理员
#当前用户身份完全切换到root账户,使用root账户密码登陆,除非执行exit退出登陆,否则超级权限将一直有效
#使用该命令所有管理员都必须知道root账户的密码才行
sudo(switch user and do)以超级管理员身份执行
#当前用户身份没有改变,使用自身密码获取授权,超级权限是临时的
#使用该命令使得普通管理员使用自己的密码也可以获取超级管理员权限,就间接弥补了su产生的多账户安全问题
二、ubuntu基础知识与基本软件安装
⑴、ubuntu基础知识1(与CentOS一样)
-isbadguy @ imooc : ~ $
用户名 主机名 当前目录 用户类型标记 #$表示普通用户,#超级管理员
通过passwd命令修改账户密码(因为强制使用普通用户身份登录,登录后需要sudo获取root临时权限,才能给空的root用户赋予新密码,最后才能使用su命令切换到root身份)
sudo passwd root
**** #输入当前账户的密码
****** #输入root用户的新密码
****** #重复输入root密码
su
****** #输入root用户的密码,完成身份切换
⑵、ubuntu基础知识2(apt-get)
①、apt-get安装软件
apt-get update 向Ubuntu 软件源服务器获取软件源列表,选择好后下载软件安装包进行apt-get install安装软件,这个安装会自动将依赖的文件自行安装,以下为安装过程:
sudo apt-get update
**** #输入密码等待列表,查看列表找到需要安装的软件名称
sudo apt-get install apache2 #安装apache2
****
apache2 -v #查询安装版本
在浏览器上面输入配置的服务器IP 查看是否能正常打开网页
然后安装
sudo apt-get install php5
****
php5 -v #查询版本
cat /etc/apache2/mods-enabled/php5.load #证实apache2已经加载了libphp5.so模块
sudo apt-get install mysql-server #mysql-server
****** #输入的是mysql本身的root用户密码,不是
****** 系统root用户密码,重复密码
cat /etc/php5/conf.d/mysql.ini
#证实mysql.ini生效,没有生效是PHP默认未安装mysql的扩展,所以需要手动安装
sudo apt-get install php5-mysql #安装php5-mysql支持模块
cat /etc/php5/conf.d/mysql.ini #再次查看,extension=mysql.so证明正确
sudo service mysql restart
sudo service apache2 restart #重启两个软件服务,确保正常工作
到此为止,LAMP各个组件都安装了(下面的命令一次性全部安装)
sudo apt-get install apache2 php5 mysql-server php5-mysql
或者sudo tasksel install lamp-server(安装软件套装,前提是有这些套装)
②、以下作为测试服务正常运行
cd /var/www
sudo vim info.php #在文件夹下创建info.php 文件
<?php
echo mysql_connect('localhost','root','123456') ? '链接成功' : '链接失败';
phpinfo();
:wq
192.16830.104/info.php #访问创建好的文件,测试显示所有组件正常
③、以下为安装PHP常用的扩展包(按需安装)
sudo apt-get install php5-gd curl libcur13 libcur13-dev php5-curl
sudo service apache2 restart
192.16830.104/info.php #刷新查看模块是否成功安装
④、上传下载服务器文件工具(filezilla)
/var/www 就是网站常用的目录
三、Ubuntu系统LAMP环境配置
⑴、Ubuntu系统通过apt-get安装的软件默认配置文件目录:/etc
apache /etc/apache2
mysql /etc/mysql
php /etc/php5
⑵、配置apache
cd /etc/apache2
/etc/apache2$ ll #查看该目录下文件列表
apache 配置文件加载流程:
apache会首先加载apache.conf(里面包含后面加载的文件名称),然后才会加载conf.d/* httpd.conf ports.conf mods-enabled/* sites-enabled/*
apache核心配置:
mods-*** #Apache模块
sites_*** #虚拟主机
关键词available可以使用的;enabled已启用的(启动需要用到的模块);
enabled ln -s 命令建立软链接至 available
cd /etc/apache2/mods-available/
ls
cd .. #返回上级目录
MySQL核心配置文件my.cnf
PHP核心配置文件php.ini
⑶、虚拟主机工作原理(virtual-Host)
实现上图目的,按下面的步骤进行
1、将所有的域名指向至服务器IP (192.168.0.104,即域名解析)
修改客户端(在虚拟机上)的hosts文件模拟DNS解析
打开hosts文件(不同系统文件位置不同,一般在etc目录,需要root用户修改)
将以下三个域名指向192.168.0.104(在文件后面输入下面三行)
192.168.0.104 video.imooc.com
192.168.0.104 bbs.imooc.com
192.168.0.104 oa.imooc.com
#保存成功后输入上述域名可以直接访问192.168.0.104
⑷、在服务器上面创建3个文件夹分别对应上面三个域名
cd /var/
ls
sudo mkdir -p /wwwroot/{video,bbs,oa} #同时创建多个文件夹
cd /wwwroot/
ls
cd video/
sudo vim index.html
输入video目录测试
cd ../bbs
sudo vim index.html
输入这里是BBS 测试目录
cd ../oa
sudo vim index.html
输入oa目录
⑸、在Apache中配置虚拟主机(接上面继续)(这里说的是关键参数的配置)
cd /etc/apache2/sites-available/
ll
cat default
DocumentRoot
#修改这个路径就可以改变对应访问配置,第三步中所有域名都指向这个配置目录
sudo cp default video #复制default这个文件并命名为video
sudo cp default bbs #下面需要编辑更改DocumentRoot目录
sudo cp default oa #就可以实现不同域名访问不同目录的配置
sudo vim video
DocumentRoot /wwwroot/video #将原路径修改为这个
ServerName video.immoc.com #并增加一行,定义服务器对应的域名
<Directory /wwwroot/video/> #开放Apache访问权限,否则出现403状态码
同理修改其他2个配置文件
接下来就需要启用这些配置文件(按需开启),将3个配置文件建立软链接
cd ../sites-enabled/
ll
sudo ln -s ../sites-available/video video #建立video的软链接
sudo ln -s ../sites-available/bbs bbs
sudo ln -s ../sites-available/oa oa
sudo service apache2 restart
#重启阿帕奇,使配置文件生效(最好采用临时加载,避免重启服务影响其他用户)
分别访问上面三个域名查看是否设置正确。
⑹、MySQL数据存储目录迁移(迁移前需要停止MySQL服务,避免出现后果)
sudo service mysql stop
cd /var/lib/
ll #进入默认的MySQL存储文件夹查看下
sudo mkdir /mysqldata
#创建一个新文件夹用于转移存储,一般迁移是迁移到一个新挂载的硬盘上面
sudo chown -vR mysql:mysql /mysqldata/ #修改用户组、所属组与原目录相同
sudo chmod -vR 700 /mysqldata/ #修改权限与原目录相同
su #只有root用户才有权限复制
******
cp -av /var/lib/mysql/* /mysqldata/
#通过复制命令将源目录里面的数据复制到新目录下(不要剪切,否则出错无法挽回)
exit #退出root用户,返回普通用户状态
sudo vim /etc/mysql/my.cnf #修改MySQL的配置文件以便新目录生效
#datadir = /var/lib/mysql #注释掉原路径
datadir = /mysqldata #找到datadir并修改为新目录路径
保存退出后,还需要修改一个系统安全应用(该应用保护mysql文件)
sudo vim /etc/apparmor.d/usr.sbin.mysqld
#修改apparmor.d配置,该配置可能比较强啊,可以搜索更多资料学习
/var/lib/mysql/ r,
/var/lib/mysql/** rwk, #找到这两行并注释掉,复制更改新目录权限
/mysqldata/ r,
/mysqldata/** rwk, #创建新目录的读写权限
:wq
sudo service apparmor reload #重启apparmor
sudo service mysql start #重启mysql
新建一个imooc数据库,然后查看新目录下是否会自动创建同名文件夹,以此来确定数据迁移是否成功
mysql -u root -p #登陆MySQL,密码是上面安装时输入的密码
mysql> #登陆MySQL成功
create database imooc; #创建imooc数据库
show databases; #查看数据库列表
exit #退出数据库
cd / #进入根目录
su #切换至root用户,普通用户没有权限
cd /mysqldata/
ll #证实有这个目录,说明迁移成功。
rm -rvf /var/lib/mysql/ #删除原来的目录
exit #退出root用户
四、安装phpmyadmin(MySQL管理工具)
⑴、通过apt-get方式安装
命令:sudo apt-get install phpmyadmin
sudo ln -s /usr/share/phpmyadmin/ /var/www/pma
⑵、手动上传方式(将网上下载的程序包上传到服务器)
在/var/www下创建一个pma文件夹
将下载的文件夹里面的文件复制到pma文件夹里面
192.168.0.104/pma #访问试一下
出现的是一个登陆界面(输入root和创建的密码可以管理MySQL)
⑶、注释:通过apt-get安装的MySQL,默认情况下不允许远程访问,只允许服务器内部应用的本地连接(比如说上传到同一服务器的phpmyadmin),那么如果需要允许远程访问,就需要开启MySQL的romote access ,这就需要更改一个文件配置
sudo vim /etc/mysql/my.cnf #打开MySQL配置文件
bind-address = 127.0.0.1 #找到这个bind-address参数(允许访问的白名单)
#bind-address = 127.0.0.1 #注释掉就可以去除这个白名单,服务器就允许远程访问数据库了
登陆安装的phpmyadmin 点击用户可以查看到数据库的用户列表,这里可以发现用户也有主机访问的限制(是针对用户远程访问的限制,不同于上面服务器的限制);点击添加用户(允许通过公网访问),名称任意,% 代表任意IP ,输入密码,确认密码,选择需要的用户权限,确认后刷新权限。
sudo service mysql restart #重启MySQL,便于新配置生效
在百度上面下载Navicat Premium 软件安装后添加mysql进行测试连接
五、了解一种简单的LAMP集群(暂时作了解即可)
负载均衡Nginx 、Apache1、Apache2、Apache3、MySQL#1、MySQL#2、MySQL#3、MySQL#4均为服务器,共同组成一个简单的LAMP集群。
负载均衡Nginx将用户请求随机分发到3个Apache服务器,如果有数据写入请求则转至MySQL1服务器写入,并且同步存储到读取的2、3、4数据库服务器以便Apache能返回给用户。在更大的服务器上面还有缓存服务器、索引服务器
国内外著名的巨型服务器集群
名称 全称 所属公司
TTC Tencent Table Cahe 腾讯
TFS Taobao File System 阿里巴巴
BAE Baidu Application Engine 百度
SAE Sina Application Engine 新浪
GFS Google File System 谷歌