一、实验要求
源码部署LAMP环境。
二、实验环境
web服务器IP为192.168.189.128,通过源码包进行安装,网站为WordPress。
软件的版本分别为:
apr-1.5.2
apr-util-1.5.4
httpd-2.4.37
mysql-5.6.31
php-7.2.17
wordpress-4.7.3
三、实验具体步骤
1.修改主机名
[root@jiangfeng2 src]# vim /etc/sysconfig/network NETWORKING=yes HOSTNAME=web.jiangfeng.cc
2.主机名和IP进行绑定
[root@jiangfeng2 src]# vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.189.128 web.jiangfeng.cc
3.安装依赖包
//开发工具包 [root@web ~]# yum groupinstall "Development tools" -y //桌面开发工具包(图形化相关包) [root@web ~]# yum groupinstall "Desktop Platform Development" -y //其他依赖包 [root@web ~]# yum install cmake pcre-devel ncurses-devel openssl-devel libcurl-devel -y
4.编译安装MySQL
1)创建mysql用户
[root@web ~]# useradd -r -s /sbin/nologin mysql [root@web ~]# tail -1 /etc/passwd mysql:x:498:498::/home/mysql:/sbin/nologin
2)解压软件并进入解压目录
[root@web ~]# cd /usr/local/src/ [root@web src]# tar -zxf mysql-5.6.31.tar.gz [root@web src]# cd mysql-5.6.31 [root@web mysql-5.6.31]# pwd /usr/local/src/mysql-5.6.31
3)根据需求对mysql进行配置
[root@web mysql-5.6.31]# 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
注:如果怕输入的时候出现问题,可以把这部分代码编写成脚本通过脚本执行。
相关参数的说明:
参数说明: 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
4)进行编译安装
make && make install
5)后续配置
//更改数据目录权限 [root@web ~]# chown -R mysql.mysql /usr/local/mysql/ //清空环境 [root@web ~]# rm -f /etc/my.cnf [root@web ~]# cd /usr/local/mysql/ //初始化数据库 [root@web mysql]# ./scripts/mysql_install_db --user=mysql ………… New default config file was created as ./my.cnf and will be used by default by the server when you start it. You may edit this file to change server settings //查看上个操作的返回值是否报错 [root@web mysql]# echo $? 0
//拷贝启动脚本 [root@web mysql]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql //启动服务前查看端口是否被占用 [root@web mysql]# netstat -nltp |grep 3306 //启动服务 [root@web mysql]# service mysql start Starting MySQL.. SUCCESS! //设置数据库root密码 [root@web mysql]# /usr/local/mysql/bin/mysqladmin -u root password '123' Warning: Using a password on the command line interface can be insecure. //在环境变量中添加mysql相关启动软件 [root@web mysql]# echo 'export PATH=/usr/local/mysql/bin:$PATH' >>/etc/profile [root@web mysql]# . /etc/profile
5.编译安装Apache
1)安装依赖包apr和apr-util
注:两个压缩包在同一个目录 安装apr和apr-util软件: [root@web ~]# tar xf apr-1.5.2.tar.bz2 [root@web ~]# cd apr-1.5.2 [root@web ~]# ./configure [root@web ~]# make && make install [root@web ~]# cd ../ [root@web ~]# tar xf apr-util-1.5.4.tar.bz2 [root@web ~]# cd apr-util-1.5.4/ [root@web ~]# ./configure --with-apr=/usr/local/apr/bin/apr-1-config //指定软件apr的路径 [root@web ~]# make && make install
把apr放入动态链接库中 [root@web php-7.2.17]# echo "/usr/local/apr/lib/" >>/etc/ld.so.conf [root@web php-7.2.17]# ldconfing
2)根据需求安装httpd
[root@web src]# tar -jxf httpd-2.4.37.tar.bz2 [root@web src]# cd httpd-2.4.37 [root@web httpd-2.4.37]# ./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
参数的解释:
--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(最优) 事件驱动模型,多进程模型,每个进程响应多个请求
3)编译并安装
make && make install
6.编译安装PHP
[root@web src]# tar Jxf php-7.2.17.tar.xz [root@web src]# cd php-7.2.17 [root@web src]# ./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@web src]# make && make install
相关参数的解释
--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 #哈希运算
7.配置Apache和php联系
1. 修改apache主配置文件 [root@web ~]# vim /usr/local/apache2/conf/httpd.conf #配置语言支持 LoadModule negotiation_module modules/mod_negotiation.so //此模块打开注释 Include conf/extra/httpd-languages.conf //打开此选项,扩展配置文件就生效了 ... //对虚拟主机的支持,后续再打开 #Include conf/extra/httpd-vhosts.conf 加载php模块解析php页面,添加两行,告诉httpd把.php文件交给模块去编译 LoadModule php7_module modules/libphp7.so //找到这一句,在这句下面加上两句 AddHandler php7-script .php AddType text/html .php //默认主页加上index.php,并放在index.html前,支持php的首页文件 <IfModule dir_module> DirectoryIndex index.php index.html </IfModule> 注意:默认的网站目录是:/usr/local/apache2/htdocs/ 2. 修改apache的子配置文件,优先支持中文 [root@web ~]# vim /usr/local/apache2/conf/extra/httpd-languages.conf DefaultLanguage zh-CN //打开注释,默认语言集改为中文 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 写到前面
8.部署web应用
[root@web ~]# mkdir /www/myblog -p [root@web ~]# tar -zxf /usr/local/src/wordpress-4.7.3-zh_CN.tar.gz -C /www/myblog/ [root@web ~]# chown -R daemon:daemon /www/myblog [root@web ~]# cd /usr/local/apache2/conf/ //打开加载虚拟主机配置文件 [root@web ~]# vim /usr/local/apache2/conf/httpd.conf # Virtual hosts Include conf/extra/httpd-vhosts.conf //子配置文件目录里修改虚拟主机配置文件 vim /usr/local/apache2/conf/extra/httpd-vhosts.conf <VirtualHost *:80> ServerAdmin webmaster@dummy-host2.example.com DocumentRoot "/www/myblog" ServerName web.jiangfeng.cc ErrorLog "logs/myblog-error_log" CustomLog "logs/myblog-access_log" common </VirtualHost> <Directory "/www/myblog"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> 网站连接后台数据库配置 mysql -p Enter password: mysql> create database myblog default charset utf8; //创建myblog库来存放wordpress的数据
9.测试
在windows的hosts配置文件中绑定web服务器的域名
在C:\Windows\System32\drivers\etc目录下的hosts文件中追加如下内容
192.168.189.128 www.jiangfeng.cc
在浏览器中输入网址
四、拓展实验:一台主机部署两个应用
1.更改/usr/local/apache2/conf/extra/httpd-vhosts.conf配置文件
[root@web ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf <VirtualHost *:80> ServerAdmin webmaster@dummy-host2.example.com DocumentRoot "/www/phpmyadmin" ServerName www.php.cc ErrorLog "logs/myblog-error_log" CustomLog "logs/myblog-access_log" common </VirtualHost> <Directory "/www/phpmyadmin"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>
2.把你的网站内容放入相应的目录下
[root@web src]# cp -a phpMyAdmin-4.8.5-all-languages /www/phpmyadmin/