在linux下手动安装 apache, php, mysql: 参考: http://www.cnblogs.com/lufangtao/archive/2012/12/30/2839679.html

卸载dnf安装的httpd:

纯文本照样可以做到 "有格式的", 通过 "缩进, 空格, tab, 连字符如- , : , ... 等" . 有一个基本原则就是做到 按行 为单位 进行处理.
如: checking whether we are cross compiling... no

configure 不是系统提供的, 默认的命令, 只是在 软件安装包中提供的一个配置命令, 它本身有 帮助文档! 可以通过 ./configure --help 来查看如何进行配置.
比如: features options(--disable-.., --enable-...), directory options, install options等等, 通用的如: --slient, --quiet, -q, -n, --version等等.
其中安装路径, 如果用

dnf的安装路径是 直接在 /usr下, 包括: /usr/bin, /usr/sbin,


更加清楚linux 的目录结构了:

  1. 除了软件支持的目录外, 其他就是一些 系统运行所需要的支持 目录 / 和 用户的目录和辅助目录, 如: 系统运行所需要的支持目录, 如: /dev, /sys, /proc , /run ,/tmp, /var, /boot, 用户的目录包括: /root, /home, 辅助目录, 如/var, /media, /mnt, /opt, 配置目录/etc等
  2. 软件支持的目录, 总的来说, 包含几个部分: bin, sbin, lib(就是类/结构体/联合/枚举/常量const等的实现), include, src, share(资源文件,如js, css, pictures, assets,man, info等), 分为三级
    一是, 系统自带的 , 即使是最小化安装, 也有的 部分, 主要是指根目录下的几个目录, 包括: /bin, /sbin, /lib
    二是, 工具dnf安装的, 主要放在/usr下面, 包廓: /usr/bin, /usr/sbin, /usr/lib, /usr/share, /usr/libexec等
    三是, 用户自己通过源码安装的, 主要放在/usr/local下面, 根据你自己的 configure设置, 可以放在 local下的不同目录中, 如: /usr/local/apache2等等.
    总之, 就是 系统自带的软件除外, /usr是最主要的 (也不是必须安装 在 这里的, 有的就安装在 /home/softName/中)软件安装地方/

./configure下设置安装地址的选项是 --prefix, 不是 --with-prefix, --with通常跟需要的模块指定地址..


关于linux shell中的大括号? 注意和php中的${}, {$...} 相区别

  1. "{$var1} "不同于php中的写法, 在php中 "{$var1}" 表示的是, 一个变量. 而shell中则没有这样的含义, 大括号会原样输出;
  2. ${var} 则具有特殊的含义, 大括号表示对变量的特殊运算! 比如 :0:5 冒号表示借取; 而#号和% 也表示 "删除并截取".
  3. 因为表示表里的符号是$, 而# 在$前面, % 在$后面, 所以 ${var#*/}表示删除/左边的内容, ${var%/*}表示删除/ 右边的内容.
  4. 一个#表示最小匹配, 两个## 表示最大/最多匹配 删除的内容总是用* 表示, 如果是删除左边的内容, 则星号在删除 标示符的左边, 如果删除右边的内容, 则星号在标示符的右边.
    参考: http://www.jb51.net/article/64804.htm

从/usr/local/apache2/apr-1.6.2/include/ 可看出, 里面正是 传统的 c语言的 头文件! .h文件
在 apr_dso.h 头文件中, 有预编译语句 #infdef APR_DSO_DOT_H #define APR_DSO_DOT_H
同时,有类型定义语句, typedef struct apr_dso_handle_t 注意, 类型定义语句, 跟 定义 一个 变量的语句相类似.. 如: int x; typedef int WIDTH

