虚拟机安装
- 使用镜像安装ISO
- 启动虚拟机转换网络桥接模式
-
ifconfig
查看IP - 使用mac终端 或者 window ssh连接Linux
- MAC连接如下:
ssh username@ip
Ubuntu 下的 apt-get 更新
- 在使用之前,需要使用
apt-get update
进行资源目录的更新,注意这里是网络资源目录更新。 -
apt-get upgrade
是进行所安装软件的更新
下载LAMP环境安装包
- Mysql
- Php http://www.php.net
注意:PHP7目前会报错,显示--with-mysql
是未定义的options选项。
- Php http://www.php.net
下载依赖包
公共依赖包
cmake // 用来预编译MySQL
make // 源码预编译
gcc // GNU c编译器
g++ // GNU c++编译器
libxml2-dev // 编译安装libxml2会用此依赖包
libxml2
build-essential // 编译程序的依赖包 作用:提供编译程序必须软件包的列表信息
bison // 安装Mysql会用到
build-depgcc // Ubuntu下的gcc安装
libncurses5-dev // 安装libncurses5的依赖包
re2c // PHP语法分析器
libmcrypt // 算法加密库
autoconf // 自动配置,phpize会用到
Apache依赖包
apr // Apache可移植运行库
apr-until //
pcre // 一个Perl库
编译安装
Apache
- 安装apr
解压后进入目录,执行如下命令
./configure --prefix=/usr/local/apr
make && make install
- 安装apr-until
解压后进入目录,执行如下命令
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make && make install
- 安装pcre
解压后进入目录,执行如下命令
./configure --prefix=/usr/local/pcre
make && make install
- 安装Apache
解压后进入目录,执行如下命令
./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre
make && make install
有时用tar解压.错误如下:
gzip: stdin: unexpected end of file
tar: Unexpected EOF in archive
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now
原因:该源码包在下载过程中被破坏或者未使用想对应后缀的解压命令。
解决方法:重新下载。
- 配置Apache
进入 /usr/local/apache/conf 目录 备份http.conf 为 http.conf.bak
vi http.conf
将187行 ServerName 前#去掉,更改为 ServerName 127.0.0.1:80 保存退出;
进入 apache/bin 目录 apachectl 为服务启动脚本,将此文件 cp 到 /etc/init.d/httpd;
执行命令:sudo service httpd start 通过浏览器访问 localhost 即可看见 it Work 即可;
如果出现未启动情况请查看80端口是否被其他程序占用。
MySQL 安装编译
创建用户和用户组
groupadd mysql
useradd -g mysql- s "/sbin/nologin" // 防止以mysql用户登录系统
进入mysql目录,执行cmake
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DMYSQL_USER=mysql -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_DEBUG=0 -DWITH_READLINE=1 -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1
-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost
-DCMAKE_INSTALL_PREFIX=安装根目录
-DCMAKE_INSTALL_PREFIX=unix套接字目录
-DDEFAULT_CHARSET=默认字符集
-DDEFAULT_COLLATION=默认编码
-DWITH_EXTRA_CHARSETS=额外的编码,请使用ALL来编译。
-DWITH_MYISAM_STORAGE_ENGINE=1 编译myisam存储引擎,默认的存储引擎,不加也可以
-DWITH_INNOBASE_STORAGE_ENGINE=1 支持InnoDB存储引擎,这个也是默认安装的
-DWITH_READLINE=1 使用readline功能
-DENABLED_LOCAL_INFILE=1 可以使用load data infile命令从本地导入文件
-DMYSQL_DATADIR=数据库 数据目录
-DDOWNLOAD_BOOST=1 // 下载boost,这个用来编译高版本的Mysql,没有会报错,也可以进行apt-get
-DWITH_BOOST=/usr/local/boost // 使用boost
这个问题我重新安装一次就没有了
debian 系统下安装,需要把系统 Swap 设到最大的 512M(linode 默认的 Swap 是 256M,最大是 512M),不然编译时会报 “g++: internal compiler error: Killed (program cc1plus)” 的错误:(
编译安装
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --with-freetype-dir=/usr/local/freetype --with-jpeg-dir=/usr/local/libjpeg --with-png-dir=/usr/local/libpng --with-zlib-dir=/usr/local/zlib --enable-mbstring --enable-xml --enable-sockets
make && make install
配置mysql
安装默认数据库
cd /usr/local/mysql/scripts
初始化数据库
./mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
复制配置文件
cd /usr/local/mysql/support-files
cp my-medium.cnf /etc/my.cnf cpmysql.server /etc/init.d/mysqld
修改配置配置文件
vi /etc/init.d/mysqld /*编辑basedir=和datadir=*/
basedir=/usr/local/mysql datadir=/home/mysql servicemysqld start
提示:出国一次pid的错误,解决方式是重新安装。
PHP安装编译
可以查看一下INSTALL文件,里面有安装说明。
说明:此次安装未在编译PHP安装模块,主要是可以通过phpize来实现编译后PHP的扩展安装;如果有需要,也可以实现在前期编译前安装相应的扩展模块,只需要按正常顺序进行解压,配置,编译即可,在编译PHP时加入相应的OPtions参数即可,但需要注意的是依赖包问题。
开始编译
进入PHP解压目录
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with--mysql=/usr/local/mysql
--with-apxs2=/usr/local/apache/bin/apxs // 挂在apache上,并且开启PHP模块
--with-mysql=/usr/mysql/mysql // PHP的扩展模块mysql
make && make install
复制配置文件
cp php.ini-development/usr/local/php/lib/php.ini
修改php.ini 文件 中搜索 date 将默认时区修改为 Asia/Shanhai
修改http.conf文件
向 http.conf 文件中加入
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
搜索DirectoryIndex 修改为
index.html index.php index.htm
在Apache的htdoc目录中建立文件
mv index.html index.php
vim index.php
<?php
echo phpinfo();
?>
安装完成进行测试
浏览器打开对应IP即可
编译PHP扩展
GD库的安装
GD依赖包有很多,需要在安装之前全部安装
注意:安装过程中可能还会需要相应的依赖包,选择安装
libfreetype6-dev
libfontconfig1-dev
libgpm-dev
libjpeg62
libjpeg62-dev
libpng12-0
libpng-12-0-dev
libfeetype6
libfreetype6-dev
libxml2
libxml2-dev
zlib1g
zlib1g-dev
libcurl3
libcur3-dev
libncurses5-dev
libperl-dev bison
libpng
tar -xf libpng-1.6.16.tar.gz
cd libpng-1.6.16
./configure
make
make install
jpegsrc
mkdir /usr/local/jpeg9
mkdir /usr/local/jpeg9/bin
mkdir /usr/local/jpeg9/lib
mkdir /usr/local/jpeg9/include
mkdir -p /usr/local/jpeg9/man/man1
cd /usr/local/src/
tar -zxvf jpegsrc.v9a.tar.gz
cd jpeg-9a/
./configure --prefix=/usr/local/jpeg9/ --enable-shared --enable-static
make && make install
freetype
tar -xf freetype-2.5.5.tar.gz
cd freetype-2.5.5
./configure
make && make install
这是提示找不到libpng的安装位置,所以需要将libpng的bin目录配置到环境变量中
vi /etc/profile
LIB_PNG=/usr/local/libpng/bin
PATH=$LIB_PNG:$PATH
export PATH
生效:./etc/profile
GD库
进入安装的源码包中,找到ext扩展包目录,进如相应扩展包目录 或者 自己下载扩展包,进入相应扩展包目录
我的目录如下:
cd /usr/local/src/php-5.6.19/ext/gd
使用phpize生成configure
/usr/local/php/bin/phpize
使用 configure 安装配置
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
修改php.ini,在该文件的 Dynamic Extensions 模块下添加一行
extension=gd.so
检测gd库安装情况
/usr/local/bin/php -m
/usr/local/bin/php -m |grep gd
安装memcache
安装memcache之前需要安装libevent支持
wget http://down1.chinaunix.net/distfiles/libevent-2.0.21-stable.tar.gz
tar -zxvf libevent-2.0.21-stable.tar.gz
cd libevent-2.0.21-stable
./configure --prefix=/usr/local/libevent
make && make install
接下来安装扩展包
下载memcache
解压
进入目录
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --enable-memcache
make
做到这一步应该会报错,未报错直接跳过。错误内容大致如下:
/usr/local/src/memcache-2.2.3/memcache.c: 在函数‘php_mmc_connect'中:
/usr/local/src/memcache-2.2.3/memcache.c:1902: 错误:提供给函数‘zend_list_insert'的实参太少
/usr/local/src/memcache-2.2.3/memcache.c:1919: 错误:提供给函数‘zend_list_insert'的实参太少
/usr/local/src/memcache-2.2.3/memcache.c: 在函数‘zif_memcache_add_server'中:
/usr/local/src/memcache-2.2.3/memcache.c:1975: 错误:提供给函数‘zend_is_callable'的实参太少
/usr/local/src/memcache-2.2.3/memcache.c:2003: 错误:提供给函数‘zend_list_insert'的实参太少
/usr/local/src/memcache-2.2.3/memcache.c: 在函数‘zif_memcache_set_server_params'中:
/usr/local/src/memcache-2.2.3/memcache.c:2059: 错误:提供给函数‘zend_is_callable'的实参太少
/usr/local/src/memcache-2.2.3/memcache.c: 在函数‘mmc_find_persistent'中:
/usr/local/src/memcache-2.2.3/memcache.c:2159: 错误:提供给函数‘zend_list_insert'的实参太少
/usr/local/src/memcache-2.2.3/memcache.c:2177: 错误:提供给函数‘zend_list_insert'的实参太少
make: *** [memcache.lo] 错误 1
纠错方式:
根据错误,进行修改:
vi memcache.c
将所有的:zend_list_insert(pool, le_memcache_pool);
改为:zend_list_insert(pool, le_memcache_pool TSRMLS_CC);
将所有的:zend_list_insert(mmc, le_pmemcache);
改为:zend_list_insert(mmc, le_pmemcache TSRMLS_CC);
将所有的:if (!zend_is_callable(failure_callback, 0, NULL))
改为:if (!zend_is_callable(failure_callback, 0, NULL, NULL))
vim 修改方式
全部替换
%s/old/new/g
修改完成后,重新make编译:
make && make install
成功则显示
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20131226/
接下来修改php.ini配置文件,增加extension=memcache.so即可,重启服务器
注意:其他扩展库依据以上步骤即可
虚拟机设置
编辑apache服务器的配置文件,开启扩展模块vhost,即去除#号即可
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
http.conf 同级目录下,extra目录,vim httpd-vhosts.conf
<Directory "/usr/local/apache/docs/wbl">
Options Indexes
AllowOverride None
Require all granted
</Directory>
<VirtualHost 172.2.2.33:80>
ServerAdmin webmaster@dummy-host2.example.com
DocumentRoot "/usr/local/apache/docs/wbl"
ServerName wbl.wbl.com
ErrorLog "logs/wbl.wbl.com-error_log"
CustomLog "logs/wbl.wbl.com-access_log" common
</VirtualHost>
主机电脑设置。我的是OSX系统
vim /etc/hosts
加入
172.2.2.33 wbl.wbl.com
重启Apache即可,直接在网页上查看即可
网友评论