1. <a name="br1"></a>**LAMP搭建**
|<p>1\.</p><p>**LAMP概述**</p>| | :- | ||<p>a.</p><p>**什么是LAMP**</p>|
目前最为成熟的一种企业网站应用模式,可提供动态Web站点应用及开发环境
||<p>b.</p><p>**构成组件**</p>| | :- | :- |
Linux、Apache、MySQL、PHP/Perl/Python
||<p>c.</p><p>**LAMP的优势**</p>| | :- | :- | 成本低廉
可定制、易于开发
方便易用、安全和稳定
|<p>2\.</p><p>**搭建源码包Apache**</p>| | :- |
||<p>a.</p><p>**解包,配置,编译,安装**</p>| ||1||<p>[root@www ~]# rpm -e
httpd --nodeps //卸载rpm软件包 --nodeps是强制卸载忽略依赖 生</p><p>产环境不建议此操作
可以使用yum remove 来卸载</p>| 2 [root@www ~]# yum install -y
apr-util-devel pcre-devel make gcc\* //安装依赖软件包
3 [root@www ~]# systemctl stop firewalld //关闭防火墙
4 [root@www ~]# tar zxf httpd-2.4.25.tar.gz -C /usr/src/
//解包httpd源码包到指定目录
5 [root@www ~]# cd /usr/src/httpd-2.4.25/ //切换到已解包的httpd目录
6
||7||<p>[root@www httpd-2.4.25]# ./configure
--prefix=/usr/local/httpd --enable-so --enable-</p><p>rewrite --enable-charset-lite --enable-cgi && make && make install</p>| | :- | :- | :- | :- | 8 ##配置,编译,安装
||<p>b.</p><p>**优化Apache**</p>| | :- | :- |
||<p>i.</p><p>**优化路径**</p>| 1 [root@www ~]# ln -s
/usr/local/httpd/bin/\* /usr/local/bin/ ##优化路径
2 [root@www ~]# ls -l /usr/local/bin/httpd /usr/local/bin/apachectl
||3||<p>lrwxrwxrwx. 1 root root 30 5月 27 20:21
/usr/local/bin/apachectl
-></p><p>/usr/local/httpd/bin/apachectl</p>| | :- | :- | :- | :- | ||4||<p>lrwxrwxrwx. 1 root root 26 5月 27 20:21 /usr/local/bin/httpd
-></p><p>/usr/local/httpd/bin/httpd</p>| ||<p>ii.</p><p>**添加系统服务**</p>|
<a name="br2"></a>1 [root@www ~]# vim
/lib/systemd/system/httpd.service ##创建httpd系统配置文件
2 [Unit] ##进行单元类型控制
3 Description=The Apache HTTP Server ##说明是什么服务
4 After=network.target ##启动之前需要先启动网络服务就依赖于网络
5 [Service] ##定义服务的一些具体运行参数的设置
6 Type=forking ##以后台进程的方式运行这个服务
7 PIDFile=/usr/local/httpd/logs/httpd.pid ##运行时的进程ID存放路径
8 ExecStart=/usr/local/bin/apachectl $OPTIONS ##执行开启服务动作的时执行后面的的动作
9 ExecReload=/bin/kill -HUP $MAINPID ##重新载入服务配置文件时执行后面的动作
10 KillMode=process ##当终止进程时,它会终止主程序(即可以通过管理进程进行控制)
11 Restart=on-failure ##当服务非正常退出的时候会自动重启服务
12 RetartSec=42s ##重启服务等待超时时间(如果超过了就无法启动)
13 [Install] ##定义运行级别
14 WantedBy=graphical.target ##运行级别在5(既图形界面)
15 最小化则是 WantedBy=multi-user.target
||16||<p>[root@www bin]# systemctl enable httpd.service
##设置为开机自启动(前提配置好相应的系统配</p><p>置文件)</p>| | :- | :- | :- | :- | ||17||<p>Created symlink from
/etc/systemd/system/multi-user.target.wants/httpd.service
to</p><p>/usr/lib/systemd/system/httpd.service. ##创建软链接文件</p>| iii.
**优化主配置文件**
1 [root@www~]# vim /usr/local/httpd/conf/httpd.conf
||2||<p>PidFile logs/httpd.pid ##设置用于保存 httpd
进程号(PID)的文件,默认保存地址为</p><p>logs/httpd.pid,logs 目录位于 Apache
的服务器根目录下</p>| | :- | :- | :- | :- | 3 AddDefaultCharset UTF-8
##设置站点中的网页默认使用的字符集编码,如 UTF-8、gb2312等
||4||<p>DirectoryIndex index.html index.php
##设置网站的默认索引页(首页),可以设置多个首页文件,</p><p>以空格分开,默认的首页文件为 index.html</p>| | :- | :- | :- | :- | 5
Include conf/extra/httpd-default.conf ##包含另一个配置文件的内容,可以实现将一些特殊功能的配
置放到一个单
6
独的文件中,再使用 Include 配置项将其包含到 httpd.conf 文件中,这样便于独立进行配置功能的维护 而不影响主配置文件
7 [root@www conf]# systemctl restart httpd.service ##重启httpd服务
8
3\.
**安装源码包mysql**
a.
**安装依赖包cmake和其他依赖包**
i.
**解包,配置,编译,安装**
<a name="br3"></a>1 [root@www lamp]# tar zxf cmake-2.8.6.tar.gz -C
/usr/src/ ##解包cmake到指定目录
2 [root@www lamp]# cd /usr/src/cmake-2.8.6 ##切换到解压cmake的目录
3 [root@www cmake-2.8.6]# ./configure && gmake && gmake install
##编译,配置,安装一起执行
4 [root@www cmake-2.8.6]# echo $? ##查看是否安装成功
5 0 ## 0就是成功
||6||<p>[root@www cmake-2.8.6]# yum install -y ncurses-devel
libaio-devel gcc gcc-c++ glibc</p><p>autoconf openssl
openssl-devel</p><p>##安装依赖包 注意必须是安装MySQL之前安装</p>| | :- | :- | :- |
:- | ||<p>b.</p><p>**创建mysql组,和用户**</p>| 1 [root@www cmake-2.8.6]#
groupadd mysql ##创建myssql组
||2||<p>[root@www cmake-2.8.6]# useradd -M -s /sbin/nologin -g mysql
mysql ##创建mysql用户 -</p><p>M 不建立宿住目录 -s 指定登录的shell -g 指定基本组</p>| | :-
| :- | :- | :- | 3
||<p>c.</p><p>**解包**</p>| | :- | :- | 1 [root@www lamp]# tar zxf
mysql-5.6.36.tar.gz -C /usr/src/ ##解压到指定的目录
||<p>d.</p><p>**编译配置安装**</p>| | :- | :- | 1 [root@www lamp]# cd
/usr/src/mysql-5.6.36/
||2||<p>[root@www mysql-5.6.36]# cmake
-DCMAKE\_INSTALL\_PREFIX=/usr/local/mysql -</p><p>DSYSCONFDIR=/etc -DDEFAULT\_CHARSET=utf8 -DDEFAULT\_COLLATION=utf8\_general\_ci -</p><p>DWITH\_EXTRA\_CHARSETS=all && make && make install</p>| | :- | :- | :- | :- | 3 cmake 指定编译工具为cmake
4 -DCMAKE\_INSTALL\_PREFIX=/usr/local/mysql 指定预安装目录为
/usr/local/mysql
5 -DSYSCONFDIR=/etc 指定生成的主配置文件存放目录
6 -DDEFAULT\_CHARSET=utf8 指定默认的字符集格式
7 -DDEFAULT\_CHARSET=utf8
||8||<p>-DDEFAULT\_COLLATION=utf8\_general\_ci
指定默认使用的字符集校验规则:utf8\_general\_ci 是适用</p><p>于 UTF-8 字符集的通用规则</p>| |
:- | :- | :- | :- | 9 -DWITH\_EXTRA\_CHARSETS=all 安装所有扩展字符集
10 make && make install 编译,安装
-DCMAKE\_INSTALL\_PREFIX= 指定安装路径目录为:
-DSYSCONFDIR= 指定生成的主配置文件存放目录:
-DDEFAULT\_CHARSET=utf8 指定默认的字符集格式为:
<a name="br4"></a>-DDEFAULT\_COLLATION=utf8\_general\_ci
指定数据库语言校验规则:
-DWITH\_EXTRA\_CHARSETS=all 安装所有扩展字符集
||<p>e.</p><p>**安装后调整**</p>| | :- | :- | ||1||<p>[root@www
mysql-5.6.36]# chown -R mysql:mysql /usr/local/mysql/
##将生成mysql的主目的</p><p>属主和属组设置为MySQL -R 递归</p>| 2 [root@www mysql-5.6.36]# rm -rf /etc/my.cnf ##删除原来的配置文件
||3||<p>[root@www mysql-5.6.36]# cp support-files/my-default.cnf
/etc/my.cnf ##复制源码里面的</p><p>配置到/etc/下并改名为my.cnf</p>| | :- | :- | :-
| :- | ||4||<p>[root@www mysql-5.6.36]#
/usr/local/mysql/scripts/mysql\_install\_db --user=mysql
--</p><p>basedir=/usr/local/mysql --datadir=/usr/local/mysql/data</p>| ||5||<p>##初始化数据库 --user=mysql 指定初始化数据库的用户为mysql --</p><p>basedir=/usr/local/mysql
指定MySQL的刚刚安装的目录为/usr/local/mysql</p>| 6
--datadir=/usr/local/mysql/dat 指定刚刚安装MySQL存放的数据目录/usr/local/mysql/data/
7 [root@www mysql-5.6.36]# echo $? ##查看是否初始化成功
8 0
||9||<p>[root@www mysql-5.6.36]# echo
"PATH=$PATH:/usr/local/mysql/bin">>/etc/profile
##将</p><p>MySQL的脚本和命令追加到系统命令的搜索路径 ##全局变量</p>| | :- | :- | :- | :- | 10 [root@www mysql-5.6.36]# . /etc/profile ##重新加载环境变量
||<p>f.</p><p>**配置启动MySQL服务**</p>| | :- | :- | ||1||<p>[root@www
mysql-5.6.36]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
##拷贝</p><p>启动脚本到开机自检的目录下并改名为mysqld</p>| 2 [root@www mysql-5.6.36]# chmod +x /etc/rc.d/init.d/mysqld ##给脚本添加可执行权限
3 [root@www mysql-5.6.36]# chkconfig --add mysqld ##添加为系统服务
4 [root@node01 mysql-5.6.36]# systemctl enable mysqld ##添加为系统开机自启
5 [root@www mysql-5.6.36]# systemctl is-enabled mysqld
##查看是否已经设置为开机自启
6 mysqld.service is not a native service, redirecting to
/sbin/chkconfig.
7 Executing /sbin/chkconfig mysqld --level=5
8 enabled
9
10 [root@www mysql-5.6.36]# /etc/init.d/mysqld start
##开机MySQL服务或者使用systemctl
11 Starting MySQL.Logging to '/usr/local/mysql/data/www.kgc.cn.err'.
12 SUCCESS!
|13||<p>[root@www mysql-5.6.36]# netstat -anptu|grep mysql ##查看开启的端口
3306端口</p><p>10713PID号</p>| | :- | :- | :- | |14||<p>tcp6 0 0
:::3306 :::\* LISTEN</p><p>10713/mysqld</p>|
<a name="br5"></a>15
||<p>g.</p><p>**登录MySQL服务并设置密码**</p>| | :- | :- | 1 [root@www
mysql-5.6.36]# mysql -u root -p ##登录MySQL数据库 -u 用户名 -p 密码
2 Enter password: 密码默认为空回车即可
3 mysql> show databases; ##查看数据库列表
4 +--------------------+
5 | Database |
6 +--------------------+
7 | information\_schema |
8 | mysql |
9 | performance\_schema |
10 | test |
11 +--------------------+
12 4 rows in set (0.00 sec)
13 mysql> set password for root@localhost=password('pwd123');
##在数据库内设置密码
14 Query OK, 0 rows affected (0.00 sec)
15 ##mysql> set password for 用户名@localhost = password('新密码'); 数据库内设置
16 mysql> flush privileges; ##刷新权限列表
17 Query OK, 0 rows affected (0.00 sec)
18
19 mysql> exit ##退出数据库
20 Bye
21 [root@www mysql-5.6.36]# mysql -u root -p ##再次登录需要输入密码
22 Enter password:
23 [root@www mysql-5.6.36]# mysql -uroot -ppwd123 ##直接输入密码登录
|<p>4\.</p><p>**安装PHP源码包**</p>| | :- | 1 [root@www mysql-5.6.36]#
yum -y remove php php-cli php-ldap php-common php-mysql
2 删除PHP的rpm相关依赖包
3 [root@www mysql-5.6.36]# yum -y install zlib zlib-devel libxml2
libxml2-devel
4 安装PHP源码包的依赖包
||<p>a.</p><p>**安装源码包扩展工具库**</p>| | :- | :- |
||<p>i.</p><p>**数据加密工具libmcrypt、mhash、mcrypt**</p>|
<a name="br6"></a>ii.
**安装libmcrpyt**
1 [root@www lamp]# tar zxf libmcrypt-2.5.8.tar.gz -C /usr/src/ ##解包
2 [root@www lamp]# cd /usr/src/libmcrypt-2.5.8/ ##切换到解包的目录
3
4 [root@www libmcrypt-2.5.8]# ./configure && make && make install
##配置,编译,安装
5 [root@www libmcrypt-2.5.8]# echo $? ##查看是否成功
6 0
7 [root@www libmcrypt-2.5.8]# ln -s /usr/local/lib/libmcrypt.\*
/usr/src/ ##优化路径
iii.
**安装mhash**
1 [root@www lamp]# tar zxf mhash-0.9.9.9.tar.gz -C /usr/src/ ##解包
2 [root@www lamp]# cd /usr/src/mhash-0.9.9.9/ ##切换到解包的目录
3 [root@www mhash-0.9.9.9]# ./configure && make && make install
##配置,编译,安装
4 [root@www mhash-0.9.9.9]# echo $? ##查看是否安装成功
5 0
6 [root@www mhash-0.9.9.9]# ln -s /usr/local/lib/libmhash\* /usr/lib
##优化路径
7
iv.
**安装mcrypt**
1 [root@www lamp]# tar zxf mcrypt-2.6.8.tar.gz -C /usr/src/ ##解包
2 [root@www lamp]# cd /usr/src/mcrypt-2.6.8/ ##切换到解包的目录
3 [root@www mcrypt-2.6.8]# export
LD\_LIBRARY\_PATH=/usr/local/lib:$LD\_LIBRARY\_PATH
4 定义一个全局变量以方便查找libmcrpyt包,不定义则会无法配置
5 [root@www mcrypt-2.6.8]# ./configure && make && make install
##配置,编译,安装
6 [root@www mcrypt-2.6.8]# echo $? ##查看是否成功
7 0
v.
**安装PHP**
1 [root@www lamp]# tar zxf php-5.5.38.tar.gz -C /usr/src/ ##解包
2
[root@node01 php-5.5.38]# ./configure --prefix=/usr/local/php5
--with-mcrypt --with- apxs2=/usr/local/httpd/bin/apxs --with-mysql=/usr/local/mysql --with- mysqli=/usr/local/mysql/bin/mysql\_config
--with-config-file-path=/usr/local/php5 -- enable-mbstring && make && make install
3 --prefix=/usr/local/php5 指定安装的路径
<a name="br7"></a>4 --with-mcrypt 加载新的的模块既刚刚安装的扩展工具(数据加密工具)
5
--with-apxs2=/usr/local/httpd/bin/apxs 设置 Apache HTTP Server 提供的 apxs 模块支持程序 的文件位置
6 --with-mysql=/usr/local/mysql 指定MySQL的安装目录(添加 MySQL 扩展支持)
||7||<p>--with-mysqli=/usr/local/mysql/bin/mysql\_config
指定MySQL的配置文件(支持客户机连接数据</p><p>库的模块)</p>| | :- | :- | :- | :- | 8
---with-config-file-path=/usr/local/php5 指定存放PHP主配置文件的存放目录
9 --enable-mbstring 启用多字符集模式,以便支持中文等代码
10 --with 是添加新的模块 --enable 是启用模块
11 [root@www php-5.5.38]# echo $? ##查看是否安装成功
12 0
b.
**PHP配置调整**
i.
**添加优化模块**
**添加 ZendGuardLoader 优化模块 为了进一步提高 PHP 程序的执行效率,优化页面加载速度,可以为 PHP 添**
**加 Zend 公司开发的ZendGuardLoader优化模块。若需要加密PHP代码以限制未经授权的分发, 还可以购买**
**该公司的 ZendGuard 软件。添加 ZendGuardLoader 模块支持的过程如下所 述。 首先将下载的**
**ZendGuardLoader 包释放,并将其中 php-5.3.x 目录下的模块文件 复制到 PHP 程序的模块文件夹**
||1||<p>[root@www lamp]# tar zxf
zend-loader-php5.5-linux-x86\_64\_update1.tar.gz -C
/root</p><p>##解包</p>| | :- | :- | :- | :- | 2
[root@www lamp]# cd /root/zend-loader-php5.5-linux-x86\_64/ ##切换到
指定解压目录
3
[root@www zend-loader-php5.5-linux-x86\_64]# ls ##查看所有的 优化文件
4 opcache.so README.txt ZendGuardLoader.so
5
[root@www zend-loader-php5.5-linux-x86\_64]# cp ZendGuardLoader.so
/usr/local/php5/lib/php/ ##将优化文件复制到PHP的安装目录
ii.
**复制PHP主配置和主配置文件调整**
**通过修改 php.ini 文件中的配置内容,可以控制 PHP 网页的执行特性,如是否允许用户上传文件、设**
**置上传文件的大小限制、设置默认使用的字符集、加载额外的扩展模块等。如果没有特别要求,可以**
**直接沿用默认配置,不做任何修改**
||1||<p>` `[root@www zend-loader-php5.5-linux-x86\_64]# cp
/usr/src/php-5.5.38/php.ini-</p><p>development
/usr/local/php5/php.ini</p>| | :- | :- | :- | :- | 2
安装好 PHP 软件包以后,服务器并不会自动创建 php.ini 配置文件,但在源码目录下提供了两个样例配
置文件,分别对应于开发环境、生产环境
3 usr/src/php-5.5.38/php.ini-development //开发版样例文件,用于学习、测试
<a name="br8"></a>4 /usr/src/php-5.5.38/php.ini-production
//生产版样例文件,用于实际运营
5 [root@www ~]# vim /usr/local/php5/php.ini
||6||<p>zend\_exteension=/usr/local/php5/lib/php/ZendGuardLoader.so
##指定刚刚的解压的优</p><p>化模块路径 添加到897行后面</p>| | :- | :- | :- | :- | 7 zend\_loader.enable=1 ##开启优化模块
8 ##记得留一个空行
||9||<p>` `680 default\_charset = "UTF-8" ##开启默认字符集格</p><p>式
680行</p>| | :- | :- | :- | :- | ||10||<p>` `783 file\_uploads = On
##允许通过 PHP 网页</p><p>上传文件 783行</p>| ||11||<p>` `792 upload\_max\_filesize = 2M ##允许上传的文件大小</p><p>限制 792行</p>| ||12||<p>`
`795 max\_file\_uploads = 20 ##每个 HTTP 最多允</p><p>许请求上传的文件数 795行</p>|
||13||<p>` `660 post\_max\_size = 8M ##每次通过表单</p><p>post 提交的数据量限制
660行</p>| 14
202 short\_open\_tag = On ##允许识别 PHP 短语 法标记,即<?…?> 202行
15
16 873 extension=php\_mysqli.dll ##启用 MySQL 支持
17 912 date.timezone = Asia/Shanghai ##更改时区
18
5\.
**httpd.conf配置调整**
a.**要使 httpd 服务器支持 PHP 页面解析功能,需通过 LoadModule 配置项加载 PHP**
**程序的模块文件,并通过 AddType 配置项添加对“.php”类型网页文件的支持。除此以外,**
**还应修改 DirectoryIndex 配置行,添加 index.php 配置项,以识别常见的 PHP 首页文**
**件**
1 [root@www ~]# vim /usr/local/httpd/conf/httpd.conf ##编辑httpd主配置文件
2 161 LoadModule php5\_module modules/libphp5.so ##安装PHP之后会生成此配置项
161行
3 399 AddType application/x-httpd-php .php ##添加此内容,支持PHP解析 399行
4 261 DirectoryIndex index.html index.php ##添加默认网页index.php
5 [root@www ~]# httpd -t ##检查语法格式
6 Syntax OK
7 [root@www ~]# systemctl restart httpd.service ##重启服务
6\.
**测试**
a.
**创建静态测试网页**
<a name="br9"></a>1 [root@www ~]# echo "<h1>This is html page</h1>">
/usr/local/httpd/htdocs/test1.html
||<p>b.</p><p>**创建PHP测试网页**</p>| | :- | :- | 1 [root@www ~]# vim
/usr/local/httpd/htdocs/test2.php
2 <?php ##加php是长格式不加既是短格式
3 phpinfo(); ##输入PHP的默认网页
4 ?>
||<p>c.</p><p>**创建连接数据库的测试动态网页**</p>| | :- | :- | 1 [root@www ~]#
vim /usr/local/httpd/htdocs/test3.php ##创建测试网页
2 <?php
3 $link=mysqli\_connect('localhost','root','pwd123');
4 if($link) echo "The connetion is sucessfull!!";
5 mysqli\_close($link);
6 ?>
7 ~
8 $link 创建一个连接对象,对象名称为link
9 mysqli\_connect 调用一个函数就之前的模块
10 ('localhost','root','pwd123'); localhost 本地数据库 root 用户名 pwd123 密码
11 if($link) 使用if语句判断$link连接对象是否成功 成功则输出后面的字
12 mysqli\_close($link); 断开连接无论是否连接成功
3 phpinfo(); ##输入PHP的默认网页
4 ?>
||<p>c.</p><p>**创建连接数据库的测试动态网页**</p>| | :- | :- | 1 [root@www ~]#
vim /usr/local/httpd/htdocs/test3.php ##创建测试网页
2 <?php
3 $link=mysqli\_connect('localhost','root','pwd123');
4 if($link) echo "The connetion is sucessfull!!";
5 mysqli\_close($link);
6 ?>
7 ~
8 $link 创建一个连接对象,对象名称为link
9 mysqli\_connect 调用一个函数就之前的模块
10 ('localhost','root','pwd123'); localhost 本地数据库 root 用户名 pwd123 密码
11 if($link) 使用if语句判断$link连接对象是否成功 成功则输出后面的字
12 mysqli\_close($link); 断开连接无论是否连接成功 undefined
LAMP搭建
最新推荐文章于 2024-01-04 09:49:58 发布