1. 程式人生 > >linux安裝lamp環境(linux+apache+mysql+php)

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 

######################################## 安裝Apache ################################################

######################################## 安裝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 
	[
[email protected]
_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 ######################################## 安裝PHP ################################################### ######################################## 安裝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/ 執行前: [
[email protected]
_0_13_centos local]# ls -l | grep mysql drwxr-xr-x 42 7161 31415 4096 Nov 26 12:08 mysql-5.7.22 執行後(以下可以看到使用者和組都修改為MySQL了): [[email protected]_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的密碼,記住它後續用到:
[email protected]
: 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 [[email protected]_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 # 測試用守護程序管理方式,停用跟啟用 [[email protected]_0_13_centos ~]# service mysqld stop Shutting down MySQL.... SUCCESS! [[email protected]_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

原文地址