首先注意usr 指 Unix System Resource,而不是User
/usr/bin下面的都是系统预装的可执行程序,会随着系统升级而改变
/usr/local/bin目录是给用户放置自己的可执行程序的地方,推荐放在这里,不会被系统升级而覆盖同名文件
如果两个目录下有相同的可执行程序,谁优先执行受到PATH环境变量的影响,比如我的一台服务器的PATH变量为
echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/dean/bin
这里/usr/local/bin优先于/usr/bin,
安装apache
yum install httpd #这是安装系统里默认的apache。yum info httpd.86_64 查看下版本
安装完Apache后,无法启动是怎么回事?
[root@bogon httpd-2.4.20]# systemctl start httpd.service
Failed to start httpd.service: Unit httpd.service failed to load: No such file or directory.
[root@bogon httpd-2.4.20]# systemctl status httpd
● httpd.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
[root@bogon httpd-2.4.20]#
明明已经安装好了哦,怎么说没有目录呢?
Apache安装在了/usr/bin/apache里面
需要将Apache注册到Linux服务里
在Linux下用源代码方式编译安装完Apache后,启动关闭Apache可以通过如下命令实现:
/usr/local/apache/bin/apachectl start | stop | restart
如果想将httpd列入系统自动启动的服务,可以直接将上述的apachectl文件拷贝到/etc/rc.d/init.d 中,然后在相应的启动级别如3,5中加入链接即可。命令如下:
cp /usr/local/apache2/bin/apachectl /etc/rc.d/init.d/httpd # 复制到init.d 并重命名为httpd
ln -s /etc/rc.d/init.d/httpd /etc/rc.d/rc3.d/S61httpd # ln [参数][源文件或目录][目标文件或目录] 在另一个位置创建同步链接
init.d下面一共6个级别。哪个基本需要启动服务。就用In去分别创建到哪个路径
链接文件的S61是启动时的序号。当init.d目录下有httpd脚本后,我们就可以通过service命令来启动关闭apache了。在任意路径下执行:
service httpd start | stop | restart
这时有个问题就是:虽然apache已经可以自动启动,但在linux的服务列表中却看不到它,要添加服务,一般通过chkconfig --add xxx来实现,但需要脚本中有相应的信息才行,否则chkconfig就会提示:xxx 服务不支持 chkconfig。所以我们首先编辑httpd脚本,在第2行(#!/bin/sh下面)添加如下注释信息(包括#):
# chkconfig: 35 61 61
# description: Apache
第一行的3个参数意义分别为:在哪些运行级别启动httpd(3,5);启动序号(S61);关闭序号(K61)。注意:第二行的描述必须要写!
保存后执行:
chkconfig --add httpd #所有开机模式下自启动;
chkconfig httpd on #表示345模式下自启动
这样就将httpd添加入服务了。在rc3.d、rc5.d路径中将来就会出现S61httpd的链接,其他运行级别路径中会出现K61httpd的链接。
运行下面的命令查看服务,就可以看到httpd的服务了。
chkconfig --list #查看服务
服务列表里的0,1,2,3,4,5,6表示的是等级
1表示:单用户模式
2表示:无网络连接的多用户命令行模式
3表示:有网络连接的多用户命令行模式
4表示:不可用
5表示:带图形界面的多用户模式
6表示:重新启动