linux安装lamp环境(linux+apache+mysql+php)

源码安装

本次使用

Centos7.2
MySQL5.7.22
Apache2.4.37
PHP5.6.38

安装Apache

安装httpd和所需依赖:gcc, apr, apr-util,apr-iconv, pcre

# 建立目录
cd /;mkdir -p lamp/package
cd /lamp/package # # 获取安装包
# 获取apr
wget http://mirror.bit.edu.cn/apache/apr/apr-1.6.5.tar.gz # 获取apr
wget http://mirror.bit.edu.cn/apache/apr/apr-util-1.6.1.tar.gz # 获取apr-iconv
wget https://mirrors.tuna.tsinghua.edu.cn/apache/apr/apr-iconv-1.2.2.tar.gz # 获取pcre
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz # 获取httpd (apache)
wget http://mirrors.hust.edu.cn/apache/httpd/httpd-2.4.37.tar.gz # 安装全局所需gcc和gcc-c++
yum install gcc
yum install gcc-c++ 一、安装apr cd /lamp/package
# 解压apr
1、tar zxvf apr-1.6.5.tar.gz # 进入配置
2、cd apr-1.6.5
3、./buildconf # 出现错误:
buildconf: checking installation...
buildconf: python version 2.7.5 (ok)
buildconf: autoconf not found.
You need autoconf version 2.59 or newer installed
to build APR from SVN.
buildconf: libtool not found.
You need libtool version 1.4 or newer installed
to build APR from SVN. # 安装依赖libtool解决以上错误
yum install libtool # 安装libtool后重新运行./buildconf # 配置
4、./configure --prefix=/usr/local/apr-1.6.5 # 编译安装
5、make && make install 二、安装apr-iconv cd /lamp/package
# 解压
1、tar zxvf apr-iconv-1.2.2.tar.gz
2、cd apr-iconv-1.2.2/ # 配置
3、./configure --prefix=/usr/local/apr-iconv-1.2.2 --with-apr=/usr/local/apr-1.6.5/bin # 编译安装
4、make && make install 三、安装apr-util cd /lamp/package
# 解压 apr-util
1、tar zxvf apr-util-1.6.1.tar.gz 2、cd apr-util-1.6.1/ # 安装expat-devel否则后面编译会报错
3、yum install expat-devel # 配置【--with后面全是上面的安装路径】
4、./configure --prefix=/usr/local/apr-util-1.6.1 --with-apr=/usr/local/apr-1.6.5/bin --with-apr-iconv=/usr/local/apr-iconv-1.2.2/bin/apriconv # 编译安装
5、make && make install 四、安装pcre cd /lamp/package
# 解压
1、tar zxvf pcre-8.39.tar.gz
cd pcre-8.39/ # 配置
2、./configure --prefix=/usr/local/pcre-8.39 # 编译安装
3、make && make install 五、安装安装apache(httpd) # 安装并更新locate工具数据库
1、yum -y install mlocate && updatedb # 解压httpd
2、tar zxvf httpd-2.4.37.tar.gz
cd httpd-2.4.37 # 配置【一定要加上 enable-so】
3、./configure --prefix=/usr/local/httpd-2.4.37/ --with-apr=/usr/local/apr-1.6.5/bin --with-apr-util=/usr/local/apr-util-1.6.1/bin --with-apr-iconv=/usr/local/apr-iconv-1.2.2/bin/apriconv --with-pcre=/usr/local/pcre-8.39 --enable-so # 如出现报错error: the --with-apr-util parameter is incorrect. It must specify an install prefix, a build direct
需切换到/usr/local/查看前面四个步骤安装的依赖包是否都安装进入了(里面缺少哪个包就是哪个包没安装成功) # 编译安装
4、make && make install # 查看是否安装到位
5、find / -name httpd-2.4.37 # 添加到服务
# 从安装目录bin/下 复制apachectl 到/etc/rc.d/init.d/并命名为httpd
6、cp /usr/local/httpd-2.4.37/bin/apachectl /etc/rc.d/init.d/httpd # 编辑httpd, 加入下面两句 后两个数字表示启动顺序, 不要超100, 下面两句是带# 注释的, chkconfig是能读到的, 这两个必须要加, Description: 这个是描述, 随便写
7、vim /etc/rc.d/init.d/httpd
# chkconfig: 2345 80 81
# Description: this is httpd server # 添加到守护进程
8、chkconfig --add httpd # 启动httpd
9、service httpd start # 出现报错
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0 ... # 解决办法
1.1、cd /usr/local/httpd-2.4.37/conf;vim httpd.conf
1.2、搜索#ServerName,在下面添加一行内容(配置服务地址域名):ServerName localhost:80
1.3、保存,执行service httpd restart重启OK # 测试是否安装成功
10、curl localhost 执行结果:<html><body><h1>It works!</h1></body></html> 六、后续管理 # 新建一个目录 /myconfig/ , 以后将所有配置文件建立软链接到此目录, 统一管理
mkdir /myconfig
# 为httpd.conf 创建软连接
ln -s /usr/local/httpd-2.4.37/conf/httpd.conf /myconfig/httpd.conf 【常用启动、停止等管理命令】
service httpd start/restart/stop|status

