LAMP介绍及安装


L-Linux系统
A-Apache网页服务(静态网页)
M-Mysql数据库
P-PHP网页(动态网页)
Apache网页服务器可在Linux、Unix、Windows多种系统平台上部署。
Apache的主要特点:
1、开放源代码
2、跨平台应用
3、支持各种Web编程语言
4、模块化设计
5、运行非常稳定
6、良好的安全性

Apache

Apache的依赖安装包

apr:为上层的应用程序调试提供一个可以跨越多操作系统平台使用的底层接口库。早期apache为了能够处理各种不同的系统平台的时候调用不同的处理函数,现在apache将通用的函数独立出来发展成apr项目。
apr-util:完整的apr开发包含三个:apr、apr-util、apr=iconv。都是为了完成一个功能就是为上上层应用提供运行库,只不过和apr提供的数据结果和接口库不一样而已
pcre-devel:为了支持正则表达式
expat-devel:是一个C语言开发的、用来解析XML文档的开发库,主要作用是搜索它的文档,识别文件指定的位置,调用该部分相应的处理程序,将文件输送到解析器,见文件分割成多个片段,分段装到内存中。
perl:内部集成了正则表达式和第三方代码库CPAN。和前面的pcre-devel支持的pcre-devel支持的正则表达式不一样

Apache配置的选项

--prefix:指定apache程序安装到哪个目录下。
--enable-so:启用动态加载模块支持,使httpd只具备进一步扩展功能的能力。
--enable-rewrite:启用网页地址重写功能,用于网站优化及目录迁移。
--enable-charset:启用字符集支持,以便扩展网站的应用访问能力。
--enable-cgi:启用CGI脚本支持,便于扩展网站的应用访问能力。

Apache主要子目录的用途

/usr/local/httpd/bin:存放httpd服务的各种可执行程序文件
/usr/local/httpd/conf:存放httpd服务的各种配置文件
/usr/local/httpd/htdocs:存放网页文档,包括默认首页文件index.html
/usr/local/httpd/logs:存放httpd服务的日志文件
/usr/local/httpd/modules:存放httpd服务的各种模块文件
/usr/local/httpd/cgi-bin:存放各种CGI程序文件

优化Apache执行路径

1、创建连接
2、将apache程序的路径加入PATH环境变量中

查看Apache程序的版本

httpd -v

让Apache开机自启动

(默认源码包编译的时候是不会让apache软件包可以通过systemctl或service去管理的,因为systemd单元里面没有这个服务,所以需要自己添加)

[root@server1 system]# cd /lib/systemd/system #CentOS7中运行的第一个init进程是/lib/systemd/system
[root@server1 system]# vim httpd.service
[Unit]
Description=The Apache HTTP Service
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/httpd/logs/httpd.pid
ExecrStart=/usr/local/bin/apachectl $OPTIONS
ExecrReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
[root@server1 system]# systemctl enable httpd.service

Apache网页网站捆绑域名

域名两种获取方式:静态-修改/etc/hosts文件
动态-DNS获取
将域名和网页捆绑:

[root@server1 ~]# vim /usr/local/httpd/conf/httpd.conf
ServerName www.xxx.com
## 检查apache语法是否正确
[root@server1 ~]# /usr/local/httpd/bin/apachectl -t
Syntax OK

查看WEB站点的访问情况

访问日志:
/usr/local/httpd/logs/access_log
错误日志:
/usr/local/httpd/logs/error_log

apache配置文件里面的内容

ServerRoot "/usr/local/httpd" #apache网站的默认的根目录
Listen 80 #监听的网络端口号
User daemon #daemon守护进程
User daemon #设置运行httpd进程时的用户身份
Group daemon #设置运行httpd进程时的组身份
ServerAdmin webmaster@xxx.com #设置httpd服务器的管理员E-mail地址
ServerName www.xxx.com #设置web站点的完整主机名
DocumentRoot "/usr/local/httpd/htdocs" #设置网站根目录,网页所在地
DirectoryIndex index.html index.php #设置网站的默认索引页,可以设置多个首页文件
ErrorLog "logs/error_log" LogLevel warn #设置错误日志的路径,错误日志的日志级别
CustomLog logs/access_log common #设置访问日志文件的路径、日志类型,使用的类型为common
PidFile logs/httpd. pid #设置用于保存httpd进程号的文件
AddDefaultCharset UTF-8 #设置站点中的网页默认使用的字符集编码一
Include conf/extra/httpd-default. conf #包含另一个配置文件的内容,可以实现将一些特殊功能的配置放到一个单独的文件中,这样便于独立进行配置功能的维护而不影响主配置文件

区域配置项

<Directory/>//定义"/"目录区域的开始
	Options FollowSymLinks #控制选项,允许使用符号链接
	AllowOverride None #不允许隐含控制文件中的覆盖配置
	Require all denied #禁止任何人访问此区域
</Directory>//定义"/"目录区域的结束

构建虚拟web主机

