圣泉山人 后端开发工程师

LAMP环境搭建

2015-12-28

总览

解锁此技能要求:

  • Linux系统安装
  • 配置使用ssh服务、ftp服务
  • 用户和组的操作
  • 搭建LAMP环境以及常用扩展
  • 搭建LNMP环境
  • 安装Memcache+Redis+MongoDB+SVN

CentOs 安装

  • 下载centos镜像文件
  • 刻录光盘或者放到已做成系统盘的U盘里面(如果是虚拟机就直接在dvd处选择镜像目录)
  • 开始引导系统安装
  • 根据提示选择即可完成安装

组 和 用户

创建一个用于开发的组develop

groupadd -g 520 develop     // -g 520 : 指定GID为520

develop组下创建一个用于开发的用户mayy

useradd mayy -g 520 

删除组 和 用户

groupdel develop

userdel -r mayy         // -r 会同时删除用户的家目录

ssh + ftp 服务

ftp服务:

1、检查vsftpd服务是否已经安装

[root@localhost ~]# rpm -q vsftpd
package vsftpd is not installed

2、安装vsftpd

yum -y install vsftpd

3、修改配置

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
----------------------------------------------
anonymous_enable = NO   #修改:禁止匿名用户登录

# chroot_local_user = YES  #如果需要禁止ftp用户跳出自己的家目录,需要去掉此行的注释。配置ftp服务器使一般要此配置

4、重启vsftpd

service vsftpd restart

5、把sshvsftpd服务加入自动启动:

service sshd start
service vsftpd start

6、使用xshell连接Linux

  • 查看Linux的ip地址:
[myy@localhost ~]$ ifconfig
...
inet addr:192.168.116.128 
  • 在要使用xshell连接Linux的电脑终端使用命令ping确认ip地址是通的。
  • 使用xshell连接

7、使用Xftp连接Linux,同ssh的连接,但需要注意:ftp的连接需要使用非root账户

搭建LAMP环境