安装PHP

# 一、安装php依赖(在命令后面加--setopt=protected_multilib=false的原因是出现了类似错误(多库冲突):Protected multilib versions: zlib-1.2.7-17.el7.x86_64 != zlib-1.2.7-15.el7.i686)
1、yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel --setopt=protected_multilib=false # 获取PHP安装包
2、http://php.net/downloads.php # 本次下载的是(php-5.6.38.tar.gz) # 上传并解压PHP
3、tar zxvf php-5.6.38.tar.gz # 配置开启需要开启的扩展比如,pdo, mysql gd 并将php做为apache的模块 --apxs2=指向apache bin下的apxs程序
cd php-5.6.38/
4、./configure --prefix=/usr/local/php-5.6.38/ --with-apxs2=/usr/local/httpd-2.4.37/bin/apxs --with-mysql --with-pdo-mysql --with-gd # 查看perl位置
5、whereis perl
[root@VM_0_13_centos php-5.6.38]# whereis perl
perl: /usr/bin/perl /usr/share/man/man1/perl.1.gz # 更新apache的bin/apxs 文件 将第一行改为perl的位置
# 将apxs中的第一行改为上面第5不查找的perl路径(要是内容跟上面查找的路径一样可省略这一步),示例如下:
6、vim /usr/local/httpd-2.4.37/bin/apxs
#!/usr/bin/perl -w # 编译安装(确认还php-5.6.38里面)
7、make && make install # 创建php简洁命令
8、vim /etc/profile
export php=" /usr/local/php-5.6.38/bin/php" # 最后加上这一行(后面用到$php等同于 /usr/local/php-5.6.38/bin/php) # 生效环境变量
9、source /etc/profile # 查看PHP信息(出现如下内容说明安装成功)
10、$php -m
hash
iconv
json
libxml
mysql
mysqlnd
pcre
PDO
pdo_mysql
... # php与apache的绑定(让apache去解析PHP文件)
编辑apache主配置文件httpd.conf(上面安装Apache创建的myconfig中)
11、vim /myconfig/httpd.conf
Addtype application/x-httpd-php .php .phtml #在底部添加这行内容 # 重启Apache
12、service httpd restart # 测试是否关联OK
# 在站点目录写一个php测试文件
13、cd /usr/local/httpd-2.4.37/htdocs/ 14、touch index.php;vim index.php
<?php phpinfo();?> # 加入这段内容 14、访问localhost/index.php 就可以看到php页面了 ### date区出现警告处理, 配置php时区 ###
# 拷贝php配置文件
从php源码中复制 php.ini-production(前面自己下载的安装包在哪就去哪cp)到php安装目录的lib目录下改名为php.ini
cp /lamp/package/php-5.6.38/php.ini-production /usr/local/php-5.6.38/lib/php.ini # 备份php.ini
cp /usr/local/php-5.6.38/lib/php.ini /usr/local/php-5.6.38/lib/php.ini.bak # 创建软连接到前面安装Apache时创建的myconfig方便管理
ln -s /usr/local/php-5.6.38/lib/php.ini /myconfig/php.ini vim /myconfig/php.ini
# 搜索date.timezone,在下面添加一行内容
date.timezone=PRC # 重启Apache OK
service httpd restart

安装MySQL

一、安装依赖