虚拟Web 主机指的是在同一台服务器中运行多个Web站点,其中每一个站点实际上并不独立占用整个服务器,因此被称为“虚拟”Web主机。
httpd服务支持的虚拟主机类型包括以下三种:
**1)基于域名:**为每个虚拟主机使用不同的域名,但是其对应的IP地址是相同的。
**2)基于IP地址:**为每个虚拟主机使用不同的域名,且各自对应的IP地址也不相同。
**3)基于端口:**这种方式并不使用域名、IP地址来区分不同的站点内容,而是使用了不同的TCP端口号。

一、基于域名的虚拟主机实验步骤:

1)客户机需要添加两个记录信息,将多个不同的域名指向同一个IP地址
2)分别为多个虚拟主机准备不同的测试主页
3)添加虚拟主机配置

[root@www ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf #创建独立的配置文件
<VirtualHost *:80> #设置kgc虚拟站点区域
	DocumentRoot " /opt/aa'
	ServerName www.xxx.com
	ErrorLog "logs/www. xxx.com. error_log"
	CustomLog "logs/www. xxx.com. access_log"common
<Directory "/opt/aa">
	Options Indexes MultiViews FollowSymLinks
	AllowOverride None
	Order allow, deny
	Allow from all
	Require all granted
</Directory>
</VirtualHost>
[root@www]#vim /usr/ local/httpd/conf/httpd.conf
…… #省略部分内容
Include conf/extra/httpd-vhosts.conf

4)服务重启,让修改的配置可以生效
5)客户机中访问虚拟web主机

二.基于IP的虚拟主机

1)准备好两张网卡,设置不同的IP
2)分别为不同的虚拟主机设置不同的测试页
3)添加虚拟主机配置

mysql

依赖包:

ncurses ncurses-devel #ncurses字符终端下屏幕控制的基本库
bison:用于自动生成语法分析器程序,实际上可用于所有常见的操作系统。Bison把LALR形式的上下文无关文法描述转换为可做语法分析的C或C++程序。
cmake:CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。CMake 可以编译源代码、制作程序库、产生适配器(wrapper)、还可以用任意的顺序建构执行档。

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #安装目录
-DMYSQL UNIX ADDR=/usr/local/mysql/mysql.sock \ #指定套接字文件的存储路径--DSYSCONFDIR=/etc \ #配置my.cnf的目录
-DSYSTEMD PID DIR=/usr/local/mysql \ #主服务进程所在路径
-DDEFAULT CHARSET=utf8 \ #默认字符集
-DDEFAULT COLLAT ION=utf8 general ci \ #默认编码
-DWITH INNOBASE STORAGE ENGINE=1 \ #启用INNODB引擎
-DWITH ARCHIVE STORAGE ENGINE=1\ #启用ARCHIVE引擎
-DWITH BLACKHOLE STORAGE ENGINE=1 \ # 启用BLACKHOLE引擎
-DWITH PERFSCHEMA STORAGE ENGINE=1\ #启用perfschema引擎
存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。--DMYSQL DATADIR=/usr/local/mysql/data\ #数据存储路径
-DWITH BOOST=boost \ #boost库是为C++语言标准库提供扩展的一些C++程序库的总称
-DWITH SYSTEMD=1 #-DWITH_SYSTEMD=1这是MySQL 5.7原生支持Systemd的选项,如果要是用systemctl启动,就必须开启。

配置文件

[root@server1 ~]# vi /etc/my.cnf
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysql.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1 #每个库的id必须不一样

sql_mode=NO_ENGINE_SUBSTITUTION, STRICT_TRANS_TABLES,NO_ AUTO_CREATE_USER,NO_AUTO_VALUE_ON_LERO,N0O_ZERO_IN DATE,NO_ZERO DATE, ERROR FOR DIVISION BY ZERO, PIPES AS CONCAT, ANSI QUOTES
NO_ENGINE _SUBSTITUTION
在开启该MODE的情况下,在创建表时,如果指定的存储引擎不存在或不支持,则会直接提示“ERROR”。
STRICT_TRANS_TABLES:严格模式,进行数据的严格校验,错误数据不能插入,报error错误。
NO_AUTO_CREATE_USER: MODE禁止的只是不带“identified by”子句的grant语句,对于带有“identified by”子句的grant语句,其并不会禁止。
NO_AUTO_VALUE_ON_ZERO:该值影响自增长列的插入。默认情况下,在对自增主键插入NULL或0时,会自动生成下一个值。若开启该MODE,当插入0时,并不会自动生成下一个值。
NO_ZERO_ IN_ DATE:NO_ZERO_IN DATE针对的是年不为0。
NO ZERO DATE:该MODE会影响’0000-00-00’的插入。实际效果还取决于是否开启严格模式。在开启严格模式,且同时开启该MODE,是不允许’0000-00-00’插入的。
ERROR_FOR DIVISION_BY_ZERO:在INSERT或IUPDATE过程中,如果数据被零除,则产生错误而非警告。如果未给出该模式,那么数据被零除时MySQL返回NULL。
PIPES_AS _CONCAT:将"||"视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似。
ANSI_QUOTES:启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符。https://www.cnblogs.com/liang545621/p/12606231.html

