lamp

介绍
LAMP指的是协同工作的一整套系统和相关软件,能够静态提供Web站点服务及其应用开发环境
L=Linux,A=Apache,M=MySQL,P=PHP;
Linux作为LAMP的基础环境;Apache作为LAMP架构的前端;MySQL作为LAMP架构的后端
部署环境
主机名:cong11 IP地址:192.168.1.4 mysql
主机名:cong12 IP地址:192.168.1.6 Linux+Apache+PHP

[root@cong11 ~]# yum -y remove mysql mariadb boost-*
[root@cong11]# ls
lamp
[root@cong11 ~]# tar -jxvf boost_1_68_0.tar.bz2 -C /usr/local/src/
[root@cong11 ~]#tar -zxvf mysql-5.7.26.tar.gz -C /usr/local/src/
安装yum源
[root@cong11~]# vim /etc/yum.repos.d/lihuashi.repo
[root@cong11 ~]# vim /etc/yum.repos.d/lihuashi.repo
[linux]
name=centos7
baseurl=file:///ios # YUM仓库目录
enabled=1 # 是否启用YUM源,1为启用,0禁用
gpgcheck=0 # 不开启秘钥检测
[root@cong11 ~]# mount /dev/cdrom /ios/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@cong11 ~]# yum install -y cmake make gcc gcc-c++ bison ncurses ncurses-dev # 安装依赖包
安装mysql
创建工作用户
[root@cong11 ~]# useradd -M -s /usr/sbin/nologin -r mysql
-M:不创建宿主目录
-s:指定登录时的bash,’/usr/sbin/nologin’表示不允许登录到系统
-r:创建系统用户,会将UID指向499~1000之间
[root@cong11 ~]# id mysql
uid=997(mysql) gid=1001(mysql) 组=1001(mysql)
创建工作目录
[root@cong11 ~]# mkdir -p /data/mysql/{data,log}
[root@cong11 ~]# chown -R mysql:mysql /data/mysql
编译安装
[root@cong11 ~]# cd /usr/local/src/mysql-5.7.26/ # 切换至MySQL源码包解包目录
[root@cong11 mysql-5.7.26]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql

-DMYSQL_DATADIR=/data/mysql/data
-DSYSCONFDIR=/etc
-DWITH_MYISAM_STORAGE_ENGINE=1
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_MEMORY_STORAGE_ENGINE=1
-DWITH_READLINE=1
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock
-DMYSQL_TCP_PORT=3306
-DENABLED_LOCAL_INFILE=1
-DWITH_PARTITION_STORAGE_ENGINE=1
-DEXTRA_CHARSETS=all
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DDOWNLOAD_BOOST=1
-DWITH_BOOST=/root/boost_1_59_0
各参数解释:

