某山寨

z4zr的待调教小窝

CentOS下搭建LAMP环境 Step 2 Apache+MySQL+PHP5齐上阵

CentOS下搭建LAMP环境 Step 2 Apache+MySQL+PHP5齐上阵

上一篇介绍了 CentOS 的安装..
直接正题吧,,,, 拖了半个月了。。。。

LAMP指的Linux(操作系统)、ApacheHTTP 服务器,MySQL(数据库软件) 和PHP(有时也是指Perl或Python) 的第一个字母,一般用来建立web 服务器。

配置防火墙

允许外部访问对应的端口 # service iptables status //用于查看防火墙状态
了解更多iptables的内容
开启80端口、3306端口
# vim /etc/sysconfig/iptables

添加:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT #允许80(http)端口通过防火墙
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT #允许3306(mysql)端口通过防火墙

备注:很多网友把这两条规则添加到防火墙配置的最后一行,导致防火墙启动失败,
正确的应该是添加到默认的22端口这条规则的下面
如下所示:
############################## 添加好之后防火墙规则如下所示 ##############################
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
#######################################################################################
:wq #保存退出
/etc/init.d/iptables restart #最后重启防火墙使配置生效

# service iptables status 用于确定防火墙设置是否生效

关闭SELINUX

注意:这里虽然是关闭了 为了方便初学者使用
推荐了解下权限相关的东西 然后进行合理配置
# vim /etc/selinux/config
############################# 修改好之后配置文件如下所示 ##################################
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
#SELINUX=enforcing #注释掉强制
SELINUX=disabled #关闭
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
#SELINUXTYPE=targeted #注释掉
#######################################################################################
:wq #保存退出

# shutdown -r now //重启

安装Apache

# yum install httpd #根据提示,输入Y安装即可成功安装
安装完成后 启动Apache
# service httpd start

备注:Apache启动之后会提示错误:
正在启动 httpd:httpd: Could not reliably determine the server's fully qualif domain name, using ::1 for ServerName
错误提示可能不同。。 但大致意思都一样 上面为百度到的。。类似的。。

设置为开机启动
# chkconfig httpd on
重启Apache
# service httpd restart
查看启动Apache运行状态
# service httpd status

如果返回httpd(pid ????)running 类似的信息 Apache 就算是OK了
此时 如果有Xwindow 可以使用浏览器访问localhost 看到Apache的默认页面
也可以 在局域网中通过ip进行访问

安装MySQL

# yum install mysql mysql-server #是否要安装,输入Y即可自动安装,直到安装完成
安装完成后 启动MySQL
# service mysqld start
# chkconfig mysqld on #设为开机启动

# cp /etc/my.cnf /etc/my.cnf.bak
# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
#拷贝配置文件(注意:如果/etc目录下面默认有一个my.cnf,直接覆盖即可)

为root账户设置密码
# mysql_secure_installation
################################# 大致遇到的内容 ########################################
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we'll need the current
password for the root user. If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none): #输入root密码,因为没设置,直接回车
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

Set root password? [Y/n] y #输入y
New password: #输入新密码
Re-enter new password: #重输入新密码
Password updated successfully!

Reloading privilege tables..
... Success!
By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y #输入y(是否删除匿名用户)
... Success!

Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y #输入y(禁止root远程登录)
... Success!

By default, MySQL comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y #输入y(删除测试数据库test)

- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y #输入y(刷新权限)
... Success!
Cleaning up...

All done! If you've completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL! #最后出现:Thanks for using MySQL!
#######################################################################################
MySql密码设置完成,重新启动 MySQL:
/etc/init.d/mysqld restart
额..下面两条 额 。。。。。。(忽略)
/etc/init.d/mysqld stop
/etc/init.d/mysqld start

安装PHP5

# yum -y 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直到安装完成
#这里选择以上安装包进行安装,根据提示输入Y回车

重启MySql
# service mysqld restart
重启Apche(一直会有一个报错,就是之前的那个 没影响)
# service httpd restart

配置编辑文件:

Apache配置

# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak #备份
# vim /etc/httpd/conf/httpd.conf #编辑文件
############################### 需要修改的地方 这里可以按照需要进行修改 #######################################
ServerTokens OS  在44行 修改为:ServerTokens Prod (在出现错误页的时候不显示服务器操作系统的名称)

ServerSignature On  在536行 修改为:ServerSignature Off (在错误页中不显示Apache的版本)

Options Indexes FollowSymLinks  在331行 修改为:Options Includes ExecCGI 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! #保存退出
//由于配置文件非常的大。。。 所以最好会用vim进行搜索(感觉vim比vi爽 虽然差距不大)
"/string" 引号中为命令格式 string为要查找的字符串 大致就行 这个是从顶部向下匹配的

重启Apache(还会报那个错误 淡定。。 可以无视感觉)
# service httpd restart
# cp /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.bak #备份
# cp /var/www/error/noindex.html /var/www/error/noindex.html.bak #备份
# rm -f /etc/httpd/conf.d/welcome.conf /var/www/error/noindex.html #删除默认2个测试页

重启Apache
# service httpd restart

PHP配置

# cp /etc/php.ini /etc/php.inibak #备份
# vim /etc/php.ini #编辑
############################### 以下是需要修改的地方 ####################################
;date.timezone = PRC #在946行 把前面的分号去掉,改为date.timezone = PRC

disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,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木马跨站
如果改了之后安装程序有问题(例如:织梦),可注销此行,或者直接写上程序的目录
#######################################################################################
:wq! #保存退出
重启MySql
/etc/init.d/mysqld restart
重启Apche
/etc/init.d/httpd restart

到了这里我们已经完成了基本的LAMP环境配置
在/var/www/html/目录下,创建一个index.php文件,并且编辑,如下:
# cd /var/www/html/
# ls -al
可以看到 没有文件
下面创建个吧
# touch index.php
touch如果文件不存在是会创建的

# vim index.php
#######################################################################################

#######################################################################################
:wq #保存退出

当我们再去访问服务器页面的时候
本机 localhost或127.0.0.1
其他机器 输入ip地址即可
额。。。域名估计看这个文档的人估计也不会有不说了,,,

注意:
apache默认的程序目录是/var/www/html

权限设置
# chown apache.apache -R /var/www/html

#######################################################################################
这里参考了两篇很类似的文章。。。。(应该说是同根生的。。)
Link1 Link2
自己在这里整理一份 是为了好东西要留一份

文章二维码