源碼安裝
本次使用
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

如果不能訪問修改防火牆配置 :
方式一:添加.允許訪問端口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

centos7安裝
注意:其中 2.3 數據庫安全設置時Enter current password for root (enter for none): 直接回車即可,回車后會讓輸入一個mariadb的root用戶新密碼。
