环境准备
系统环境:CentOS 7
1、配置IP地址(关闭NetworkManager) 192.168.192.144
2、关闭防火墙、SELinux
3、配置YUM源(有网配公网,没网配光盘或自建YUM源)
(使用光盘的话,需要先挂载)
软件环境:AMP(Apache、MySQL以及PHP)
Apache——>2.4.37(2.2与2.4)
MySQL——>5.6.31(5.5、5.6与5.7)
PHP——>7.2.17(5.2、5.4、5.6、7.0、7.1、7.2)
依赖软件安装
yum install cmake pcre-devel ncurses-devel openssl-devel libcurl-devel
AMP软件安装注意事项
三者之间的关系
编译安装顺序:
Linux+Apache(2.4)+MySQL(5.6.31)+PHP(7.2.17)
Apache——>MySQL——>PHP 或者 MySQL——>Apache——>PHP
编译安装MySQL软件
安装需求
软件版本 | 安装目录 | 数据目录 | 端口 |
mysql-5.6.31 | /usr/local/mysql | /usr/local/mysql/data | 3306 |
MySQL安装详解
第一步:创建一个mysql系统账号(没有这个账号mysql无法运行)
[root@CentOS7 ~]# useradd -r -s /sbin/nologin mysql
[root@CentOS7 ~]# id mysql
uid=987(mysql) gid=981(mysql) groups=981(mysql)
第二步:上传软件并进行解压
[root@CentOS7 ~]# ls
apr-util-1.5.4.tar.bz2 php-7.2.17.tar.xz apr-1.5.2.tar.bz2
httpd-2.4.37.tar.bz2 mysql-5.6.31.tar.gz
[root@CentOS7 ~]# tar xf mysql-5.6.31.tar.gz -C /usr/src
[root@CentOS7 ~]# cd /usr/src
[root@CentOS7 src]# ls
debug kernels mysql-5.6.31
[root@CentOS7 src]# cd mysql-5.6.31/
[root@CentOS7 mysql-5.6.31]# ls
BUILD configure.cmake include man README storage vio
client COPYING INSTALL mysql-test regex strings win
cmake dbug libevent mysys scripts support-files zlib
CMakeLists.txt Docs libmysql mysys_ssl sql tests
cmd-line-utils Doxyfile-perfschema libmysqld packaging sql-bench unittest
config.h.cmake extra libservices plugin sql-common VERSION
第三步:使用cmake配置MySQL的安装向导
[root@CentOS7 mysql-5.6.31]# vim cmake.sh
[root@CentOS7 mysql-5.6.31]# cat cmake.sh
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DMYSQL_TCP_PORT=3306 \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DMYSQL_USER=mysql
[root@CentOS7 mysql-5.6.31]# chmod +x cmake.sh
[root@CentOS7 mysql-5.6.31]# ./cmake.sh
参数说明:
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ \ 安装路径
-DMYSQL_DATADIR=/usr/local/mysql/data \ 数据目录
-DENABLED_LOCAL_INFILE=1 \ 开启加载外部文件功能;1开启,0关闭
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ 将InnoDB存储引擎静态编译到服务器
-DMYSQL_TCP_PORT=3306 \ 端口
-DDEFAULT_CHARSET=utf8mb4 \ 字符集
-DDEFAULT_COLLATION=utf8_general_ci \ 字符校验规则
-DWITH_EXTRA_CHARSETS=all \ 扩展字符集
-DMYSQL_USER=mysql 用户身份mysql
第四步:编译安装
[root@CentOS7 mysql-5.6.31]# make && make install
第五步:更改目录权限以及初始化数据库
[root@CentOS7 mysql-5.6.31]# cd /usr/local/mysql/
[root@CentOS7 mysql]# chown -R mysql.mysql /usr/local/mysql
[root@CentOS7 mysql]# ll
total 44
drwxr-xr-x 2 mysql mysql 4096 May 13 19:32 bin
-rw-r--r-- 1 mysql mysql 17987 May 17 2016 COPYING
drwxr-xr-x 3 mysql mysql 18 May 13 19:32 data
...
drwxr-xr-x 4 mysql mysql 4096 May 13 19:32 sql-bench
drwxr-xr-x 2 mysql mysql 136 May 13 19:32 support-files
[root@CentOS7 mysql-5.6.31]# cd /usr/local/mysql/
删除/etc/my.cnf文件,如果不删除此文件,会导致初始化失败
[root@CentOS7 mysql]# rm -f /etc/my.cnf
初始化就是给mysql数据库一些初始化的数据(如账号、密码、数据文件)
[root@CentOS7 mysql]# ./scripts/mysql_install_db --user=mysql
这个目录如果产生了一个mysql的文件夹就代表初始化成功了
[root@CentOS7 mysql]# ll data/
total 110600
-rw-rw---- 1 mysql mysql 12582912 May 13 19:51 ibdata1
-rw-rw---- 1 mysql mysql 50331648 May 13 19:51 ib_logfile0
-rw-rw---- 1 mysql mysql 50331648 May 13 19:51 ib_logfile1
drwx------ 2 mysql mysql 4096 May 13 19:51 mysql
drwx------ 2 mysql mysql 4096 May 13 19:51 performance_schema
drwxr-xr-x 2 mysql mysql 20 May 13 19:32 test
第六步:把mysql的启动脚本copy到/etc/init.d目录下,起一个名称叫做mysql
[root@CentOS7 mysql]# cp support-files/mysql.server /etc/init.d/mysql
[root@CentOS7 mysql]# service mysql start
Starting MySQL. SUCCESS!
以后启动mysql只需要使用 service mysql start 命令
第七步:设置密码与环境变量
[root@CentOS7 mysql]# cd /usr/local/mysql/
[root@CentOS7 mysql]# bin/mysqladmin -u root password '123'
第八步:把/usr/local/mysql/bin目录添加到环境变量
[root@CentOS7 mysql]# echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile
[root@CentOS7 mysql]# source /etc/profile
验证:
[root@CentOS7 mysql]# cd ~
[root@CentOS7 ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.6.31 Source distribution
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> exit
编译安装Apache软件
源码安装依赖软件apr
安装apr软件:
[root@CentOS7 ~]# tar xf apr-1.5.2.tar.bz2 -C /usr/src/
[root@CentOS7 ~]# cd /usr/src/
[root@CentOS7 src]# ls
apr-1.5.2 debug kernels mysql-5.6.31
[root@CentOS7 src]# cd apr-1.5.2/
[root@CentOS7 apr-1.5.2]# ./configure && make && make install
[root@CentOS7 apr-1.5.2]# cd /usr/local/
[root@CentOS7 local]# ls
apr bin etc games include lib lib64 libexec mysql sbin share src
安装apr-util软件:
[root@CentOS7 ~]# tar xf apr-util-1.5.4.tar.bz2 -C /usr/src/
[root@CentOS7 ~]# cd /usr/src/
[root@CentOS7 src]# ls
apr-1.5.2 apr-util-1.5.4 debug kernels mysql-5.6.31
[root@CentOS7 src]# cd apr-util-1.5.4/
[root@CentOS7 apr-util-1.5.4]# ./configure --with-apr=/usr/local/apr/bin/apr-1-config
[root@CentOS7 apr-util-1.5.4]# make && make install
编译安装Apache软件(重点)
第一步:解压软件
如果原来使用了yum安装httpd,在源码包安装之前需要先卸载
yum remove httpd -y
[root@CentOS7 ~]# tar xf httpd-2.4.37.tar.bz2 -C /usr/src/
[root@CentOS7 ~]# cd /usr/src/
[root@CentOS7 src]# ls
apr-1.5.2 apr-util-1.5.4 debug httpd-2.4.37 kernels mysql-5.6.31
[root@CentOS7 src]# cd httpd-2.4.37/
第二步:编写apache.sh脚本进行软件安装
[root@CentOS7 httpd-2.4.37]# vim apache.sh
[root@CentOS7 httpd-2.4.37]# cat apache.sh
./configure \
--enable-modules=all \
--enable-mods-shared=all \
--enable-so \
--enable-rewrite \
--with-pcre \
--enable-ssl \
--with-mpm=prefork \
--with-apr=/usr/local/apr/bin/apr-1-config \
--with-apr-util=/usr/local/apr/bin/apu-1-config
参数说明:
apache默认啥功能都没有,必须通过模块的进行添加!
./configure
--enable-modules=all 加载所有支持模块
--enable-mods-shared=all 共享方式加载大部分常用的模块
--enable-so 启动动态模块加载功能
--enable-rewrite 启用url地址重写功能
--enable-ssl 编译ssl模块,支持https
--with-pcre 支持正则表达式
--with-apr=/usr/local/apr/bin/apr-1-config 指定依赖软件apr路径
--with-apr-util=/usr/local/apr/bin/apu-1-config
--with-mpm=prefork 插入式并行处理模块,称为多路处理模块,Prefork 是类UNIX平台上默认的MPM
(1)prefork
多进程模型,每个进程响应一个请求
(2)worker
多进程多线程模型,每个线程处理一个用户请求
(3)event(最优)
事件驱动模型,多进程模型,每个进程响应多个请求
第三步:给予x权限,然后make && make install
[root@CentOS7 httpd-2.4.37]# chmod +x apache.sh
[root@CentOS7 httpd-2.4.37]# ./apache.sh
[root@CentOS7 httpd-2.4.37]# make && make install
确认是否成功安装apache:
[root@CentOS7 httpd-2.4.37]# ls /usr/local/apache2/
bin build cgi-bin conf error htdocs icons include logs man manual modules
确认这个目录产生后,说明apache编译安装成功
第四步:运行Apache软件
[root@CentOS7 httpd-2.4.37]# cd /usr/local/apache2/
[root@CentOS7 apache2]# bin/apachectl
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 192.168.192.144. Set the 'ServerName' directive globally to suppress this message
httpd (pid 54210) already running
访问这台虚拟机:192.168.192.144
说明,安装成功
源码安装PHP软件
安装说明
第一步:对软件进行解压缩
[root@CentOS7 ~]# tar xf php-7.2.17.tar.xz -C /usr/src/
[root@CentOS7 ~]# cd /usr/src/
[root@CentOS7 src]# ls
apr-1.5.2 apr-util-1.5.4 debug httpd-2.4.37 kernels mysql-5.6.31 nginx-1.6.2 php-7.2.17
[root@CentOS7 src]# cd php-7.2.17/
第二步:对php源码进行一个配置
[root@CentOS7 php-7.2.17]# vim php.sh
[root@CentOS7 php-7.2.17]# cat php.sh
./configure \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-mysqli \
--with-pdo-mysql \
--with-zlib \
--with-curl \
--enable-zip \
--with-gd \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--enable-sockets \
--with-xmlrpc \
--enable-soap \
--enable-opcache \
--enable-mbstring \
--enable-mbregex \
--enable-pcntl \
--enable-shmop \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-calendar \
--enable-bcmath
[root@CentOS7 php-7.2.17]# chmod +x php.sh
[root@CentOS7 php-7.2.17]# ./php.sh
参数说明:
--with-apxs2=/usr/local/apache2/bin/apxs
指定apxs路径,apxs是一个为Apache HTTP服务器编译和安装扩展模块的工具
--with-mysql php7中已被废弃
--with-mysqli
--with-pdo-mysql
以上三个是php的扩展,用于连接mysql数据库的
--with-iconv-dir
--with-freetype-dir
--with-jpeg-dir
--with-png-dir
--with-gd
--with-zlib
--with-libxml-dir
这些都是在启用对某种文件的支持
--with-curl 和 --with-curlwrappers
用于支持 curl 函数,此函数允许你用不同的协议连接和沟通不同的服务器
--with-openssl,--with-mhash,--with-mcrypt
这都是和加密有关的参数,启用它们是为了让php可以更好的支持各种加密。
--enable-bcmath 高精度数学运算组件。
--enable-shmop和 --enable-sysvsem
使得你的PHP系统可以处理相关的IPC函数.IPC是一个Unix标准通讯机制,它提供了使得在同一台主机不同进程之间可以互相通讯的方法。
--enable-inline-optimization 栈堆指针和优化线程。
--enable-pcntl 多线程优化。
with-apxs2 调用apache加载模块支持PHP
gd 画图库
libiconv 字符变换转换
libmcrypt 字符加密
mcrypt 字符加密
mhash 哈希运算
第三步:解决PHP依赖关系
configure: error: freetype-config not found.
出现以上提示,代表php与其他软件存在依赖关系,需要安装依赖软件:
yum install libxml2-devel libjpeg-devel libpng-devel freetype-devel -y
第四步:编译+安装
[root@CentOS7 php-7.2.17]# make && make install
第五步:检查php有没有安装成功
[root@CentOS7 php-7.2.17]# ls /usr/local/apache2/modules/libphp7.so
/usr/local/apache2/modules/libphp7.so
确认有这个libphp7.so模块文件,就表示编译php成功
配置Apache与PHP
第一步:打开Apache的配置文件
vim /usr/local/apache2/conf/httpd.conf
在210行下添加(210 #ServerName www.example.com:80)
ServerName localhost:80
第二步:配置Apache语言支持(支持中文)
161行 LoadModule negotiation_module modules/mod_negotiation.so 此模块打开注释
485行 Include conf/extra/httpd-languages.conf 打开此选项,扩展配置文件就生效了
第三步:开启对PHP的支持
在168行下添加(168 LoadModule php7_module modules/libphp7.so)
AddHandler php7-script .php
AddType text/html .php
第四步:添加index.php默认首页
//默认主页加上index.php,并放在index.html前,支持php的首页文件
<IfModule dir_module>
271行 DirectoryIndex index.php index.html
</IfModule>
第五步:让Apache优先支持中文
vim /usr/local/apache2/conf/extra/httpd-languages.conf
19行 DefaultLanguage zh-CN 打开注释,默认语言集改为中文
78行 LanguagePriority zh-CN en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv tr zh-TW 语言集优先集,把zh-CN 写到前面
设置完成后,重启Apache软件
[root@CentOS7 php-7.2.17]# cd /usr/local/apache2/
[root@CentOS7 apache2]# bin/apachectl -k restart
备注:如果还不行,直接pkill httpd,然后bin/apachectl启动
编写php测试脚本
htdocs就是apache的默认项目目录
[root@CentOS7 php-7.2.17]# cd /usr/local/apache2/htdocs/
[root@CentOS7 htdocs]# ls
index.html
[root@CentOS7 htdocs]# rm -fr index.html
[root@CentOS7 htdocs]# vim index.php
[root@CentOS7 htdocs]# cat index.php
<?php
phpinfo();
?>
刚开始看不到效果,kill apache进程,重新启动
[root@CentOS7 htdocs]# pkill httpd
[root@CentOS7 htdocs]# cd ..
[root@CentOS7 apache2]# bin/apachectl -k start
httpd (pid 74053) already running
到此,LAMP源码编译安装就结束了!
使用LAMP部署Web项目
下载wordpress博客系统
wordpress-4.7.3-zh_CN.tar.gz
解压
[root@CentOS7 ~]# tar xf wordpress-4.7.3-zh_CN.tar.gz -C /usr/src/
[root@CentOS7 ~]# cd /usr/src/
[root@CentOS7 src]# ls
apr-1.5.2 debug kernels php-7.2.17
apr-util-1.5.4 httpd-2.4.37 mysql-5.6.31 wordpress
[root@CentOS7 src]# cd wordpress/
[root@CentOS7 wordpress]# ls
index.php wp-admin wp-content wp-load.php wp-signup.php
license.txt wp-blog-header.php wp-cron.php wp-login.php wp-trackback.php
readme.html wp-comments-post.php wp-includes wp-mail.php xmlrpc.php
wp-activate.php wp-config-sample.php wp-links-opml.php wp-settings.php
创建一个项目目录
[root@CentOS7 ~]# mkdir /www
[root@CentOS7 ~]# mv /usr/src/wordpress/ /www/blog
[root@CentOS7 ~]# ls /www/blog/
index.php wp-admin wp-content wp-load.php wp-signup.php
license.txt wp-blog-header.php wp-cron.php wp-login.php wp-trackback.php
readme.html wp-comments-post.php wp-includes wp-mail.php xmlrpc.php
wp-activate.php wp-config-sample.php wp-links-opml.php wp-settings.php
配置虚拟主机(一台服务器多个项目)
正常情况下:/usr/local/apache2/htdocs目录下(相当于/var/www/html)
一台服务器多个项目:使用虚拟主机
第一步:在httpd.conf配置文件中开启虚拟主机的配置文件
vim /usr/local/apache2/conf/httpd.conf
# Virtual hosts
496行 Include conf/extra/httpd-vhosts.conf //打开加载虚拟主机配置文件
第二步:在/usr/local/apache2/conf/extra/httpd-vhosts.conf定义项目
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
# wordpress
<VirtualHost *:80>
DocumentRoot "/www/blog"
ServerName www.blog.com
ErrorLog "logs/blog-error_log"
CustomLog "logs/blog-access_log" common
</VirtualHost>
第三步:更改数据文件权限
[root@CentOS7 ~]# chown -R daemon.daemon /www/blog/
在数据库中创建一个blog数据库
[root@CentOS7 ~]# mysql -uroot -p
Enter password: 123
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create database blog default charset utf8;
Query OK, 1 row affected (0.00 sec)
mysql> exit
重启Apache
[root@CentOS7 ~]# cd /usr/local/apache2/
[root@CentOS7 apache2]# bin/apachectl -k stop
下面的报错不影响本项目
AH00112: Warning: DocumentRoot [/usr/local/apache2/docs/dummy-host.example.com] does not exist
AH00112: Warning: DocumentRoot [/usr/local/apache2/docs/dummy-host2.example.com] does not exist
[root@CentOS7 apache2]# bin/apachectl
AH00112: Warning: DocumentRoot [/usr/local/apache2/docs/dummy-host.example.com] does not exist
AH00112: Warning: DocumentRoot [/usr/local/apache2/docs/dummy-host2.example.com] does not exist
在Windows中配置本地DNS
运行(Windows + R) => drivers + 回车:
C:\Windows\System32\drivers\etc\hosts
Windows的DNS文件 => 可以劫持域名,自定义域名指向
在该文件中添加下述一行:
192.168.192.144 www.blog.com
使用Google浏览器或Firefox浏览器安装博客
第一次访问:报403 Forbidden
原因:默认情况下,httpd不允许其他主机访问项目目录
解决方案:
vim /usr/local/apache2/conf/httpd.conf
220 <Directory />
221 AllowOverride none
222 Require all granted # 默认denied,改为granted
223 </Directory>
重启apache
cd /usr/local/apache2/
bin/apachectl -k stop
bin/apachectl
在 firefox 的地址栏中输入 www.blog.com
配置数据库:
安装博客:
运行结果:
前端
后台