# gcc, gcc-c++, ncurses-devel, cmake(配置的工具mysql配置不用configure,用cmake)
1、yum install cmake ncurses-devel # 安装boost mysql5.7以上依赖boost
2、mkdir /usr/local/boost 3、cd /usr/local/boost/ # 下载 boost
4、wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz # 解压boost
5、tar zxvf boost_1_59_0.tar.gz 二、安装MySQL # 获取MySQL安装包
cd /usr/local/ 6、wget -c https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22.tar.gz # 解压MySQL
7、tar zxvf mysql-5.7.22.tar.gz # 配置安装位置与数据库data位置
# mysql 5.7需要指定boost(就是上面的安装路径) -DWITH_BOOST=/usr/local/boost, mysql5.6及以下不需要
cd mysql-5.7.22/
8、cmake . -DWITH_BOOST=/usr/local/boost -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.7.22 -DMYSQL_DATADIR=/usr/local/mysql-5.7.22/data # 编译安装
9、make && make install # 可能出现以下错误(内存不足)
c++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://bugzilla.redhat.com/bugzilla> for instructions.
make[2]: *** [sql/CMakeFiles/sql.dir/item_geofunc.cc.o] Error 4
make[1]: *** [sql/CMakeFiles/sql.dir/all] Error 2
make: *** [all] Error 2 # 解决方法就是创建临时交换空间swap:
sudo dd if=/dev/zero of=/swapfile bs=64M count=16
sudo mkswap /swapfile
sudo swapon /swapfile
## 编译结束之后想要恢复的话可以执行下面的命令:
sudo swapoff /swapfile
sudo rm /swapfile ## 执行以上命令后重新执行第8个和第9个编译安装步骤 # 漫长等待... # 修改文件权限,添加独立用户仅管理(mysql)
# 添加MySQL分组,创建MySQL用户并加入MySQL组
10、groupadd mysql && useradd -g mysql mysql # 修改mysql程序权限, 把组改成mysql,用户也改成mysql
# 在/usr/local/目录执行
# 将mysql目录及文件的用户跟组修改为mysql
11、chown -R mysql:mysql mysql-5.7.22/ 执行前:
[root@VM_0_13_centos local]# ls -l | grep mysql
drwxr-xr-x 42 7161 31415 4096 Nov 26 12:08 mysql-5.7.22 执行后(以下可以看到用户和组都修改为MySQL了):
[root@VM_0_13_centos local]# ls -l | grep mysql
drwxr-xr-x 42 mysql mysql 4096 Nov 26 12:08 mysql-5.7.22 # 初始化用户信息前先删除(这里选择改个名留着说不定哪年能用上)/etc/my.cnf 配置文件
12、mv /etc/my.cnf /etc/my.cnf.bak # 初始化用户信息
# mysql5.6 使用下面的
# /scripts/mysql_install_db --user=mysql # mysql5.7 建议使用的
13、/usr/local/mysql-5.7.22/bin/mysqld --initialize
初始化结束后, 会随机生成一个root的密码,记住它后续用到:root@localhost: M0%o>gw24zto # 本次生成的随机密码 # 确认是否初始化成功
14、ls /usr/local/mysql-5.7.22/data #有东西就证明成功了 # 初始化完成后, mysql目录下除了data目录保留mysql用户,把其它目录通通改为root用户
cd /usr/local
15、chown -R root:root mysql-5.7.22/ && chown -R mysql:mysql mysql-5.7.22/data/
drwxr-x--- 5 mysql mysql 4096 Nov 26 12:42 data
drwxr-xr-x 3 root root 4096 Nov 26 11:11 dbug
drwxr-xr-x 2 root root 4096 Nov 26 12:08 docs
drwxr-xr-x 2 root root 4096 Nov 26 10:36 Docs
... # 配置mysql
# 创建配置文件(直接vim不创建也可以)
16、touch /etc/my.cnf;vim /etc/my.cnf
添加如下内容(根据自己需求可改):
[client]
port=3306
socket=/tmp/mysql.sock [mysqld]
port=3306
socket=/tmp/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M [mysqldump]
quick # 运行mysqld_safe服务
17、/usr/local/mysql-5.7.22/bin/mysqld_safe --user=mysql & # 查看进程
18、ps -e | grep mysqld #创建快速访问命令
19、vim /etc/profile
export mysql= /usr/local/mysql-5.7.22/bin/mysql # 添加一个变量(后面使用$mysql等同于 /usr/local/mysql-5.7.22/bin/mysql)
source /etc/profile:生效环境变量 # 连接mysql
20、$mysql -uroot -p
[root@VM_0_13_centos mysql-5.7.22]# /usr/local/mysql-5.7.22/bin/mysql -uroot -p
Enter password: #<-----------------------------------------------------------------------这里输入上面的上面随机生成的root密码(M0%o>gw24zto)
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.22 Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> # 进入MySQL后执行命令修改密码
# mysql5.6 如下:
# update mysql.user set password=password('新的密码') where user='root'; # mysql5.7 如下:
21、alter user 'root'@'localhost' identified by '123456'; # 123456为新的密码 # 刷新权限 5.7不需要
# flush privileges
22、quit 退出, 就可以用新密码登录了 # 将其加入守护进程(开机自启)
# 复制/mysqld.server 到/etc/rc.d/init.d/
23、cp /usr/local/mysql-5.7.22/support-files/mysql.server /etc/rc.d/init.d/mysqld # 修改权限
24、chmod a+rx /etc/rc.d/init.d/mysqld # 添加到守护进程管理
25、chkconfig --add mysqld # 查看
26、chkconfig --list mysqld # 测试用守护进程管理方式,停用跟启用
[root@VM_0_13_centos ~]# service mysqld stop
Shutting down MySQL.... SUCCESS!
[root@VM_0_13_centos ~]# service mysqld start
Starting MySQL. SUCCESS! 三、安装phpmyadmin # 获取安装包
1、wget https://files.phpmyadmin.net/phpMyAdmin/4.8.1/phpMyAdmin-4.8.1-all-languages.zip # 复制到站点根目录
2、cp phpMyAdmin-4.8.1-all-languages.zip /usr/local/httpd-2.4.37/htdocs/ # 进入站点根目录, 解压
3、cd /usr/local/httpd-2.4.37/htdocs/
4、unzip phpMyAdmin-4.8.1-all-languages.zip # 改名为phpmyadmin
5、mv phpMyAdmin-4.8.1-all-languages phpmyadmin # 访问站点(点登陆管理)
6、localhost/phpmyadmin/index.php # OK
登陆的用户名是前面创建mysql的root用户
登陆密码是root密码上面使用的是123456 四、后续管理 # 为mysql的配置文件创建软连接方便后续管理
# 放入我们安装httpd(Apache)时在跟目录创建的myconfig文件夹
ln -s /etc/my.cnf /myconfig/mysql.conf

