首次配置服务器端apache,iptables,hotst,mysql

来源:互联网 发布:c 11多线程编程 编辑:程序博客网 时间:2024/05/17 16:03

最近开始学习Web开发,把遇到的一些问题和解决方法记录在这里,供大家分享,也便于自己查阅。

 

服务器端已经由OPS基本搭好了LAMP环境,但是从其它机器上访问服务器的http://ip/index.html http://domain/index.html返回404错误。

 

首先想到的是apache没有配置好,于是检察了apache的配置文件,并且重启apache

cd /usr/local/apache2/bin

sudo ./apachestl restart

但是仍然不起作用。又胡乱试了一下

sudo ./apachestl start

提示apache已经运行了。又使用命令

netstat -an | grep 80

查看一下80端口,显示正在监听。

 

到现在觉得不是apache的问题,又想到是不是防火墙拦截了http请求。于是关掉防火墙

sudo service iptables stop

这次可以访问http://ip/index.html 了,再打开防火墙

sudo service iptables start

又不能访问了,这说明确实是防火墙拦截了http请求。解决方法是在防火墙里面新增一条规则,允许外面访问80端口。

列出iptables的所有规则

sudo iptables -L

如果在参数里加一个-n,就是以IP地址的形式显示源和目的。iptables里面有INPUTOUTPUTFORWARD三个规则链,这三个链实际上都指向了RH-Firewall-1-INPUT,根据RH-Firewall-1-INPUT中的规则进行实际的判断。iptables会按照顺序检察这些规则,一旦匹配,就按照规则处理(ACCEPTREJECT),后面的规则不再起作用。RH-Firewall-1-INPUT的最后一条规则是拒绝所有,因此,新规则必须插入这条规则前面。于是,我插入了一条新规则

sudo iptables -I RH-Firewall-1-INPUT 3 -p tcp --dport 80 -j ACCEPT

其中,-I代表插入,RH-Firewall-1-INPUT 代表规则链,3代表在第3条规则前面插入,-p代表协议,--dport代表目的端口,-j代表动作。类似的,-A代表在最后添加规则(实际是是无效的,因为前面已经REJECT ALL了),-D代表删除规则。具体可以参考http://apps.hi.baidu.com/share/detail/5504681http://www.phpfans.net/article/htmls/201006/Mjg4NzMx.html

但是,重启iptables

sudo service iptables restart

之后,该规则就消失了,为此,必须保存该规则

sudo service iptables save

这样,重启iptables也没关系了。

 

添加规则后,果然可以访问http://ip/index.html 。但是仍然不能访问http://domain/index.html,原因是IP地址和域名没有对应起来。于是修改/etc目录下的hosts文件,增加一行

IP地址 域名 别名

 

保存后,就可以用http://domain/index.html访问了。

 

最后试了一下mysql,发现root帐户没有密码,于是修改root密码

update mysql.user set password = password('new') where user='root';

这条命令会将mysql.user表中的所有root帐户的密码都设为new

 

好了,今天就写这些了。

 

 

原创粉丝点击