Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立 的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。随着开源潮流的蓬勃发展,开放源代码的LAMP已 经与J2EE和.Net商业软件形成三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此受到整个IT界的关注。从网站的流量上来 说,70%以上的访问流量是LAMP来提供的,LAMP是最强大的网站解决方案.
软件组件:
PHP 是一种编程语言最初设计生产动态网站。PHP 是主要用于服务器端的应用程序软件。Perl 和 Python 类似。
1.安装http服务器
1)准备工作为了避免发生端口冲突,程序冲突等现象,建议卸载使用rpm方式安装的httpd。
[root@localhost ~]# rpm -e httpd --nodeps
2)源码编译及安装
[root@localhost ~]# tar zxf httpd-2.2.17.tar.gz -C /usr/src/ //解包
[root@localhost ~]# cd /usr/src/httpd-2.2.17/
[root@localhost httpd-2.2.17]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi //配置
各项的含义如下:
- --prefix:指定讲httpd服务器程序安装到那个目录下 ,如/usr/local/httpd
- --enable-so:启用动态加载模块支持,使httpd具备进一步扩展功能的能力
- --enable-rewrite:启用网页地址重写功能,用于网站优化及目录迁移维护
- --enable-charset-lite:启动字符集支持,以便支持各种字符集编码的网页。
- --enable-cgi:启用CGI脚本程序支持,便于扩展网站的应用访问能力
3)编译及安装
[root@localhost httpd-2.2.17]# make && make install
[root@localhost ~]# ls /usr/local/httpd/
bin build cgi-bin conf error htdocs icons include lib logs man manual modules
[root@localhost ~]# //确认安装结果
主要子目录的用途如下:
- /usr/local/httpd/bin:存放httpd服务的各种执行程序文件,包括主程序httpd,服务控制工具apachectl等
- /usr/local/httpd/conf:存在httpd服务的各种配置文件,包括主配置文件httpd.conf,增强配置子目录extra等
- /usr/local/httpd/htdocs:存放网页文档,包括默认首页文件index.html等
- /usr/local/httpd/logs:存在httpd服务的日志文件
- /usr/local/httpd/modules:存放httpd服务的各种模块文件
- /usr/local/httpd/cgi-bin:存在各种CGI程序文件
4)优化执行路径
[root@localhost ~]# ln -s /usr/local/httpd/bin/* /usr/local/bin/
5)添加httpd系统服务
[root@localhost ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@localhost ~]# vim /etc/init.d/httpd
1
2
3
|
#!/bin/sh #chkconfig: 35 85 21 //服务识别参数,在级别3.5中启动;启动和关闭的顺序分别为 85,21 ...................... |
[root@localhost ~]# chkconfig --add httpd //将httpd添加系统服务
[root@localhost ~]# chkconfig --list httpd //查看httpd服务的自启动状态
httpd 0:关闭 1:关闭 2:关闭 3:启用 4:关闭 5:启用 6:关闭
[root@localhost ~]# service httpd restart
测试
aaarticlea/png;base64,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" alt="" />
安装mysqld
[root@www ~]# yum remove -y mysql-server mysql //卸载原有的mysql
[root@www /]# tar zxvf cmake-2.8.5.tar.gz -C /usr/src/ //mysql5.5需要cmake编译
[root@www /]# cd /usr/src/cmake-2.8.5/
[root@www cmake-2.8.5]# ./configure && gmake && gmake install
[root@www /]# useradd -M -s /sbin/nologin mysql //创建mysql运行用户
yum -y install ncurses-devel
[root@www /]# tar zxvf mysql-5.5.22.tar.gz –C /usr/src
[root@www /]# cd /usr/src/mysql-5.5.22/
[root@www mysql-5.5.22]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DSYSCONFDIR=/etc
[root@www mysql-5.5.22]# make && make install
[root@www ~]# cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf //复制配置文件模板
cp: overwrite `/etc/my.cnf'? y
[root@www ~]# chown -R mysql.mysql /usr/local/mysql/ //修改属主属组
[root@www ~]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ //以mysql用户初始化数据库
[root@www ~]# echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile //设置环境变量
[root@www ~]# . /etc/profile //立即生效
[root@www ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld //添加启动脚本
[root@www ~]# chmod +x /etc/init.d/mysqld //添加执行权限
[root@www ~]# chkconfig --add mysqld //添加到服务
[root@www ~]# /etc/init.d/mysqld start
Starting MySQL.... [ OK ]
[root@www ~]# netstat -anpt |grep mysql
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 64808/mysqld
编译安装PHP
yum install libxml2-devel libpng-devel pcre-devel
准备工作,安装libmcrypt、mhash、mcrypt
[root@www /]# tar zxvf libmcrypt-2.5.8.tar.gz -C /usr/src/
[root@www /]# cd /usr/src/libmcrypt-2.5.8/
[root@www libmcrypt-2.5.8]# ./configure && make && make install
[root@www libmcrypt-2.5.8]# ln -s /usr/local/lib/libmcrypt.* /usr/lib/ [root@www /]# tar zxvf mhash-0.9.9.9.tar.gz -C /usr/src/
[root@www /]# cd /usr/src/mhash-0.9.9.9/
[root@www mhash-0.9.9.9]# ./configure && make && make install
[root@www mhash-0.9.9.9]# ln -s /usr/local/lib/libmhash* /usr/lib [root@www /]# tar zxvf mcrypt-2.6.8.tar.gz -C /usr/src/
[root@www /]# cd /usr/src/mcrypt-2.6.8/
解决mcrypt进行配置./configure报错
[root@www mcrypt-2.6.8]# export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
[root@www mcrypt-2.6.8]# ./configure && make && make install
安装PHP
[root@www /]# tar zxvf php-5.3.6.tar.gz -C /usr/src/ [root@www /]# cd /usr/src/php-5.3.6/ [root@www php-5.3.6]# ./configure --prefix=/usr/local/php --with-gd --with-zlib --with-mysql=/usr/local/mysql/ --with-config-file-path=/usr/local/php --enable-mbstring --enable-fpm --with-jpeg-dir=/usr/lib [root@www php-5.3.6]# make && make install
## 优化php执行路径 ##
[root@LNMP ~]# ln -s /usr/local/php/bin/* /usr/local/bin/
[root@LNMP ~]# ln -s /usr/local/php/sbin/* /usr/local/sbin/
## 生成PHP主配置文件并进行修改 ##
注:主配置文件 cp php-5.3.28/php.ini-development /usr/local/php5/php.ini
[root@LNMP ~]# cd /usr/local/php/etc/ [root@LNMP etc]# cp php-fpm.conf.default php-fpm.conf [root@LNMP etc]# useradd -M -s /sbin/nologin php [root@LNMP etc]# vim php-fpm.conf
1
2
3
4
5
6
7
|
pid = run/php-fpm.pid //确认pid文件位置
user = php //运行用户改为php
group = php //运行组改为php
pm.start_servers = 20 //启动时开启的进程数
pm.min_spare_servers = 5 //最小空闲进程数
pm.max_spare_servers = 35 //最大空闲进程数
pm.max_children = 50 |
优化ZendGuardLoader
[root@www /]# tar zxvf ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz -C /usr/src/
[root@www /]# cd /usr/src/ZendGuardLoader-php-5.3-linux-glibc23-i386/php-5.3.x/
[root@www php-5.3.x]# cp ZendGuardLoader.so /usr/local/php5/lib/php/
[root@www /]# vim /usr/local/php5/php.ini
1
2
|
zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so zend_loader.enable=1 //插入配置末尾
|
1
2
3
4
5
6
|
[root@www /]# vim /usr/local/httpd/conf/httpd.conf AddType application/x-httpd-php .php <IfModule dir_module> DirectoryIndex index.html index.php
</IfModule> |
[root@www /]# /etc/init.d/httpd restart
[root@www /]# vim /usr/local/httpd/htdocs/test1.php
<?php
phpinfo();
?>
[root@www /]# vim /usr/local/httpd/htdocs/test2.php
<?php
$link=mysql_connect('localhost','root','aptech');
if($link)
echo "Mysql OK~~~";
mysql_close();
?>
测试
aaarticlea/png;base64,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" alt="" />
企业网站建设必然离不开服务器运维,一个稳定高效的服务器环境是保证网站正常运行的重要前提。本文小编将会详细讲解Linux系统上如何搭建配置高效的lamp服务环境,并在lamp环境中搭建起企业自己的网站。
先简要概述下本文要点:(操作系统采用CentOS 6.5 x64)
1.分别安装搭建lamp服务环境;
2.采用lamp一键安装包搭建环境;
3.在lamp环境中初步搭建起一个网站;
一、 分别安装搭建lamp服务环境
准备工作:
1、配置防火墙,开启80端口、3306端口
vi /etc/sysconfig/iptables
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT #允许80端口通过防火墙
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT #允许3306端口通过防火墙
将以上内容添加到 -A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT 的下面
/etc/init.d/iptables restart #最后重启防火墙使配置生效
2、关闭SELINUX
vi /etc/selinux/config
#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
:wq #保存,关闭
shutdown -r now #重启系统
安装:
1、安装Apache
卸载自带httpd: yum remove httpd
yum install httpd #根据提示,输入Y安装即可成功安装
/etc/init.d/httpd start #启动Apache
备注:Apache启动之后会提示错误:
正在启动 httpd:httpd: Could not reliably determine the
server’s fully qualif domain name, using ::1 for ServerName
解决办法:
vi /etc/httpd/conf/httpd.conf #编辑
找到 #ServerName www.example.com:80
修改为 ServerName www.osyunwei.com:80 #这里设置为你自己的域名,如果没有域名,可以设置为localhost
:wq! #保存退出
chkconfig httpd on #设为开机启动
/etc/init.d/httpd restart #重启Apache
2、安装MySQL
先卸载自带mysql:
yum remove mysql mysql-server mysql-libs compat-mysql51
rm -rf /var/lib/mysql
rm /etc/my.cnf
安装:
yum install mysql mysql-server #询问是否要安装,输入Y即可自动安装,直到安装完成
/etc/init.d/mysqld start #启动MySQL
chkconfig mysqld on #设为开机启动
cp /usr/share/mysql/my-medium.cnf /etc/my.cnf #拷贝配置文件(注意:如果/etc目录下面默认有一个my.cnf,直接覆盖即可)
为root账户设置密码:
mysql_secure_installation
回车,根据提示输入Y
输入2次密码,回车
根据提示一路输入Y
最后出现:Thanks for using MySQL!
MySql密码设置完成,重新启动 MySQL:
/etc/init.d/mysqld restart #重启
/etc/init.d/mysqld stop #停止
/etc/init.d/mysqld start #启动
3、安装PHP5
yum install php
根据提示输入Y直到安装完成
安装PHP组件,使 PHP5 支持 MySQL
yum install php-mysql php-gd libjpeg* php-imap php-ldap php-odbc php-pear
php-xml php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt
这里选择以上安装包进行安装
根据提示输入Y回车
/etc/init.d/mysqld restart #重启MySql
/etc/init.d/httpd restart #重启Apche
相关配置:
1、Apache配置
vi /etc/httpd/conf/httpd.conf #编辑文件
ServerTokens OS 在44行 修改为:ServerTokens
Prod (在出现错误页的时候不显示服务器操作系统的名称)
ServerSignature On 在536行 修改为:ServerSignature
Off (在错误页中不显示Apache的版本)
Options Indexes FollowSymLinks 在331行 修改为:Options i n c l u d es e x e cCGI FollowSymLinks(允许服务器执行CGI及SSI,禁止列出目录)
#AddHandler cgi-script .cgi 在796行 修改为:AddHandler cgi-script .cgi .pl (允许扩展名为.pl的CGI脚本运行)
AllowOverride None 在338行 修改为:AllowOverride
All (允许.htaccess)
AddDefaultCharset UTF-8 在759行 修改为:AddDefaultCharset GB2312 (添加GB2312为默认编码)
Options Indexes MultiViews FollowSymLinks 在554行 修改为 Options MultiViews FollowSymLinks(不在浏览器上显示树状目录结构)
DirectoryIndex index.html index.html.var 在402行 修改为:DirectoryIndex index.html index.htm Default.html Default.htm
index.php Default.php index.html.var (设置默认首页文件,增加index.php)
KeepAlive Off 在76行 修改为:KeepAlive
On (允许程序性联机)
MaxKeepAliveRequests 100 在83行 修改为:MaxKeepAliveRequests 1000 (增加同时连接数)
:wq! #保存退出
/etc/init.d/httpd restart #重启
rm -f /etc/httpd/conf.d/welcome.conf /var/www/error/noindex.html #删除默认测试页
2、php配置
vi /etc/php.ini #编辑
date.timezone = PRC #在946行 把前面的分号去掉,改为date.timezone = PRC
disable_functions = p a s s t h r u,e x e c,s y s t e
m,chroot,scandir,chgrp,chown,shell_e x e c, p r o c _ o p e
n,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,pope
p a s s t h r
u,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,
getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd,
posix_getegid,posix_geteuid,posix_getgid,
posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,
posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit,
posix_getsid,posix_getuid,posix_isatty,
posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,
posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname
#在386行 列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。
expose_php = Off #在432行 禁止显示php版本的信息
magic_quotes_gpc = On #在745行 打开magic_quotes_gpc来防止SQL注入
short_open_tag = ON #在229行支持php短标签
open_basedir = .:/tmp/ #在380行
设置表示允许访问当前目录(即PHP脚本文件所在之目录)和/tmp/目录,可以防止php木马跨站,如果改了之后安装程序有问题(例如:织梦内容管理系
统),可以注销此行,或者直接写上程序的目录/data/www.osyunwei.com/:/tmp/
:wq! #保存退出
/etc/init.d/mysqld restart #重启MySql
/etc/init.d/httpd restart #重启Apche
测试:
cd /var/www/html
vi index.php #输入下面内容
<?php
phpinfo();
?>
:wq! #保存退出
在客户端浏览器输入服务器IP地址,可以看到如下图所示相关的配置信息!
其他:
后续安装PDO_MySQL拓展模块,只需要: yum install php-mysql
手动安装会出现错误(configure: error: mysql_query missing!?)
二、采用lamp一键安装包搭建环境
很多朋友可能认为分别安装Apache、mydql、php很麻烦,还需要手动配置。所以接下来小编带领大家了解下如何用lamp一键安装包搭建服务环境。
部署LNMP/LAMP/LNMPA一键包
1、脚本下载解压和执行安装
wget http://mirrors.linuxeye.com/lnmp-full.tar.gz
tar xzf lnmp-full.tar.gz
cd lnmp
./install.sh
2、安装过程的项目选择
因为这个脚本的特点不是从开始就无人值守的,需要根据我们的环境进行选择各种版本,所以选择的过程比较复杂,我们要看清楚,在这个过程中我们安装LAMP环境。
(1)、升级系统和端口、WEB服务器安装设置
开始过程我们看到上图,官方建议不更新系统,那我们就不更新。我们可以直接在安装脚本过程中直接修改ROOT端口,这个非常不错,要不我们在服务器安全事项处理的时候也需要修改端口,不要用默认的22。WEB服务器的安装,因为我们要安装LAMP环境,所以NGINX不安装,APACHE安装自己希望的版本,我这里安装2.4。
(2)、数据库版本和PHP版本选择安装
这里我们还要选择数据库和PHP版本的安装。
(3)、其他相关服务器组件的安装
我们根据自己的网站环境需求环境,配置需要的组件,小编个人建议是如果有需要用到就安装,没有必要用到就不要安装。
第三、安装完毕后一些部署工作
设置完毕之后,然后就是自动无人值守的安装,根据系统的速度需要执行20-30分钟,总之我们就等待,等待看到上图的界面就标示安装完毕,我们可以输入y重启服务器,然后检测下是否安装完整。
我们在服务器配置环境之后还是需要做几个工作的,最为主要的是删除默认安装的首页,在home/wwwroot/default中的首页,以及需要修改PHPMYADMIN的目录路径,原因大家都懂的,不懂也要做。
三、在lamp环境中初步搭建起一个网站
这里我们以主流的蝉知系统为例,直接在刚才一键安装好的LAMP环境中搭建网站。
蝉知企业建站系统下载: www.chanzhi.org/download/chanzhi5.2-126.html/?u=xcj
蝉知系统使用手册:http://www.chanzhi.org/book/chanzhieps.html/?u=xcj
下载解压后,将s y s t e m文件夹移到www文件夹中,这个www文件夹就是我么一会需要上传的网站文件。
LAMP环境添加站点:
因为一键包不同于WEB面板,我们添加站点需要用到命令,好歹比手工部署好一些,用到下面的命令。
cd /root/lnmp
./vhost.sh
我们将www下的文件上传到网站根目录下,访问网站地址进行安装。
启动安装程序
访问您的域名http://domain/install.php。如果您将蝉知安装在二级目录,还需要再加上二级路径。
检查模块和目录权限
备注:如果模块或者目录检查不通过的话,请按照系统给出的提示进行操作以解决问题。
配置数据库
备注:如果之前有安装过蝉知系统,可以选中“清空现有数据”按钮进行重新安装。
保存配置文件
备注:系统会自动尝试保存配置文件。如果由于权限的问题,请按照提示拷贝文本框里面的配置内容,手工保存到config/my.php文件中。
设置管理员帐号
登录后台
至此,我们已经成功的搭建起LAMP服务环境,并在LAMP环境中搭建起我们的网站了。如何大家还有其他疑问,欢迎评论讨论,我们共同交流,共同进步。