html
内容(Markdown编辑器) 查看自动保存内容
C 语言的预编译, 编译和链接?
编译的时候, 是将.c文件 生成.o的目标文件, 这个是"预制件", 是任何程序都可以直接使用的 "材料" , 所以叫共享库文件. 如果c文件是沙子, 水泥, 粘土, 那么.o文件就是 砖块, 水泥砖等.
链接就是最终生成 可执行文件, 生成 "最终产品"了.
预编译, 根据语法要求, 凡是用 # 号开头的都是 预编译 , 包括 #define ... #include... #ifdef #ifndef 等等.
预编译都不是可执行 的语句 ! 所以 都不用 加分号(c语言中, 凡是加分号; 的都是 要执行的语句)
预编译 都是 "替换" , 都是用来 替换的! 比如: include ... 就是将该包含文件的内容放在这里进行替换, 因为只是替换, 所以 不是执行语句, 所以不加分号
另外, 因为 预编译都是替换, 比如 # define, 都是 要放在 一个语句中间 的! 你不会在一个语句的中间去加上分号.


有很多形式的httpd的配置 选项, 总的来说, 记住这几个就好了: (因为其他很多选项和features, 使用默认的就好了, 比如: --enable-dir, --enable-alias)

--prefix,
--enable-so
--enable-rewrite
--enable-modules=most
这种配置选项, 可以说是到处都可以轻易地找到. 因为2.2.x的版本, (虽然也支持worker和event模式 , 但是默认的)是prework多子进程 单线程模式, 所以可以不用配置 --with-mpm=prefork, 从 ./configure --help 命令的帮助 就可以看出...

在配置时, 如果 在 最后 没有出错信息 提示, 而且在 软件目录下有 Makefile文件和 每个模块目录下都 有 Makefile文件, 就说明配置正确

编译生成的 .o, .a, .lo, .la等文件

.o文件就是make的目标, 生成的obj目标文件, 相当于 提供函数和接口的 中间件,中间成品, 多个.o文件 链接就成为 可执行的 软件.
.a 是 archive文件, 是多个.o文件的打包 集合文件. 即常说的静态库
.lo, 和 .la是使用 libtool 生成的 .o文件和.a文件的 描述文件.
libtool 只和 .lo和.la文件打交道, 将复杂的编译工作 做了抽象和 多平台封装...
make的目标文件Makefile的写法参考: 大器晚成的: http://www.cnblogs.com/luchen927/archive/2012/02/05/2339002.html

make只是生成了一些文件, 并没有拷贝文件到 安装目录, 因此 还必须使用 make install来拷贝到目标安装目录.

当然, make install还做了大量的 很多的 工作, 包括: 使用 libtool, mkdir , 还有其他很多的install安装工作等等..

httpd的官方上下载的 在这个版本的httpd-2.2.34中 , 本身就包含了 apr和apr-util的依赖包. 在make和make install 的时候, 就安装好了, 所以 并不需要 在安装httpd前 事先安装apr和apr-util. 但是并不是所有的 下载的 httpd包都包含了apr和apr-util的, 有的还需要事先安装apr等, 要视具体的情况而定.

为了避免每次都要完整的 写出启动路径, 可以将 httpd 做一个链接 到 /usr/sbin中: ln -s /usr/local/apache2/bin/httpd /usr/sbin/http 因为httpd是 服务器deamon所以, 最好是放在 /usr/sbin下. 而不是 bin下

### 在shell中, 运行命令, 如果 "直接写 命令名称" 不是使用 的 "./命令名称" , 但是 如果不是在 系统规定的 PATH 中, 即使 当前路径中有这个命令, 它也不认! 因为shell总是从 $PATH 指定的那几个目录中去搜索命令, 进行执行. 如果当前命令所在目录 没有在$PATH 中, 就要用 ./命令名 的方式执行. 或者是把 路径加入到 PATH 中 .