LAMP环境搭建所需要的每个软件的软代码文件,都是以tar.gz或.tgz提供给我们的打包压缩文件,所以必须将其解压再解包(tar–zxvf *.tar.gz)。源代码包的安装过程分三步:配置(configure)、编译(make)、安装(makeinstall

1、查看LAMP所需的环境是否已经安装

[myy@localhost ~]$ rpm -q make gcc gcc-c++ zlib-devel libtool libtool-ltdllibtool-ltdl-devel bison ncurses-devel

make-3.81-23.el6.x86_64
gcc-4.4.7-17.el6.x86_64
gcc-c++-4.4.7-17.el6.x86_64
zlib-devel-1.2.3-29.el6.x86_64
libtool-2.2.6-15.5.el6.x86_64
package libtool-ltdllibtool-ltdl-devel is not installed
bison-2.4.1-5.el6.x86_64
ncurses-devel-5.7-4.20090207.el6.x86_64

2、如果上诉插件有缺失的话,使用yum安装即可

[root@localhost ~]# yum -y install make gcc gcc-c++ zlib-devel libtool libtool-ltdllibtool-ltdl-devel bison ncurses-devel

3、查看httpdmysqlphp是否已经安装

[root@localhost ~]# rpm -q httpd mysql php

httpd-2.2.15-45.el6.centos.x86_64
mysql-5.1.73-5.el6_6.x86_64
package php is not installed

4、卸载掉之前的版本,全部重新获取需要的版本安装

[root@localhost ~]# rpm -e httpd --nodeps
[root@localhost ~]# rpm -e mysql --nodeps

[root@localhost ~]# rpm -q httpd mysql php
package httpd is not installed
package mysql is not installed
package php is not installed

从官网获取对应的AMP的tar包到Linux

[root@localhost ~]# ls
mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz
httpd-2.4.23.tar.gz
php-5.6.24.tar.gz

Apache的安装

1.解压缩

[root@localhost ~]# tar -zxvf httpd-2.4.23.tar.gz

2、进到解压后的目录,进行配置安装路径和安装形式

[root@localhost ~]# cd httpd-2.4.23
[root@localhost httpd-2.4.23]# ./configure --prefix=/usr/local/apache --enable-so

此时出现如下报错信息:

configure: 
checking for APR... no
configure: error: APR not found.  Please read the documentation.

解决:

wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gz
tar -zxf apr-1.4.5.tar.gz
cd apr-1.4.5
./configure --prefix=/use/local/apr
make
make install

继续配置Apache,出现如下报错新:

configure: 
checking for APR-util... no
configure: error: APR-util not found.  Please read the documentation.

继续安装依赖apr-utilpcre,方法同apr:

wget http://archive.apache.org/dist/apr/apr-util-1.3.12.tar.gz
tar -zxf apr-util-1.3.12
cd apr-1.4.5
./configure --prefix=/usr/local/apr-util -with-apr=/usr/local/apr/bin/apr-1-config
make
make install

wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.10/pcre-8.10.zip
unzip -o pcre-8.10.zip
cd pcre-8.10
./configure --prefix=/usr/local/pcre
make && make install

在配置的时候加上指定上面几个依赖的路径:

[root@localhost httpd-2.4.23]# ./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/ --with-pcre=/usr/local/pcre --enable-so 

3、编译、安装

[root@localhost httpd-2.4.23] make && make install

4、操作Apache服务

[root@localhost httpd-2.4.23] /usr/local/apache/bin/apacheectl start|stop|restart

5、对Apache服务的一些处理,便于更快捷地操作

  • 创建Apache服务的软连接到sbin目录下,这样任何地方都可以操作该服务
ln -s /usr/local/apache/bin/apachectl  /sbin/apache
  • rc.local文档里面加上此行,Linux启动时会开启Apache服务
vi /etc/rc.d/rc.local
/usr/local/apache/bin/apachectl start   

6、验证结果 在浏览器中输入linux所在的ip地址(前提是没有修改Apache的域名配置),如果ip地址能ping通,但是提示的无法访问网站,则把linux的防火墙关闭后再试

service iptables stop | start   #及时生效,重启后失效 ,如果要永久关闭:chkconfig iptables off | on(重启后生效)

浏览器中显示“it works!”表示Apache服务已经正常工作。

MySQL的安装

1、安装必要的软件包

yum -y install  gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* make cmake

2、mysql5.6.12是绿色版,无需编译

[root@localhost ~]# tar -zvxf mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz
[root@localhost ~]# mv mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz /usr/local/mysql

3、创建mysql 用户及用户组

groupadd mysql 
useradd -r -g mysql mysql 

3、改变mysql文件夹所属组

chown -R mysql:mysql mysql

4、初始化数据库

/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/

5、数据库配置文件处理

cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

vi /etc/init.d/mysql
#修改文件中的两个变更值
basedir=/Data/apps/mysql
datadir=/Data/data/mysql/data

6、添加环境变量并添加自启动服务

vi /etc/profile
#最后一行添加以下两行:
export MYSQL_HOME="/usr/local/mysql"
export PATH="$PATH:$MYSQL_HOME/bin"
#保存退出

source /etc/profile #使修改立即生效

chkconfig --add mysql
chkconfig mysql on

7、启动mysql

service mysql start
#会提示:Starting MySQL.. 
#查看mysql服务:
ps aux|grep mysql

8、登录mysql及改密码与配置远程访问

#修改root用户密码
/usr/local/mysql/bin/mysqladmin -u root password 'your_password'
#登录mysql,需要输入密码
/usr/local/mysql/bin/mysql -u root -p

#允许root用户远程访问
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password' WITH GRANT OPTION;     
mysql>FLUSH PRIVILEGES;#刷新权限
mysql>exit

找回密码

/usr/local/mysql/bin/bin/mysqld_safe --basedir=/Data/apps/mysql --datadir=/usr/local/mysql/data --skip-grant-tables &
/usr/local/mysql/bin/mysql -u root mysql
UPDATE user SET password=PASSWORD("new_password") WHERE user='root';
FLUSH PRIVILEGES;

PHP的安装

1、顺序安装依赖:

创建目录放置依赖包:mkdir -p /usr/local/libs

  • jpeg 依赖
wget http://www.ijg.org/files/jpegsrc.v9.tar.gz
tar -zxvf jpegsrc.v9.tar.gz
cd jpeg-9/
./configure --prefix=/usr/local/libs --enable-shared --enable-static
make && make install
  • libpng 依赖
wget http://prdownloads.sourceforge.net/libpng/libpng-1.6.2.tar.gz
tar zxvf libpng-1.6.2.tar.gz
cd libpng-1.6.2/
./configure --prefix=/usr/local/libs/
make && make install
  • freetype 依赖
wget http://download.savannah.gnu.org/releases/freetype/freetype-2.4.12.tar.gz
tar zxvf freetype-2.4.12.tar.gz
cd freetype-2.4.12/
./configure --prefix=/usr/local/libs/
make && make install
  • libmcrypt 依赖
wget http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz
tar zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8/
./configure --prefix=/usr/local/libs
make && make install

cd libltdl/
./configure --prefix=/Data/apps/libs --enable-ltdl-install
make && make install
  • mhash 依赖
wget http://downloads.sourceforge.net/mhash/mhash-0.9.9.9.tar.gz
tar zxvf mhash-0.9.9.9.tar.gz
cd mhash-0.9.9.9/
./configure --prefix=/usr/local/libs
make && make install
  • libiconv依赖
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar -zxvf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure --prefix=/usr/local/libs
make && make install

#解决./stdio.h:1010:1: 错误:‘gets’未声明(不在函数内) 的问题
cd srclib/
sed -i -e '/gets is a security/d' ./stdio.in.h
cd ../
make && make install
  • 添加:编译时使用的动态链接库的路径
vi /etc/ld.so.conf
#添加一行
/Data/apps/libs/lib
#生效
ldconfig
  • mcrypt依赖
wget http://downloads.sourceforge.net/mcrypt/mcrypt-2.6.8.tar.gz
tar zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8/
export LDFLAGS="-L/usr/local/libs/lib -L/usr/lib"
export CFLAGS="-I/usr/local/libs/include -I/usr/include"
touch malloc.h
./configure --prefix=/usr/local/libs --with-libmcrypt-prefix=/usr/local/libs
make && make install

2、解压PHP5.6 tar包:

[root@localhost ~]# tar -zxvf php-5.6.24.tar.gz

3、配置:

./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-iconv=/usr/local/libs/  --with-freetype-dir=/usr/local/libs --with-jpeg-dir=/usr/local/libs --with-libmcrypt=/usr/local/libs  --with-png-dir=/usr/local/libs --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-fpm --enable-mbstring --with-mcrypt=/usr/local/libs --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --with-bz2 --enable-soap --enable-opcache --with-pdo-mysql --enable-maintainer-zts --enable-pcntl --enable-shmop --enable-sysvmsg --enable-sysvsem --enable-sysvshm --without-pear --with-gettext  --enable-fpm --enable-opcache=no   

4、编译、安装:

[root@localhost php-5.6.24]# make && make install

可能出现错误:

在包含自 /root/php-5.6.24/ext/zip/lib/zip_add.c:37 的文件中:
/root/php-5.6.24/ext/zip/lib/zipint.h:118:2: 错误:#error unsupported size of off_t
make: *** [ext/zip/lib/zip_add.lo] 错误 1

原因是配置时加了--enable-zip,可以去掉或者安装好zip需要的如下依赖:

--with-zlib-dir=DIR     ZIP: Set the path to libz install prefix
--with-pcre-dir         ZIP: pcre install prefix
--with-libzip=DIR       ZIP: use libzip

可能出现错误:

/root/php-5.6.24/sapi/cli/php: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
make: *** [ext/phar/phar.php] 错误 127

解决:

[root@localhost php-5.6.24]# find / -name "libmysqlclient.so.18"
/usr/local/mysql/lib/libmysqlclient.so.18
[root@localhost php-5.6.24]# ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/

make时可能出现的错误:

chmod: 无法访问"ext/phar/phar.phar": 没有那个文件或目录

解决: mkdir ext/phar/phar.phar -p 或者 cp ./phar.php ./phar.phar

php.ini处理:

cp php.ini-development /usr/local/php/etc/php.ini
cp ./sapi/fpm/php-fpm.conf /Data/apps/php7/etc/php-fpm.conf

httpd.conf配置

vi /usr/local/apache/conf/httpd.conf

#查看是否有 LoadModule php5_module   modules/libphp5.so ,如果没有的话就是php安装出问题了,需要重新安装。
#添加处理php类型文件
AddType application/x-httpd-php .php

验证:htdoc下创建一个php文件试试能不能正常解析。

Redis 安装

1、下载,解压,编译

wget http://download.redis.io/releases/redis-2.8.24.tar.gz
tar -xzf redis-2.8.24.tar.gz
cd redis-2.8.24
make

2、二进制文件是编译完成后在src目录下. 运行reids服务如下:

src/redis-server

3、可以使用内置客户端进行操作

$ src/redis-cli
redis> set name mayy
OK
redis> get name
"mayy"

4、把redis服务加入随系统启动,以及创建客户端的全局链接

vi /etc/rc.d/rc.local
/usr/local/redis/src/redis-server

ln -s /usr/local/redis/src/redis-cli /sbin/redis

5、安装php-redis扩展

wget http://pecl.php.net/get/redis-2.2.8.tgz
tar -zxvf redis-2.2.8
cd redis-2.2.8
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

#结果:
Installing shared extensions:   /usr/local/php/lib/php/extensions/no-debug-zts-20131226/

6、到php.ini里面增加一行配置引入so文件

extension=redis.so

7、使用phpinfo检查是否成功加载扩展。

可能出现的问题:扩展没有成功加载出来

检查phpinfo的配置项:Loaded Configuration File值是否是none,如果是则需要把php.ini复制到配置项Configuration File (php.ini) Path展示的路径。

redis的文件里面的常用配置:

配置项 含义
daemonize 如果需要在后台运行,把该项改为yes
pidfile 配置多个pid的地址 默认在/var/run/redis.pid
bind 绑定ip,设置后只接受来自该ip的请求
port 监听端口,默认为6379
timeout 设置客户端连接时的超时时间,单位为秒。logfile:配置log文件的地址。
databases 设置数据库的个数,默认使用的数据库为0
Requirepass 设置登录时需要使用的密码。
Maxclients 限制同时连接的客户数量
Maxmemory 设置redis能够使用的最大内存。
Appendonly 开启append only模式。
Appendfsync 设置对appendonly.aof文件同步的频率。

Memcache安装

1、服务端软件安装

#安装libevent-devel
yum install libevent-devel

#安装memcache
wget http://memcached.org/files/memcached-1.4.29.tar.gz
tar -zxvf memcached-1.4.29.tar.gz
cd memcached-1.4.29
./configure --prefix=/usr/local/memcached
make && make install

2、启动memcache

/usr/local/bin/memcached -d -m 200 -u root -l 192.168.116.128 -p 11211 -c 1000 -P /tmp/memcached.pid
选项 含义
-d 启动一个守护进程,
-m 分配给Memcache使用的内存数量,单位是MB,这里是200MB
-u 运行Memcache的用户,如果当前为 root 的话,需要使用此参数指定用户。
-l 监听的服务器IP地址
-p 设置Memcache监听的端口,默认11211
-c 最大运行的并发连接数,默认是1024
-P 设置保存Memcache的pid文件,比如: /tmp/memcached.pid

查看 memcached 服务的进程:

ps aux | grep memcached

停止 memcached 进程 :

kill `cat /tmp/memcached.pid`

3、安装memcache的php扩展

wget http://pecl.php.net/get/memcache-3.0.8.tgz
tar -zxvf memcache-3.0.8.tgz
cd memcache-3.0.8
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install


vi /usr/local/php/lib/php.ini
#增加一行memcache扩展配置
extension=memcache.so

USAGE

<?php
$memcache = new Memcache();
$memcache->connect('192.168.116.128',11211);

$res = $memcache->add('name','mayy', MEMCACHE_COMPRESSED, 3600); #MEMCACHE_COMPRESSED:数据很小的时候不会采用zlib压缩,只有数据达到一定大小才对数据进行zlib压缩
var_dump($res);

$name = $memcache->get('name');
var_dump($name);

MongoDB

MongoDB服务端安装

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.8.tgz   
tar -zxvf mongodb-linux-x86_64-rhel62-3.2.8.tgz
cp -Rpv mongodb-linux-x86_64-rhel62-3.2.8 /usr/local/mongodb

cd /usr/local/mongodb
# 为MongoDB创建数据和日志存放目录
mkdir data
mkdir logs
touch logs/mongodb.log

#启动MongoDB,&表示后台运行
/usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data/ --logpath=/usr/local/mongodb/logs/mongodb.log --logappend&

#可以把命令加入随系统启动

#创建客户端的链接,便于任何地方都可以启用
ln -s /usr/local/mongodb/bin/mongo /sbin/mongo

mongodb 默认运行端口:27017

MongoDB的php扩展

wget http://pecl.php.net/get/mongo-1.6.14.tgz
tar -zxvf mongo-1.6.14.tgz
cd mongo-1.6.14
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

vi /usr/local/php/lib/php.ini
extension=mongo.so

Sphinx

参考:http://www.cnblogs.com/joshua317/p/5482283.html#3464003

扩展资源:http://pecl.php.net/


上一篇 Linux常用命令

下一篇 Git

Comments

Content