初始化

无论你是编译安装,二进制安装,还是yum、rpm,装完mysql都是要初始化才能用。

[root@server1 mysql]# bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
###或###
[root@server1 ~]# mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

初始化密码

[root@server1 ~]# mysqladmin -uroot -p password 'abc123' #重设密码为abc123
Enter password:  #初始密码为空,直接回车
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
[root@server1 ~]# mysql -uroot -p
Enter password: abc123 #(输入刚设置好的密码,此处输入的字符不显示)
Welcome to the MySQL monitor.  Commands end with ; or \g.
………………
mysql> 

登录mysql

[root@server1 ~]# mysql -uroot -p123456
###或###
[root@server1 ~]# mysql -uroot -p
Enter password: 123456 #(此处不显示)

修改mysql密码

方法1:用SET PASSWORD命令

[root@server1 ~]# mysql -uroot -p
mysql> set password for root@localhost = password('123');
Query OK, 0 rows affected, 1 warning (0.00 sec)

可简写

mysql> set password=password('123456');
Query OK, 0 rows affected, 1 warning (0.00 sec)

方法2:用mysqladmin

[root@server1 ~]# mysqladmin -uroot -p123456 password 123
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

方法3:用UPDATE直接编辑user表

[root@server1 ~]# mysql -uroot -p #首先登录MySQL
 and host='localhost';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1

mysql> flush privileges; #数据库刷新
Query OK, 0 rows affected (0.00 sec)

php

依赖包

libjpeg libjpeg-devel:jpeg图像压缩库
libpng libpng-devel:png图像压缩库
freetype freetype-devel:字体引擎,统一的接口访问多种字体格式文件
libxml2 libxml2-devel:xml程序库,用来对xml文件进行解析
zlib zlib-devel:数据压缩用的函式库,可相当轻松的通过把压缩数据写入到有gzip头的文件中
curl curl-devel:利用URL规则在命令行下工作的文件传输工具
openssl openssl-devel:OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。

php配置选项

./configure \
--prefix=/usr/local/php \ #安装路径
--with-apxs2=/usr/local/httpd/bin/apxs \ #让apache支持php
--with-mysql-sock=/usr/local/mysql/mysql.sock \ #指明mysql的套接字路径
--with-mysqli \ #调用MySQL的存储过程、处理MySQL事务,而且还可以使功问数据库工作变得更加稳定
--with-zlib \ #打开zlib函式库
--with-curl \ #调用curl规则
--with-gd \ #打开gd库,gd库是为了创建新图像或处理已有的图像
--with- jpeg-dir \ #让gd库支持jpeg格式
--with-png-dir \ #让gd库支持png格式
--with-freetype-dir \ #打开字体引擎
--with-openssl \ #打开ssl安全套接字功能
--enable-mbstring \ #开启mbstring扩展,有了这个功能可设置其支持utf-8编码
--enable-xml \ #支持XML文件格式
--enable-session \ #开启会话保持功能
--enable-ftp \ #开启ftp扩展
--enable-pdo \ #PDO作用是统一各种数据库的访问接口
--enable-tokenizer \ #分词器,Tokenizer实际上只是生成了一个字典,并且统计了词频等信息
--enable-zip#打开对zip文件的支持

php配置文件中内容

cp php. ini-development /usr/local/php/lib/php.ini
vi /usr/ local/php/lib/php.ini
mysqli. default_socket = /usr/local/mysql/mysql.sock #当访问php文件时,将后台数据库指向该路径,怎么连接
date.timezone = Asia/Shanghai #时区设定

apache配置文件中的内容

vi /etc/httpd.conf #搜索php,有就成功,添加php的应用,让apache可以支持php功能

AddType application/x-httpd-php .php #添加
AddType application/x-httpd-php-source .phps #添加

DirectoryIndex index.php index.html #中间添加php主页,访问顺序变为优先访问index.php

phpmyadmin的使用

unzip phpMyAdmin-4.7.6-all-languages.zip -d /opt/#解压缩文件
cd /opt/
mv phpMyAdmin-4.7.6-all-languages /usr/local/httpd/htdocs/myadm #将被解压的文件移动到指定目录下
#这个phpmyadmin是让我们利用php网页去管理后台数据库的一个工具
apache可以独立使用,当要支持动态网页时,这个时候我们选择了php语言来作为动态网页的语言,因为是动态网页,所以需要mysql数据库的支持,而php是一种网页的文件,没办法在网页网站里面直接访问,因此需要在安装过程中添加一些模块,而安装好的php也作为一种apache的功能扩展放进apche的配置文件中,让apache的网页网站来支持php动态网页,因此当访问apache时也可访问php动态网页。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值