export的意思和作用?

  1. 使用 export 就是要理解shell 变量的作用域 和生命期
  2. 每次用./script.sh的方式执行 一个脚本的时候, 是 "新开一个子shell来执行" , 其实是新创建了一个子shell, 只是你看不到的话. 而source, 和点命令, 则是 直接在当前shell中执行, 不会新开 子shell.
  3. 在新开的子shell中执行脚本的时候, 会把父shell中的 "系统环境变量" 复制到子shell中, 使用 export == "输出", "输出到 子shell中" == "将变量设置为 当前 shell的 系统环境变量,
  4. 所以, 如果不使用 export, 那么一个 shell中的 变量 只是 "局部变量" 它的作用域就只是当前 shell, 在 子shell中就无效!

参考:

每次新启动一个 shell的时候, 总是 先执行 /etc/bashrc, 然后执行用户的环境配置文件 sourc ~/.bashrc. 因为是 source, 所以, .bashrc中的变量 如新增/修改的 PATH变量, 会自动在 当前shell 中生效, 所以 你可以不用 export, 当然 如果你使用了 export会更好, 因为这时候, 这个变量不只是会在 当前shell中生效, 甚至 在当前shell中 新开的 子shell中(如执行一个用户自定义 脚本)也是有效的, 否则 就不会在子shell中有效!


自己手动源码安装php?

  1. 如果没有安装php, 那么htdocs下的php文件对apache来说, 就是透明的, "无视的", "好像不存在一样"
  2. php的版本问题 , 用的最多的还是php5, 但是php5.2 没有多少新特性(特别是oop), 技术已经过时; 一般php5.3 加入了很多新特性, 特别是对oop的支持, 稳定版本是 php5.3.28. 但是 php5.4 做了一些优化, 速度更快, 内存占用更少. 现在用的较多的是:: php 5.5.x

  3. 下载地址: php.net/downloads.php, .../from/a/mirror China: cn2.php.net

如何启动httpd?

  1. 你可以直接使用 htttpd, 不带参数的话, 就是直接启动
  2. 或者, 显式的启动是: httpd -k start|stop|restart 等等.
  3. 一般 在 ./configure 的时候, 就会检查 软件的 dependencies 依赖性, 如果依赖性不满足, 就会报错, 配置不会通过.

安装php时的出错问题?

  1. dnf使用163的仓库源时, 可能遇到很干脆的返回, 是因为163的服务器上把低版本的23版本源给删除了, 可以使用更高的版本源, 比如是25的同样可以.

  2. 很多软件都提供了 软件和该软件的devel, 有些需求的问题可能 是 在 该软件的devel衍生软件中, 如libxml2, libxml2-devel
  3. 遇到 php配置时提示 没有 xml-config, 提示检查 libxml2库, 其实libxml2库已经安装, 这个 xml-config是 在 libxml2-devel.

手动源码安装php时, 怎么没有php的配置文件?

  1. php的配置文件是 php.ini
  2. php不像apache, 有自己专门的 配置目录, 如 conf/httpd.conf, 它没有自己的配置目录,
  3. 它的配置文件, 需要自己写, 或者 在 下载的源码src 中 , 有两个 : php.ini-development, php.ini-production , 把其中的一个拷贝到 lib中就可以了
  4. php.ini放的位置 应该是: /usr/local/php5.5/lib/下面, 即$prefix/lib/ 下.