DCMAKE_INSTALL_PREFIX:指定MySQL程序的安装目录,默认/usr/local/mysql
DEFAULT_CHARSET:指定服务器默认字符集,默认latin1
DEFAULT_COLLATION:指定服务器默认的校对规则,默认latin1_general_ci
ENABLED_LOCAL_INFILE:指定是否允许本地执行LOAD DATA INFILE,默认OFF
WITH_COMMENT:指定编译备注信息
WITH_xxx_STORAGE_ENGINE:指定静态编译到mysql的存储引擎,MyISAM, MERGE,MEMBER以及CSV四种引擎默认即被编译至服务器,不需要特别指定。
WITHOUT_xxx_STORAGE_ENGINE:指定不编译的存储引擎
SYSCONFDIR:初始化参数文件目录
MYSQL_DATADIR:数据文件目录
MYSQL_TCP_PORT:服务端口号,默认3306
MYSQL_UNIX_ADDR:socket文件路径,默认/tmp/mysql.sock
[root@cong11 mysql-5.7.26]# echo $? # 查看错误返回状态
[root@cong11 mysql-5.7.26]# make -j 4 && make install
修改mysql目录权限
[root@cong11 mysql-5.7.26]# chown -R mysql:mysql /usr/local/mysql/
生成my.cnf配置文件
[root@cong11 ~]# mv /etc/my.cnf{,.bak}
创建my.cnf配置文件
[root@cong11 ~]# vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql #mysql安装目录
datadir=/data/mysql/data #mysql数据存放目录
port=3306 #mysql监听端口
socket=/usr/local/mysql/mysql.sock #mysql.sock文件存放目录
symbolic-links=0 #关闭mysql的符号链接
character-set-server=utf8 #指定mysql的字符集为utf8
log-error=/data/mysql/log/mysqld.log #指定mysql的错误日志存放路径
pid-file=/usr/local/mysql/mysqld.pid #mysql的pid文件存放目录
生成服务启动脚本
[root@cong11 ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@cong11 ~]# chmod +x /etc/init.d/mysqld #给脚本添加执行权限
添加mysqlpid开机自启
[root@cong11 ~]# chkconfig --add mysqld #把mysql添加到系统服务
[root@cong11 ~]# chkconfig mysqld on #把mysql添加到开机自启动
[root@cong11 ~]# chkconfig --list mysqld #查看mysql开机自启动状态
lamp
如果无法初始化先启动mysql
[root@cong11 ~]# /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql
--basedir=/usr/local/mysql --datadir=/data/mysql/data
启动服务
[root@cong11 ~]# /etc/init.d/mysqld start
lamp
添加path路径
[root@cong11 ~]# vim /etc/profile 添加下面2行 在文件的结尾
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin
lamp
使修改生效
[root@cong11 ~]# source /etc/profile
或者
[root@cong11 ~]# ln -s /usr/local/mysql/bin/* /usr/local/bin/
修改mysql密码
[root@cong11 ~]# mysqladmin -u root password "123456"
或者登陆到mysql修改密码
[root@cong11 ~]# mysql
mysql> set password for 'root'@'localhost'=password('123456');
登录mysql
[root@cong11 ~]# mysql -uroot -p123456
mysql> show databases;
lamp
安装apache
安装依赖包
[root@cong12 ~]# yum -y remove httpd
[root@cong12 ~]# ls
lamp
[root@cong12 ~]# tar -zxvf apr-1.5.2.tar.gz -C /usr/local/src/ # 解包
[root@cong12 ~]# cd /usr/local/src/apr-1.5.2/
[root@cong12 ~]# ./configure --prefix=/usr/local/apr # 编译
[root@cong12 ~]# vim configure
29605行 RM='$RM' 修改为 RM='$RM -f'
lamp
[root@cong12 ~]# make && make install
[root@cong12 apr-1.5.2]# echo $?
0
解压依赖包apr-util-1.5.4.tar.gz
[root@cong12 ~]tar -zxvf apr-util-1.5.4.tar.gz -C /usr/local/src/
[root@cong12 apr-util-1.5.4]# ./configure --prefix=/usr/local/apr-util/ --with-apr=/usr/local/apr/bin/apr-1-config
[root@cong12 apr-util-1.5.4]# make && make install # 安装
[root@cong12 apr-util-1.5.4]# echo $?
0
安装_pcre-8.41.tar.gz
解压
[root@cong12 ~]tar zxf pcre-8.41.tar.gz
预编译,指定安装目录
[root@cong12 pcre-8.41]# ./configure --prefix=/usr/local/pcre
[root@cong12 pcre-8.41]# echo $?
0
编译安装
[root@cong12 pcre-8.41]make && make install

安装_ httpd-2.4.38
[root@cong12 ~]# tar -zxvf httpd-2.4.38.tar.gz -C /usr/local/src/
[root@cong12 ~]# cd /usr/local/src/httpd-2.4.38/
[root@cong12 ~]# yum -y install openssl-devel # 需要安装关于openssl-devel依赖包
[root@cong12 ~]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-ssl --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --with-pcre=/usr/local/pcre/ --enable-charset-lite --enable-cgi --enable-mpms-shared=all --enable-mpm-with=event--enable-ssl --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/
各参数含义:
--prefix=:指定安装目录
--enable-so:支持动态加载模块
--enable-rewrite :支持网站地址重写
--enable-cgi:支持CGI程序脚本
--enable-ssl:支持SSL加密
--with-apr=/usr/local/apr #关联apr
--with-apr-util=/usr/local/apr-util #关联apr-util
--with-pcre=/usr/local/pcre #关联pcre
--enable-charset-lite:支持多语言编码
--enable-mpms-shared=all:安装apache所有运行模式模块(多线程多进程模块)
[root@cong12 ~]# echo $?
0
[root@cong12 ~]# make && make install

修改主配置文件
[root@cong12 ~]vim /usr/local/httpd/conf/httpd.conf
将ServerName www.example.com:80修改为ServerName localhost:80
查看网站根目录
ls /usr/local/httpd/htdocs/
index.html
设置Apache启动脚本
[root@cong12 ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@cong12 ~]# vim /etc/init.d/httpd #添加以下两行,设置chkconfig自启动
#!/bin/sh
chkconfig: 2345 11 88
#despriction: web site
[root@cong12 ~]chmod +x /etc/init.d/httpd #添加执行权限
[root@cong12 ~]# chkconfig --add httpd #添加为系统服务
[root@cong12 ~]# chkconfig httpd on # 添加开机自启
[root@cong12 ~]# chkconfig --list httpd # 查看
lamp
[root@cong12 ~]# systemctl start httpd
[root@cong12 ~]# systemctl status httpd
httpd.service - SYSV: Apache Server
Loaded: loaded (/etc/rc.d/init.d/httpd; bad; vendor preset: disabled)
Active: active (running) since 五 2019-07-05 19:55:37 CST; 2s ago
[root@cong12 ~]# ln -s /usr/local/httpd/bin/* /usr/bin/ # 创建软链接

