Loading... <h1 id="lamp架构实验" style="font-size: 2.6em;margin: 1.2em 0px 0.6em;font-family: inherit;line-height: 1.1;color: inherit">LAMP架构实验</h1> <h3 id="基础架构搭建" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">— 基础架构搭建</h3> <hr /> <ul style="margin-bottom: 1.1em;line-height: 1.6" class=" list-paddingleft-2"> <li> <p>实验实验拓扑图与目的</p> </li> <li> <p>实验过程</p> </li> <li> <p>总结与问题</p> </li> </ul> <hr /> <h2 id="实验实验拓扑图与目的" style="font-family: inherit;line-height: 1.1;color: inherit;margin: 1.2em 0px 0.6em;font-size: 2.15em">实验实验拓扑图与目的</h2> <p><img src="//cto.wang/usr/uploads/2016/07/20160703164028-90.png" title="1462861769761843.png" alt="blob.png" /></p> <h5 id="1-实验主框架lamp采用编译安装" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1em">1. 实验主框架LAMP采用编译安装。</h5> <h5 id="2-分离httpdphpmariadb" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1em">2. 分离HTTPD,PHP,MARIADB。</h5> <h5 id="3-两台服务器能够各自被访问且内容相同" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1em">3. 两台服务器能够各自被访问且内容相同。</h5> <h2 id="实验过程" style="font-family: inherit;line-height: 1.1;color: inherit;margin: 1.2em 0px 0.6em;font-size: 2.15em">实验过程</h2> <h3 id="程序包准备" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">程序包准备:</h3> <pre class="prettyprint hljs-light"><code class="hljs css"><span style="line-height: 1.6;font-weight: bold">apr-1</span><span style="line-height: 1.6">.5</span><span style="line-height: 1.6">.2</span><span style="line-height: 1.6">.tar</span><span style="line-height: 1.6">.gz</span> <span style="line-height: 1.6;font-weight: bold">apr</span>是<span style="line-height: 1.6;font-weight: bold">apache</span>的运行库,提供了软件允许所需要的库文件。<br /><span style="line-height: 1.6;font-weight: bold">apr-util-1</span><span style="line-height: 1.6">.5</span><span style="line-height: 1.6">.4</span><span style="line-height: 1.6">.tar</span><span style="line-height: 1.6">.gz</span> 可以理解为<span style="line-height: 1.6;font-weight: bold">apr</span>的扩展,支持更加多的数据接口与封装接口。<br /><span style="line-height: 1.6;font-weight: bold">httpd-2</span><span style="line-height: 1.6">.4</span><span style="line-height: 1.6">.20</span><span style="line-height: 1.6">.tar</span><span style="line-height: 1.6">.bz2</span> <span style="line-height: 1.6;font-weight: bold">http</span>程序,2<span style="line-height: 1.6">.4</span>支持了众多新特性,最为主要的是<span style="line-height: 1.6;font-weight: bold">event</span>模型。<br /><span style="line-height: 1.6;font-weight: bold">mariadb-5</span><span style="line-height: 1.6">.6</span><span style="line-height: 1.6">.20</span><span style="line-height: 1.6">.tar</span><span style="line-height: 1.6">.gz</span> 完全开源的关系型数据库,是<span style="line-height: 1.6;font-weight: bold">mysql</span>的一个分支。<br /><span style="line-height: 1.6;font-weight: bold">php-5</span><span style="line-height: 1.6">.6</span><span style="line-height: 1.6">.20</span><span style="line-height: 1.6">.tar</span><span style="line-height: 1.6">.gz</span> <span style="line-height: 1.6;font-weight: bold">php</span>程序,负责解析动态请求。<br /><span style="line-height: 1.6;font-weight: bold">xcache-3</span><span style="line-height: 1.6">.2</span><span style="line-height: 1.6">.0</span><span style="line-height: 1.6">.tar</span><span style="line-height: 1.6">.gz</span> <span style="line-height: 1.6;font-weight: bold">PHP</span>的加速器程序,能够通过缓存来加速<span style="line-height: 1.6;font-weight: bold">PHP</span>。<br /><br /><span style="line-height: 1.6;font-weight: bold">phpMyAdmin-4</span><span style="line-height: 1.6">.6</span><span style="line-height: 1.6">.0-all-languages</span><span style="line-height: 1.6">.zip</span> 图形化数据库管理工具,基于<span style="line-height: 1.6;font-weight: bold">PHP</span>开发,可选。<br /><span style="line-height: 1.6;font-weight: bold">wordpress-4</span><span style="line-height: 1.6">.5</span><span style="line-height: 1.6">.zip</span> 基于<span style="line-height: 1.6;font-weight: bold">PHP</span>开发的开源的<span style="line-height: 1.6;font-weight: bold">blog</span>平台,可选。<br /><span style="line-height: 1.6;font-weight: bold">Discuz_X3</span><span style="line-height: 1.6">.1_SC_GBK</span><span style="line-height: 1.6">.zip</span> 基于<span style="line-height: 1.6;font-weight: bold">PHP</span>开发的论坛,可选。<br /></code></pre> <h3 id="软件" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">软件:</h3> <pre class="prettyprint hljs-light"><code class="hljs accesslog">[开发包组]<br />Development Tools 开发工具包<br /><br />[apache]<br />pcre-devel pcre正则表达式支持库<br />openssl-devel openssl开发包<br /><br />[PHP]<br />libxml2-devel xml的开发包<br />bzip2-devel bzip2的开发包<br />libmcrypt-devel 加密扩展开发包<br />mhash-devel mhash加密开发包<br /></code></pre> <h3 id="配置文件表" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">配置文件表:</h3> <p><img src="//cto.wang/usr/uploads/2016/07/20160703164028-80.png" title="1462861796967167.png" alt="blob.png" /></p> <h3 id="web-server-1-19216811" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">Web Server 1 (192.168.1.1)</h3> <h6 id="编译安装" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 0.85em">编译安装:</h6> <pre class="prettyprint hljs-light"><code class="hljs livescript">[root<span style="line-height: 1.6">@host1</span> ~]# yum groupinstall "Development Tools" -y 安装依赖的包组“Development Tools”<br />[root<span style="line-height: 1.6">@host1</span> ~]# yum install pcre-devel openssl-devel -y 安装正则表达式的开发包pcre-devel 与 openssl的开发包openssl-devel<br />[root<span style="line-height: 1.6">@host1</span> ~]# rpm -q apr-util && yum remove apr-util -y 查询apr-util是否安装,安装了就卸载,是为了防止默认安装了低版本的apr而使得非常混乱。<br />[root<span style="line-height: 1.6">@host1</span> ~]# rpm -q apr && yum remove apr -y 查询apr是否安装,安装了就卸载,是为了防止默认安装了低版本的apr而使得非常混乱。<br />[root<span style="line-height: 1.6">@host1</span> ~]# rpm -q httpd && yum remove httpd -y 查看httpd是否安装,安装了就卸载,是为了防止默认安装了低版本的httpd。<br /><br />[root<span style="line-height: 1.6">@host1</span> ~]# useradd -s /sbin/nologin -r apache 创建系统用户并不能登陆,创建用户时会自动创建相同名称的组。 <br /><br />[root<span style="line-height: 1.6">@host1</span> source]# cd source/ cd到存放源码的目录。<br />[root<span style="line-height: 1.6">@host1</span> source]# tar xf source/apr-1.5.2.tar.gz 解压apr<br />[root<span style="line-height: 1.6">@host1</span> source]# tar xf source/apr-util-1.5.4.tar.gz 解压apr-util<br />[root<span style="line-height: 1.6">@host1</span> source]# tar xf source/httpd-2.4.20.tar.bz2 解压httpd<br /><br />[root<span style="line-height: 1.6">@host1</span> source]# cd apr-1.5.2 cd到apr-1.5.2的目录。<br />[root<span style="line-height: 1.6">@host1</span> apr-1.5.2]# ./configure --prefix=/usr/local/apr 编译安装的环境检查,生成编译安装配置清单文件,并制定程序存放位置。<br />[root<span style="line-height: 1.6">@host1</span> apr-1.5.2]# make && make install 编译以及复制文件。<br /><br />[root<span style="line-height: 1.6">@host1</span> apr-1.5.2]# cd ../apr-util-1.5.4 cd到apr-util目录<br />[root<span style="line-height: 1.6">@host1</span> apr-util-1.5.4]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr 检查环境,生成编译安装配置清单文件,指定程序存放位置以及apr的安装位置。<br />[root<span style="line-height: 1.6">@host1</span> apr-util-1.5.4]# make && make install 编译以及复制文件。<br /><br />[root<span style="line-height: 1.6">@host1</span> apr-util-1.5.4]# cd ../httpd-2.4.20 cd到httpd-2.4.20的目录。<br />[root<span style="line-height: 1.6">@host1</span> httpd-2.4.20]# ./configure \ 检查环境,生成编译安装配置清单文件。<br />> --prefix=/web/apache \ 指定程序存放位置。<br />> --sysconfdir=/etc/httpd \ 指定配置文件存放位置。<br />> --enable-so \ 启用共享对象<br />> --enable-ssl \ 启用ssl<br />> --enable-cgi \ 启用cgi<br />> --enable-rewrite \ 启用rewrite重写<br />> --<span style="line-height: 1.6;font-weight: bold">with</span>-zlib \ 启用zlib库<br />> --<span style="line-height: 1.6;font-weight: bold">with</span>-pcre \ 启用pcre正则<br />> --<span style="line-height: 1.6;font-weight: bold">with</span>-apr=/usr/local/apr \ 指定apr位置<br />> --<span style="line-height: 1.6;font-weight: bold">with</span>-apr-util=/usr/local/apr-util \ 指定apr-util位置<br />> --enable-modules=most \ 启用大部分模块<br />> --enable-mpms-shared=all \ 启用所有的MPM模型,prefork worker event<br />> --<span style="line-height: 1.6;font-weight: bold">with</span>-mpm=event 默认启用event模型<br />[root<span style="line-height: 1.6">@host1</span> source]# make && make install 编译以及复制文件。<br /><br />[root<span style="line-height: 1.6">@host1</span> source]# cd ~<br />[root<span style="line-height: 1.6">@host1</span> ~]# echo "export PATH=/web/apache/bin:$PATH" > /etc/profile.d/httpd.sh 写入二进制可执行文件路径至$PATH变量。<br />[root<span style="line-height: 1.6">@host1</span> ~]# ln -s /web/apache/include /usr/include/httpd 在/usr/include中创建链接指向httpd的头文件<br />[root<span style="line-height: 1.6">@host1</span> ~]# echo "PidFile \"/var/run/httpd.pid\"" >> /etc/httpd/httpd.conf\ 将PID的路径写入httpd的配置文件<br />[root<span style="line-height: 1.6">@host1</span> ~]# echo "MANPATH /web/apache/man" >> /etc/man.config 将httpd的man文件路径写入man的配置文件。<br />[root<span style="line-height: 1.6">@host1</span> ~]# vim /etc/rc.d/init.d/httpd 创建启动脚本,并修改一下主要变量的参数的值,脚本在本文最后提供。<br />....<br />apachectl=/web/apache/bin/apachectl <br />httpd=${HTTPD-/web/apache/bin/httpd}<br />prog=httpd<br />pidfile=${PIDFILE-/<span style="line-height: 1.6;font-weight: bold">var</span>/run/httpd.pid}<br />lockfile=${LOCKFILE-/<span style="line-height: 1.6;font-weight: bold">var</span>/lock/subsys/httpd}<br />....<br />[root<span style="line-height: 1.6">@host1</span> ~]# chmod +x /etc/rc.d/init.d/httpd 给予启动脚本执行权限。<br />[root<span style="line-height: 1.6">@host1</span> ~]# chkconfig --add httpd 将httpd添加进开机启动。<br />[root<span style="line-height: 1.6">@host1</span> ~]# chkconfig --level 3 httpd on 将httpd设置为在level 3都启动。<br />[root<span style="line-height: 1.6">@host1</span> ~]# service httpd start 脚本启动httpd。<br /></code></pre> <h6 id="文件配置" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 0.85em">文件配置:</h6> <pre class="prettyprint hljs-light"><code class="hljs perl">[root<span style="line-height: 1.6">@host1</span> ~]# vim /etc/httpd/httpd.conf 配置httpd.conf<br />LoadModule proxy_module modules/mod_proxy.so 启用代理模块。<br />LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so 启用基于fcgi的传输模块。<br />User apache 指定子进程的属主。<br />Group apache 指定子进程的属组。<br />Include /etc/httpd/extra/httpd-vhosts.conf 开启此项会自动去读hyyp-vhosts.conf这个配置文件。<br />AddType application/<span style="line-height: 1.6;font-weight: bold">x</span>-httpd-php .php 增加类型识别PHP。<br />AddType application/<span style="line-height: 1.6;font-weight: bold">x</span>-httpd-php-source .phps 增加类型识别PHPS。<br /><br />[root<span style="line-height: 1.6">@host1</span> ~]# vim /etc/httpd/extra/httpd-vhosts.conf 编辑httpd-vhost.conf<br /><Virtualhost *:80> 增加一个虚拟主机。<br /> documentroot "/web/data" 此主机的根目录。<br /> servername www.xiao.com 此主机的服务器名称即域名。<br /> errorlog "/web/log/error.log" 错误日志存放位置。<br /> customlog "/web/log/access.log" common 访问日志存放位置已经格式指定为common这个内置配置。<br /><br /> proxyrequests off 关闭正想代理。<br /> ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.1.3:9000/web/data/<span style="line-height: 1.6">$1</span> 将.PHP结尾的文件的请求都通过fcgi转向192.168.1.3:9000/web/data去。<br /><br /> <directory "/web/data"> 此虚拟主机目录/web/data的属性。<br /> options none 目录选项为none。<br /> DirectoryIndex <span style="line-height: 1.6;font-weight: bold">index</span>.php <span style="line-height: 1.6;font-weight: bold">index</span>.html 默认的主页文件为<span style="line-height: 1.6;font-weight: bold">index</span>.php 次之为<span style="line-height: 1.6;font-weight: bold">index</span>.html<br /> allowoverride none 目录配置检查为none。<br /> <span style="line-height: 1.6;font-weight: bold">require</span> all granted 允许多有主机访问,没有做访问控制。<br /> </directory><br /></Virtualhost><br />[root<span style="line-height: 1.6">@host1</span> ~]# mkdir -pv /web/{data,log} 创建日志文件存放目录。<br />[root<span style="line-height: 1.6">@host1</span> ~]# service httpd reload 重载配置文件。<br /></code></pre> <h6 id="网页部署" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 0.85em">网页部署:</h6> <pre class="prettyprint hljs-light"><code class="hljs cpp">[root@host1 ~]# cd source/<br />[root@host1 source]# cp Discuz_X3.2_SC_UTF8.zip /web/data <br />[root@host1 data]# unzip Discuz_X3.2_SC_UTF8.zip<br />[root@host1 data]# chown -R apache:apache .<br />注:需要在fastcgi指定的PHP服务器中的路径下拥有相同的文件才可通过http访问192.168.1.1来调用PHP服务器,也就是说此处服务器只是存放一个对应的文件用来映射访问,真正的操作在PHP服务器上执行。<br /></code></pre> <h3 id="web-server-2-19216812" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">Web Server 2 (192.168.1.2)</h3> <h6 id="编译安装-1" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 0.85em">编译安装:</h6> <pre class="prettyprint hljs-light"><code>编译安装过程与web sever1相同<br /></code></pre> <h6 id="文件配置-1" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 0.85em">文件配置:</h6> <pre class="prettyprint hljs-light"><code class="hljs coffeescript">[root@host2 ~]# vim /etc/httpd/httpd.conf 与web1基本一致,就不做解释了。<br />LoadModule proxy_module modules/mod_proxy.so<br />LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so<br />User apache<br />Group apache<br />Include /etc/httpd/extra/httpd-vhosts.conf<br />AddType application/x-httpd-php .php<br />AddType application/x-httpd-php-source .phps<br /><br />[root@host2 ~]# vim /etc/httpd/extra/httpd-vhosts.conf<br /><Virtualhost *:80><br /> documentroot "/web/data"<br /> servername www.xiao.com<br /> errorlog "/web/log/error.log"<br /> customlog "/web/log/access.log" common<br /><br /> proxyrequests off<br /> ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.1.3:9000/web/data/$1<br /><br /> <directory "/web/data"><br /> options none<br /> DirectoryIndex index.php index.html<br /> allowoverride none<br /> <span style="line-height: 1.6;font-weight: bold">require</span> all granted<br /> </directory><br /></Virtualhost><br />[root@host2 ~]# mkdir -pv /web/{data,log}<br />[root@host2 ~]# service httpd restart<br /></code></pre> <h6 id="网页部署-1" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 0.85em">网页部署:</h6> <pre class="prettyprint hljs-light"><code class="hljs cpp">[root@host2 ~]# cd source/<br />[root@host2 source]# cp Discuz_X3.2_SC_UTF8.zip /web/data<br />[root@host2 data]# unzip Discuz_X3.2_SC_UTF8.zip<br />[root@host2 data]# chown -R apache:apache .<br />注:需要在fastcgi指定的PHP服务器中的路径下拥有相同的文件才可通过http访问192.168.1.2来调用PHP服务器,也就是说此处服务器只是存放一个对应的文件用来映射访问,真正的操作在PHP服务器上执行。<br /></code></pre> <h3 id="php-server-19216813" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">php server (192.168.1.3)</h3> <h6 id="编译安装-2" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 0.85em">编译安装:</h6> <pre class="prettyprint hljs-light"><code class="hljs cpp">[root@host3 ~]# yum groupinstall <span style="line-height: 1.6">"Development Tools"</span> -y 安装依赖包组。<br />[root@host3 ~]# yum install <span style="line-height: 1.6">"libxml2-devel"</span> <span style="line-height: 1.6">"bzip2-devel"</span> <span style="line-height: 1.6">"libmcrypt-devel"</span> <span style="line-height: 1.6">"mhash-devel"</span> -y 安装依赖的包。<br /><br />[root@host3 ~]# useradd -s /sbin/nologin -r php 创建php程序的属主。<br /><br />[root@host3 ~]# cd source/ <br />[root@host3 source]# tar xf php-5.6.20.tar.gz 解压php源码包<br />[root@host3 source]# cd php-5.6.20 CD进php-5.6.20目录<br />[root@host3 php-5.6.20]# ./configure \ 检查环境,生成编译安装配置清单文件。<br />--prefix=/usr/local/php \ 指定php程序安装位置。<br />--with-mysql=mysqlnd \ 指定mysql为mysqlnd驱动,mysqlnd是新版的mysql的驱动。<br />--with-openssl \ 启用openssl<br />--with-mysqli=mysqlnd \ 指定mysqli为mysqlnd驱动,mysqli为php-mysql的进阶扩展。<br />--enable-mbstring \ 支持Multi-Byte String ,编码库。<br />--with-freetype-dir \ 启用freetype字体引擎。 <br />--with-jpeg-dir \ 启用支持jpeg格式的图片。<br />--with-png-dir \ 启用支持png格式的图片。<br />--with-zlib \ 启用支持zlib数据压缩。<br />--with-libxml-dir=/usr \ 启用xml的支持库,支持xml格式的文件<br />--enable-xml \ 启用xml功能。<br />--enable-sockets \ 启用套接字。<br />--enable-fpm \ 启用fpm,fastcgi管理器。<br />--with-mcrypt \ 启用加密扩展库mcrypt。<br />--with-config-file-path=/etc \ 指定配置文件php.ini路径。<br />--with-config-file-scan-dir=/etc/php.d \ 指定配置文件目录,php.d<br />--with-bz2<br />[root@host3 php-5.6.20]# make && make install 编译安装,复制文件<br /><br />[root@host3 php-5.6.20]# cp php.ini-production /etc/php.ini 复制的配置文件php.ini。<br />[root@host3 php-5.6.20]# cp lamp/php-5.6.20/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm 复制php-fpm的启动脚本。<br />[root@host3 php-5.6.20]# chmod +x /etc/rc.d/init.d/php-fpm 给予启动脚本执行权限。<br />[root@host3 php-5.6.20]# echo <span style="line-height: 1.6">"export PATH=/usr/local/php/bin:/usr/local/php/sbin:$PATH"</span> > /etc/profile.d/php.sh 指定二进制可执行文件。<br />[root@host3 php-5.6.20]# echo <span style="line-height: 1.6">"/usr/local/php/lib"</span> > /etc/ld.so.conf.d/php.conf 写入库文件。<br />[root@host3 php-5.6.20]# ln -sv /usr/local/php/<span style="line-height: 1.6;font-weight: bold">include</span> /usr/<span style="line-height: 1.6;font-weight: bold">include</span>/php 写入头文件。<br />[root@host3 php-5.6.20]# echo <span style="line-height: 1.6">"MANPATH /usr/local/php/man"</span> >> /etc/man.config 写入man文件。<br />[root@host3 php-5.6.20]# cp etc/php-fpm.conf.default etc/php-fpm.conf 复制php-fpm的配置文件。<br />[root@host3 php-5.6.20]# vim etc/php-fpm.conf 编辑php-fpm.conf<br />pid = /usr/local/php/var/run/php-fpm.pid PID路径<br />user = php 进程属主<br />group = php 进程属组<br />listen = 192.168.1.3:9000 监听的IP,端口。<br />pm = dynamic 指定进程管理方式为dynamic,动态调整。也可设置为静态<span style="line-height: 1.6;font-weight: bold">static</span>。<br />pm.max_children = 50 允许的最大的php-fpm子进程数。<br />pm.start_servers = 5 动态模式下,PHP启动时的php-fpm进程数。<br />pm.min_spare_servers = 2 动态模式下服务器空闲时最小的php-fpm进程数。<br />pm.max_spare_servers = 8 动态模式下服务器空闲时最大的php-fpm进程数。<br />[root@host3 php-5.6.20]# chkconfig --add php-fpm 加入开机自启。<br />[root@host3 php-5.6.20]# chkconfig --level 3 php-fpm on 在level 3下开机自启动。<br /><br />[root@host3 php-5.6.20]# service php-fpm start 脚本启动。<br /></code></pre> <h5 id="xcache加速php" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1em">xcache加速PHP:</h5> <pre class="prettyprint hljs-light"><code class="hljs cpp">[root@host3 source]# tar xf xcache-3.2.0.tar.gz<br />[root@host3 source]# cd xcache-3.2.0<br />[root@host3 xcache-3.2.0]# /usr/local/php/bin/phpize 启用php的环境检查,通过后生成xcache的configure文件<br />[root@host3 xcache-3.2.0]# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config 检查环境,生成编译安装配置清单文件,开启xcache,指定php-config的位置,php-config存放了php的配置信息。<br />[root@host3 xcache-3.2.0]# make && make install<br /><br />[root@host3 xcache-3.2.0]# mkdir /etc/php.d<br />[root@host3 xcache-3.2.0]# cp xcache.ini /etc/php.d 复制xcache.ini到php.d目录下。<br />[root@host3 xcache-3.2.0]# vim /etc/php.d/xcache.ini 配置xcache.ini<br />extension = /usr/local/php5/lib/php/extensions/no-debug-non-zts-20131226/xcache.so 指定共享对象位置。<br /></code></pre> <h6 id="网页部署-2" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 0.85em">网页部署:</h6> <pre class="prettyprint hljs-light"><code class="hljs cpp">[root@host3 ~]# mkdir -pv /web/data<br />[root@host3 ~]# cd source/<br />[root@host3 source]# cp Discuz_X3.2_SC_UTF8.zip /web/data<br />[root@host3 data]# unzip Discuz_X3.2_SC_UTF8.zip<br />[root@host3 data]# chown -R php:php .<br />注:此处的网页文件才是用户通过httpd访问到的网页文件,也就是说用户在访问192.168.1.1时访问的网页是位于192.168.1.3上的。<br /></code></pre> <h3 id="dbserver-19216814" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">DBserver (192.168.1.4)</h3> <h6 id="二进制文件安装" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 0.85em">二进制文件安装:</h6> <pre class="prettyprint hljs-light"><code class="hljs autoit">[root@host4 ~]# useradd -s /sbin/nologin -r mysql 创建系统用户musql,不允许登陆。<br /><br />[root@host4 ~]# cd source/ <br />[root@host4 source]# tar xf mariadb-5.5.48-linux-x86_64.tar.gz -C /usr/local/ 解压源码文件并且解压至指定目录。<br />[root@host4 source]# cd /usr/local <br />[root@host4 <span style="line-height: 1.6;font-weight: bold">local</span>]# ln -sv mariadb-5.5.48-linux-x86_64 mysql 连接目录为mysql目录<br />[root@host4 <span style="line-height: 1.6;font-weight: bold">local</span>]# cd mysql <br />[root@host4 mysql]# chown -R mysql:mysql . 将mysql目录下的文件递归的属主属组都改为mysql<br />[root@host4 mysql]# bash scripts/mysql_install_db --user=mysql --datadir=/mysql/data 执行安装脚本并且指定进程用户与数据存放路径。<br />[root@host4 mysql]# chown -R root . 更改属主为root<br />[root@host4 mysql]# cp support-files/my-large.cnf /etc/my.cnf 复制mysql的配置文件<br />[root@host4 mysql]# vim /etc/my.cnf 配置my.cnf<br />thread_concurrency = 4 内核数量*2,指定内部并发数量,决定性能。<br />datadir= /mysql/data 指定数据存放位置。<br />[root@host4 mysql]# echo <span style="line-height: 1.6">"export PATH=/usr/local/mysql/bin:$PATH"</span> > /etc/profile.d/mysql.sh 写入二进制文件路径。<br />[root@host4 mysql]# echo <span style="line-height: 1.6">"/usr/local/mysql/lib"</span> > /etc/ld.so.conf.d/mysql.conf 写入库文件。<br />[root@host4 mysql]# ln -sv /usr/local/mysql/<span style="line-height: 1.6;font-weight: bold">include</span> /usr/<span style="line-height: 1.6;font-weight: bold">include</span>/mysql 写入头文件。<br />[root@host4 mysql]# echo <span style="line-height: 1.6">"MANPATH /usr/local/mysql/man"</span> >> /etc/man.config 写入man文件。<br />[root@host4 mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld 复制脚本启动文件至指定目录。<br />[root@host4 mysql]# chmod +x /etc/rc.d/init.d/mysqld 执行权限给脚本启动文件。<br /><br />[root@host4 mysql]# chkconfig --add mysqld 添加进开机自启。<br />[root@host4 mysql]# chkconfig --level mysqld on 启用开机自启。<br /><br />[root@host4 mysql]# service mysqld start 启动mysql<br /></code></pre> <h6 id="网页部署-3" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 0.85em">网页部署:</h6> <pre class="prettyprint hljs-light"><code class="hljs scheme"><span style="line-height: 1.6">[<span style="line-height: 1.6;font-weight: bold">root@host4</span> ~]# mysql<br />MariaDB <span style="line-height: 1.6">[<span style="line-height: 1.6">(<span style="line-height: 1.6;font-weight: bold">none</span>)</span>]> create database dz ;<br />MariaDB <span style="line-height: 1.6">[<span style="line-height: 1.6">(<span style="line-height: 1.6;font-weight: bold">none</span>)</span>]> use dz ;<br />MariaDB <span style="line-height: 1.6">[<span style="line-height: 1.6;font-weight: bold">dz</span>]> create table ;<br />MariaDB <span style="line-height: 1.6">[<span style="line-height: 1.6;font-weight: bold">dz</span>]> grant all on dz.* to dzadmin@<span style="line-height: 1.6">'192.168.1.3</span>' identified by <span style="line-height: 1.6">'redhat</span>' ;<br />MariaDB <span style="line-height: 1.6">[<span style="line-height: 1.6;font-weight: bold">dz</span>]> flush privileges ; <br />MariaDB <span style="line-height: 1.6">[<span style="line-height: 1.6;font-weight: bold">dz</span>]> exit</span></span></span></span></span></span></span><br /></code></pre> <h2 id="总结与问题" style="font-family: inherit;line-height: 1.1;color: inherit;margin: 1.2em 0px 0.6em;font-size: 2.15em">总结与问题</h2> <h3 id="总结" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">总结</h3> <ol style="margin-bottom: 1.1em;line-height: 1.6" class=" list-paddingleft-2"> <li> <p>LAMP架构的实验拖了好多天才动手,结果现在进度到nginx了才开始动手实验,实验过程中,编译安装就是不断出错与解决的问题,遇到出错一般都是软件没有安装。</p> </li> <li> <p>在编译安装前,一定要检查是不是已经默认安装过了程序,不然会非常乱,比如在这次试验中,因为本机已经默认安装了httpd-2.2与apr-1.3.9,apr-util-1.3.X ,所以导致在start httpd的时候启动了2.2的版本,通过rpm -qi才知道。</p> </li> <li> <p>在编译安装完成后,要完成收尾工作,比如配置文件,链接库,链接二进制文件,链接include文件,加启动脚本等。</p> </li> <li> <p>最后的网页部署没有仔细列出步骤,但大致以写出,可以通过google等方式自行查询,这里选择使用的php网页为discuz! 根据喜好也可选择其他如word press等。</p> </li> <li> <p>此次架构实验为第一步的初步搭建LAMP的基本架构,后续会在学习的基础上进一步迭代添加如日志服务器,DNS服务器,负载均衡服务器,代理服务器等。</p> </li> <li> <p>由于本次实验PHP是基于FASTCGI来将PHP服务器独立出来的,所以所有网页文件都需要在每一个服务器上存放一份,会非常麻烦,解决方案就是NFS,留在下一次实验来补充完善。</p> </li> </ol> <h3 id="问题" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">问题</h3> <ol style="margin-bottom: 1.1em;line-height: 1.6" class=" list-paddingleft-2"> <li> <p>HTTPD搭建完成后无法启动,检查配置文件,发现PID没有指定路径,加上即解决。</p> </li> <li> <p>数据库无法在其他服务器上远程访问,因为用户权限没有赋予指定主机 如 admin@’IPADDR’ 。</p> </li> <li> <p>DISCUZ!在安装完成后,访问主页时CSS错误的问题,是因为采用了FASTCUGI分离了PHP,所以导致生成的缓存的CSS数据只存在在PHP服务器上,而静态数据是要存放在前段的web服务器上的,所以就使得用户访问时,web服务器是找不到缓存中的CSS文件的,解决方法,将远程主机上的CSS缓存文件复制并存放到web服务器的对应目录下。</p> </li> <li> <p>发现远程无法访问的情况,请检查你的selinux与iptables,iptables的具体配置问题会在后续的文章中再来完善。</p> </li> </ol> <hr /> <h3 id="httpd自动部署脚本不够完善漏洞超级多而且适用环境非常小只是为了偷懒顺手写的仅供参考" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">httpd自动部署脚本(不够完善,漏洞超级多,而且适用环境非常小,只是为了偷懒顺手写的,仅供参考!)</h3> <h5 id="需要将所有的包都存放在rootsource目录下且请自行修改对应的包名或者也可以和我使用相同版本的所有包" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1em">需要将所有的包都存放在/root/source目录下,且请自行修改对应的包名,或者也可以和我使用相同版本的所有包!!!</h5> <pre class="prettyprint hljs-light"><code class="hljs stata">程序包列表:<br />apr-1.5.2.tar.gz<br />apr-util-1.5.4.tar.gz<br />httpd-2.4.20.tar.bz2<br /><br />-------------------------------------------------------------------------<br /><br />脚本代码:<br /><br /><span style="line-height: 1.6;font-weight: bold">dir</span>=/root/source/<br /><br />function env() {<br />yum groupinstall "Development Tools" -y<br />yum install pcre-devel openssl-devel -y<br />rpm -q apr-util && yum remove apr-util -y<br />rpm -q apr && yum remove apr -y<br />rpm -q httpd && yum remove httpd -y<br />}<br /><br />function apr() {<br /><span style="line-height: 1.6;font-weight: bold">cd</span> ${dir}<br />tar xf ${dir}apr-1.5.2.tar.gz<br />tar xf ${dir}apr-util-1.5.4.tar.gz<br /><span style="line-height: 1.6;font-weight: bold">cd</span> ${dir}apr-1.5.2<br />./configure --prefix=/usr/<span style="line-height: 1.6;font-weight: bold">local</span>/apr<br />make && make install<br /><span style="line-height: 1.6;font-weight: bold">cd</span> ${dir}apr-util-1.5.4<br />./configure --prefix=/usr/<span style="line-height: 1.6;font-weight: bold">local</span>/apr-util --with-apr=/usr/<span style="line-height: 1.6;font-weight: bold">local</span>/apr<br />make && make install<br />}<br /><br />function http() {<br />[ -<span style="line-height: 1.6;font-weight: bold">e</span> "/web" ] || <span style="line-height: 1.6;font-weight: bold">mkdir</span> -pv /web<br /><span style="line-height: 1.6;font-weight: bold">cd</span> ${dir}<br />tar xf ${dir}httpd-2.4.20.tar.bz2<br /><span style="line-height: 1.6;font-weight: bold">cd</span> ${dir}httpd-2.4.20<br />./configure --prefix=/web/apache --sysconfdir=/etc/httpd --enable-<span style="line-height: 1.6;font-weight: bold">so</span> --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/<span style="line-height: 1.6;font-weight: bold">local</span>/apr --with-apr-util=/usr/<span style="line-height: 1.6;font-weight: bold">local</span>/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event<br />make && make install<br />touch /etc/profile.<span style="line-height: 1.6;font-weight: bold">d</span>/httpd.<span style="line-height: 1.6;font-weight: bold">sh</span><br />echo "PATH=/web/apache/bin:$PATH" > /etc/profile.<span style="line-height: 1.6;font-weight: bold">d</span>/httpd.<span style="line-height: 1.6;font-weight: bold">sh</span><br />ln -s /web/apache/<span style="line-height: 1.6;font-weight: bold">include</span> /usr/<span style="line-height: 1.6;font-weight: bold">include</span>/httpd<br />echo "PidFile \"/<span style="line-height: 1.6;font-weight: bold">var</span>/<span style="line-height: 1.6;font-weight: bold">run</span>/httpd.pid\"" >> /etc/httpd/httpd.<span style="line-height: 1.6;font-weight: bold">conf</span><br /><span style="line-height: 1.6;font-weight: bold">cd</span> /etc/rc.<span style="line-height: 1.6;font-weight: bold">d</span>/init.d<br />wget ftp://139.129.54.50/httpd<br />chmod +x /etc/rc.<span style="line-height: 1.6;font-weight: bold">d</span>/init.<span style="line-height: 1.6;font-weight: bold">d</span>/httpd<br />chkconfig --add httpd<br />chkconfig httpd <span style="line-height: 1.6;font-weight: bold">on</span><br />}<br /><br />env<br />apr<br />http<br />service httpd start<br />ss -tnl | grep "80" && echo "httpd started"<br /></code></pre> <hr /> <h3 id="httpd启动脚本centos6" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">httpd启动脚本(centos6)</h3> <pre class="prettyprint hljs-light"><code class="hljs bash">#!/bin/bash<br />#<br /># httpd Startup script for the Apache HTTP Server<br />#<br /># chkconfig: - 85 15<br /># description: Apache is a World Wide Web server. It is used to serve \<br /># HTML files and CGI.<br /># processname: httpd<br /># config: /etc/httpd/conf/httpd.conf<br /># config: /etc/sysconfig/httpd<br /># pidfile: /var/run/httpd.pid<br /><br /># Source function library.<br />. /etc/rc.d/init.d/<span style="line-height: 1.6;font-weight: bold">functions</span><br /><br /><span style="line-height: 1.6;font-weight: bold">if</span> [ <span style="line-height: 1.6">-f</span> /etc/sysconfig/httpd ]; <span style="line-height: 1.6;font-weight: bold">then</span><br /> . /etc/sysconfig/httpd<br /><span style="line-height: 1.6;font-weight: bold">fi</span><br /><br /># Start httpd in the C locale by default.<br />HTTPD_LANG=${HTTPD_LANG-"C"}<br /><br /># This will prevent initlog from swallowing up a pass-phrase prompt if<br /># mod_ssl needs a pass-phrase from the user.<br />INITLOG_ARGS=""<br /><br /># Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server<br /># with the thread-based "worker" MPM; BE WARNED that some modules may not<br /># work correctly with a thread-based MPM; notably PHP will refuse to start.<br /><br /># Path to the apachectl script, server binary, and short-form for messages.<br />apachectl=/web/apache/bin/apachectl<br />httpd=${HTTPD-/web/apache/bin/httpd}<br />prog=httpd<br />pidfile=${PIDFILE-/var/run/httpd.pid}<br />lockfile=${LOCKFILE-/var/lock/subsys/httpd}<br />RETVAL=0<br /><br /><span style="line-height: 1.6">start</span>() {<br /> <span style="line-height: 1.6;font-weight: bold">echo</span> -n $"Starting <span style="line-height: 1.6;font-weight: bold">$prog</span>: "<br /> LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS<br /> RETVAL=$?<br /> <span style="line-height: 1.6;font-weight: bold">echo</span><br /> [ $RETVAL = 0 ] && touch ${lockfile}<br /> <span style="line-height: 1.6;font-weight: bold">return</span> $RETVAL<br />}<br /><br /><span style="line-height: 1.6">stop</span>() {<br /> <span style="line-height: 1.6;font-weight: bold">echo</span> -n $"Stopping <span style="line-height: 1.6;font-weight: bold">$prog</span>: "<br /> killproc -p ${pidfile} <span style="line-height: 1.6">-d</span> 10 $httpd<br /> RETVAL=$?<br /> <span style="line-height: 1.6;font-weight: bold">echo</span><br /> [ $RETVAL = 0 ] && rm <span style="line-height: 1.6">-f</span> ${lockfile} ${pidfile}<br />}<br /><span style="line-height: 1.6">reload</span>() {<br /> <span style="line-height: 1.6;font-weight: bold">echo</span> -n $"Reloading <span style="line-height: 1.6;font-weight: bold">$prog</span>: "<br /> <span style="line-height: 1.6;font-weight: bold">if</span> ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; <span style="line-height: 1.6;font-weight: bold">then</span><br /> RETVAL=$?<br /> <span style="line-height: 1.6;font-weight: bold">echo</span> $"not reloading due to configuration syntax error"<br /> failure $"not reloading <span style="line-height: 1.6;font-weight: bold">$httpd</span> due to configuration syntax error"<br /> <span style="line-height: 1.6;font-weight: bold">else</span><br /> killproc -p ${pidfile} $httpd -HUP<br /> RETVAL=$?<br /> <span style="line-height: 1.6;font-weight: bold">fi</span><br /> <span style="line-height: 1.6;font-weight: bold">echo</span><br />}<br /><br /># See how we were called.<br /><span style="line-height: 1.6;font-weight: bold">case</span> "<span style="line-height: 1.6;font-weight: bold">$1</span>" <span style="line-height: 1.6;font-weight: bold">in</span><br /> start)<br /> start<br /> ;;<br /> stop)<br /> stop<br /> ;;<br /> status)<br /> status -p ${pidfile} $httpd<br /> RETVAL=$?<br /> ;;<br /> restart)<br /> stop<br /> start<br /> ;;<br /> condrestart)<br /> <span style="line-height: 1.6;font-weight: bold">if</span> [ <span style="line-height: 1.6">-f</span> ${pidfile} ] ; <span style="line-height: 1.6;font-weight: bold">then</span><br /> stop<br /> start<br /> <span style="line-height: 1.6;font-weight: bold">fi</span><br /> ;;<br /> reload)<br /> reload<br /> ;;<br /> graceful|<span style="line-height: 1.6;font-weight: bold">help</span>|configtest|fullstatus)<br /> $apachectl $@<br /> RETVAL=$?<br /> ;;<br /> *)<br /> <span style="line-height: 1.6;font-weight: bold">echo</span> $"Usage: <span style="line-height: 1.6;font-weight: bold">$prog</span> {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"<br /> <span style="line-height: 1.6;font-weight: bold">exit</span> 1<br /><span style="line-height: 1.6;font-weight: bold">esac</span><br /><br /><span style="line-height: 1.6;font-weight: bold">exit</span> $RETVAL</code></pre> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信