在linux下手动安装 apache, php, mysql--终极版的更多相关文章

  1. windows下手动安装 Apache+php+mysql

    PHP 为什么先说php,因为apache的配置要写入php的一些路径 http://php.net/downloads.php  选择windows donwload 选择Thread Safe的版 ...

  2. linux下手动安装apache详解

    引自:http://blog.chinaunix.net/uid-28458801-id-4211258.html error1:出现以下错误时候,需要下载安装apr configure: error ...

  3. Linux下编译安装Apache Http Server

    Linux下编译安装Apache Http Server [TOC] 1.下载httpd-2.4.12.tar.bz2 wget http://mirror.bit.edu.cn/apache/htt ...

  4. 在Windows XP下手动安装Apache+MySQL+PHP环境 要点

    在整个wamp环境搭建中,本质的工作如下: 1,配置系统对php中dll文件能默认处于调用状态.在windos下,对dll文件系统默认处于调用状态的,有两种采用的方式.第一种是:把需要调用dll文件复 ...

  5. Linux下编译安装Apache 2.4

    Linux一般会自带httpd服务,但是版本一般不是最新,性能也不是最好,生产中建议手动安装官方源码包,安装Apache官方包之前首先要停止之前的httpd服务,停止后也可以卸载之前的版本 准备工作做 ...

  6. linux下yum安装指定的mysql版本

    因为直接使用yum安装的mysql会是默认版本5.1的版本  但是有的同学不满足又想要其他版本的怎么办呢? 曾时候我来提供一种方案(仅供参考): 我们可以使用rpm包来进行指定mysql版本的安装, ...

  7. 丢用lamp手动安装apache php mysql

    Centos7环境下. 使用lamp环境无法正常显示出thinkphp站点的内容,一气之下,选择手动安装 第一步: 安装apache  php 和php连接数据库的工具php-mysql [root@ ...

  8. Linux下编译安装Apache及模块

    Apache是时下最流行的Webserver软件之中的一个,支持多平台,可高速搭建web服务,并且稳定可靠.并可通过简单的API扩充.就能够集成PHP/Python等语言解释器. 文章这里解说怎样在l ...

  9. Windows手动安装Apache,MySql服务

    绿色版的Apache,Mysql需要以服务方式运行.或者由于某种原因服务管理器里面没有服务项了,可以进行手工注册服务和启并服务. # Apache Apache进到安装目录的bin目录下,运行dos命 ...

随机推荐

  1. vs2017创建支持多框架(net4.6.1;net4.6.2;netstandard2.0;netcoreapp2.0)版本

    1.新建netcore或netstandard或net4.6.1项目 2.编辑项目文件: <Project Sdk="Microsoft.NET.Sdk">   < ...

  2. SQL中的replace函数

    REPLACE 用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式. 语法 REPLACE ( 'string_expression1' , 'string_expression2 ...

  3. CSS选择符-----伪类选择符

    Element:hover E:hover { sRules }  设置元素在其鼠标悬停时的样式 <!DOCTYPE html> <html> <head> < ...

  4. spring4.0.0 源码导入eclipse(sts)

    其余步骤请见:http://www.cnblogs.com/xiluhua/p/7450972.html 执行 gradle eclipse -x :eclipse 报错: 解决办法: 找到 行,注释 ...

  5. 性能测试工具Locust,一个开源性能测试工具

    性能测试工具Locust,一个开源性能测试工具使用Python代码来定义用户行为.用它可以模拟百万计的并发用户访问你的系统.1.它与目前主流的LoadRunner和Jmeter玩法都不一样.2.它完全 ...

  6. centos 安装arcgis server 10.1

    1.创建新用户,不要在root下面直接安装 [root@localhost ~]# groupadd esri //创建esri组 [root@localhost ~]# useradd ags -g ...

  7. 深入理解Node.js基于事件驱动的回调

    回调和异步调用的关系 首先明确一点,回调并非是异步调用,回调是一种解决异步函数执行结果的处理方法.在异步调用,如果我们希望将执行的结果返回并且处理时,可以通过回调的方法解决.为了能够更好的区分回调和异 ...

  8. How to use CAR FANS C800 Diagnostic Scan Tool to do diagnosis operation

    How to use Heavy Duty Diagnostic CAR FANS C800 Diagnostic Scan Tool to do diagnosis operation Here i ...

  9. 怎样从外网访问内网PostgreSQL数据库?

    本地安装了一个PostgreSQL数据库,只能在局域网内访问到,怎样从外网也能访问到本地的PostgreSQL数据库呢?本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动PostgreSQ ...

  10. QQ项目

    QQ第一部分: 1.数据库 每一个QQ账户必须有  a. state:是否上线的状态  b. IP:正在上线的主机的IP  c. port:UDP端口号(用这个和别的好友通讯)  注:TCP连接时,在 ...