安装PHP
安装依赖包
[root@cong12 ~]yum -y install php-mcrypt libmcrypt libmcrypt-devel autoconf freetype gd libmcrypt libpng libpng-devel libjpeg libxml2 libxml2-devel zlib curl curl-devel re2c libmcrypt-devel freetype-devel libjpeg-devel bzip2-devel
上传libmcrypt包
lamp
解压编译安装
[root@cong12 ~]# tar zxf libmcrypt-2.5.7.tar.gz
[root@cong12 ~]# cd libmcrypt-2.5.7
[root@cong12 libmcrypt-2.5.7]# ./configure --prefix=/usr/local/libmcrypt && make && make install
[root@cong12 libmcrypt-2.5.7]# echo $? 查看执行命令
0

安装php
上传软件包
lamp
[root@cong12 ~]# tar -zxvf php-5.6.36.tar.gz -C /usr/local/src/
[root@cong12 php-5.6.36]# pwd
/usr/local/src/php-5.6.36
[root@cong12 php-5.6.36]# ./configure --prefix=/usr/local/php5.6 --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-fpm --enable-sockets --enable-sysvshm --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --with-mhash --with-mcrypt=/usr/local/libmcrypt --with-config-file-path=/usr/local/php5.6/etc --with-config-file-scan-dir=/usr/local/php5.6/etc/ --with-bz2 --enable-maintainer-zts --with-apxs2=/usr/local/httpd/bin/apxs
相关选项的解释:
--prefix=/usr/local/php5.6 //安装位置
--with-mysql=mysqlnd //支持mysql
--with-pdo-mysql=mysqlnd //支持pdo模块
--with-mysqli=mysqlnd //支持mysqli模块
注:上面的三选项的作用:数据库与php不在一个服务器上,指定此种方式,安装数据库连接驱动
--with-apxs2 #将php编译为Apache的一个模块进行使用
--enable-mbstring #多字节字符串的支持
--with-curl #支持cURL
--with-gd #支持gd库
--enable-fpm #支持构建fpm
--with-config-file-path #设置配置文件路径
--with-openssl #支持openssl模块
--enable-fpm #支持fpm模式
--enable-sockets #启用socket支持
--enable-sysvshm #启用系统共享内存支持
--enable-mbstring #多字节字串、像我们的中文就是多字节字串
--with-freetype-dir #支持freetype、就要装freetype-devel、跟字体相关的、字体解析工具
--with-jpeg-dir
--with-png-dir
注:上面的二选项的作用:处理jpeg、png图片的、php可以动态生成jpeg图片
--with-zlib #是个压缩库、在互联网传输时用来压缩传输的
--with-libxml-dir=/usr #这个libxml是用来解析xml的、指定/usr下
--enable-xml #支持xml的
--with-mhash #支持mhash
--with-mcrypt=/usr/local/libmcrypt #libmcrypt-devel这个程序包所指定的
--with-config-file-path=/usr/local/php5.6/etc #指定配置文件的存放路径的
--with-config-file-scan-dir=/usr/local/php5.6/etc #配置文件扫描路径
--with-bz2 #支持BZip2
--enable-maintainer-zts
为了支持apache的worker或event这两个MPM,编译时使用了--enable-maintainer-zts选项
如果使用PHP5.3以上版本,为了链接MySQL数据库,可以指定mysqlnd,这样在本机就不需要先安装MySQL或MySQL开发包了。mysqlnd从php 5.3开始可用,可以编译时绑定到它(而不用和具体的MySQL客户端库绑定形成依赖),但从PHP 5.4开始它就是默认设置了。

[root@cong12 php-5.6.36]# echo $?
0
[root@cong12 php-5.6.36]# make && make install
生成配置文件
[root@cong12 php-5.6.36]# cp php.ini-production /usr/local/php5.6/etc/php.ini

添加Apache模块支持
[root@cong12 ~]#vim /usr/local/httpd/conf/httpd.conf
DirectoryIndex index.php index.html #265添加index.php
AddType application/x-httpd-php .php .phtml

创建测试页面
[root@cong12 ~]vim /usr/local/httpd/htdocs/index.php #PHP测试页面
<?php
phpinfo();
?>
[root@cong12 ~]# vim /usr/local/httpd/htdocs/test.php #MySQL连接测试页面
<?php
$link=mysql_connect('192.168.1.4','test','123456');
if ($link)echo "connection success......";
mysql_close();

创建mysql测试账号
[root@cong11 ~]#mysql -u root -p123456
mysql> grant all on . to test@'192.168.1.%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
重启服务
[root@cong12 ~]#systemctl restart httpd
测试php 192.168.1.6
lamp
测试mysql网页192.168.1.6/test.php
lamp