原文地址

yum安装

centos6.5

更新yum

[root@localhost ~]# yum -y update

安装Apache

[root@localhost ~]# yum -y install httpd*

1、安装完成后,用 /etc/init.d/httpd start 启动apache

2、设置Apache为开机启动:chkconfig httpd on

注:sever默认本机80端口

如果需要修改:

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf

#ServerName www.example.com:80

更改为ServerName ip:端口

测试是否安装成功:访问本机ip

linux安装lamp环境(linux+apache+mysql+php)

如果不能访问修改防火墙配置 :

方式一:添加.允许访问端口80(很多文章都说可以但是我的centos6.5未成功)

[root@localhost ~]# vim /etc/sysconfig/iptables  # 添加如下内容
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

方式二:关闭防火墙

零时关闭防火墙(重启时失效)

service iptables stop

永久关闭防火墙(可以访问了,注意安全<-_->)

chkconfig --level 35 iptables off

可能需要:

service iptables start  # 启动防火墙
service iptables restart # 重启防火墙

安装MySQL

[root@localhost ~]# yum install mysql mysql-server mysql-devel

完成后,用 /etc/init.d/mysqld start 启动mysql

1、设置mysql密码

[root@localhost ~]# mysql
mysql> use mysql;
mysql> UPDATE user SET Password=PASSWORD('newpassword') WHERE user='root';
mysql> FLUSH PRIVILEGES; # 刷新缓存
mysql> exit;

可能出现报错:

ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'

报错解决办法

修改密码(如果需要):

[root@localhost ~]# mysqladmin -uroot -p旧密码 password 新密码

2、设置mysql允许远程登录

[root@localhost ~]# mysql -uroot -p123456
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> exit;

3、设置mysql开机启动

[root@localhost ~]# chkconfig mysqld on

安装php

[root@localhost ~]# yum install php php-mysql php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-bcmath php-mhash

重启Apache

[root@localhost ~]# /etc/init.d/httpd restart

测试

在 /var/www/html/新建个info.php文件,写入以下内容:

<?
phpinfo();
?>

测试是否安装成功:访问本机ip/info.php

linux安装lamp环境(linux+apache+mysql+php)

centos7安装

centos7安装详解

注意:其中 2.3 数据库安全设置时Enter current password for root (enter for none): 直接回车即可,回车后会让输入一个mariadb的root用户新密码。

上一篇:Java:多线程,线程池,使用CompletionService通过Future来处理Callable的返回结果


下一篇:web前端开发面试题(未完待续)