LAMP/LNMP環境搭建

本文針對新手初次搭建LAMP/LNMP環境,lz也是歷時2天才搭建完成,雖然有些內容仍是不太明白,可是暫且記錄下來流程,之後慢慢消化。php

1、安裝linuxhtml

先下載Virtual Box做爲虛擬機,網站https://www.virtualbox.org/ ,以下圖:mysql

 

而後下載centos7,網址https://www.centos.org/download/,以下圖:linux

打開Virtual Box,新建-輸入名稱,以下圖:nginx

而後一直下一步,文件位置自行選擇,不建議放在C盤c++

建立完成以後點擊啓動,這時會提示選擇啓動盤,選擇方纔下載的鏡像git

啓動以後開始安裝github

選擇語言以後,點擊安裝位置,選擇剛纔劃分的磁盤,點擊完成sql

開始安裝,會看到下面頁面,設置ROOT密碼,建立新帳戶shell

 

安裝完成後重啓,登陸用戶名、密碼,注意linux輸入密碼時不會顯示,不要覺得沒輸入進去exit

lz用的是root帳戶登陸的,你也能夠登陸剛纔在安裝時建立的用戶,可是一些操做須要在命令以前加上 sudo。下面是一些命令和操做

sudo su #切換到root帳戶

exit #退出

clear #清空界面

 

配置網絡環境(lz登陸的是root帳戶,有些命令提示沒權限時可能須要在前面加上sudo)

1.在VirtualBox中找到設置,將網絡改成「橋接網絡」

而後輸入命令查看網絡是否通暢

ping www.baidu.com #查看網絡狀態,這裏能夠ping下百度

#網絡不通會提示:Name or service not know等錯誤,這是須要修改一下網絡配置,輸入下面一行命令
vi /etc/sysconfig/network-scripts/ifcfg-      #而後按tab鍵會出現你本機網卡名多是eth0或者enp0s3,而後在-後面加上這個名字便可

vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 #lz的是enp0s3

 

2.設置網卡配置文件

輸入後會看到如下,信息內容可能不同,不過在最主要的仍是那幾個。

 按 「I」 鍵進行編輯(此時命令行底部變成INSERT),編輯完成之後按「ESC」鍵,完後輸入  「:w」(保存)  「:q」(退出),或者直接快捷鍵shift+zz(關閉caps Lock),或者 「:q!」不保存直接退出  。注意linux命令只支持小寫!

ONBOOT=yes   #修改爲yes

BOOTPROTO =static #採用靜態IP

IPADDR=192.168.1.11    #增長靜態IP地址,注意前面三個數要和你本機電腦上ip一致,即你本機電腦上的ip是192.168.1.xx

NETMASK=255.255.255.0 #增長子網掩碼

NETWORK=192.168.1.1 #設置網關,一樣前面三個數也是和你本機電腦上的ip一致

NM_CONTROLLED=no #設置網絡服務將經過該配置文件進行設置

 

 而後重啓網絡服務,查看是否修改爲功

systemctl restart network.service #重啓網絡服務

ip add  #查看ip

 

 此時再ping一下,可能會提示兩種錯誤:

①Name or service not known

ping: www.baidu.com: Name or service not known  #出現這個錯誤

 

多是由於你設置的ip被其餘人佔用着,此時你能夠先將剛纔的配置文件改成動態獲取ip,先獲取一個沒被佔用的ip,而後再靜態設置爲此ip

vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 #打開剛纔的配置文件

BOOTPROTO=dhcp #先設置爲動態獲取

 

保存退出後輸入命令,獲取ip,重複 2.設置網卡配置文件

ip add

②connect :Network is unreachable

connect :Network is unreachable #未得到網絡

 

此時你的ip在局域網已經能夠用了,可是訪問不了外網,須要調用dhclient命令來獲取網絡

dhclient #使用動態主機配置協議動態的配置網絡接口

 

(此處好像每次開機都要調用此命令才能聯網,緣由未知,在網上看到個帖子,可是沒能成功解決問題http://blog.csdn.net/u012425536/article/details/78744430)

 

打通網絡環境後,修改防火牆設置,開放22端口(後期要用到xshell來遠程控制此虛擬機,監控的就是22端口),完成後重啓虛擬機

firewall-cmd --zone=public --add-port=22/tcp --permanent #修改防火牆參數

systemctl restart firewalld.service #重啓防火牆服務

 

2、安裝Apache

在安裝Apache以前,先下載Xshell來做爲輔助工具,方便咱們輸入、複製、粘貼命令

打開xshell,輸入命令,在彈出的窗體輸入用戶名,密碼

ssh root@192.168.1.11 #遠程鏈接,root表明登陸用戶,@後面表明遠程控制的ip

 

 

鏈接成功以後會看到

 

 

 安裝基本依賴

yum install -y gcc gcc-c++ wget make vim

 

 開始安裝Apache 進入官網,右擊tar.gz獲取連接,下方的wget後面的url是粘貼這右鍵複製的連接

wget下載安裝包,並解壓

wget http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.29.tar.gz

tar zxvf httpd-2.4.29.tar.gz #解壓

 

 apache安裝須要apr和apr-util和pcre,因此下載apr和apr-util,若是你下載的是其餘版本的話注意下路徑和文件夾名
ll命令是ls -l就是列出文件

wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gz #下載apr

wget http://archive.apache.org/dist/apr/apr-util-1.3.12.tar.gz #下載apr-util

 

 解壓

tar zxvf apr-1.4.5.tar.gz
tar zxvf apr-util-1.3.12.tar.gz

 

 重命名並移動到httpd-2.4.29中,下載pcre-8.39

mv apr-1.4.5 apr
mv apr-util-1.3.12 apr-util
mv apr apr-util httpd-2*/srclib/  #mv是移動,假若加了名字就是重命名
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz
tar zxvf pcre-8.39.tar.gz
cd pcre* #*是通配符

 

 配置pcre

./configure --prefix=/usr/local/pcre #./configure就是配置,參數--prefix=/usr/local/pcre就是說把軟件安裝在/usr/local/pcre這個目錄下
make #編譯

make install #編譯安裝

 

 成功以後以下

 

cd ../httpd*  #../是linux裏的相對路徑,意思是返回上一級目錄下,再打開httpd-2.4.29文件夾

 

 配置安裝apache,過程有點慢

#配置,編譯,編譯安裝
./configure --prefix=/usr/local/apache -with-pcre=/usr/local/pcre/bin/pcre-config -with-included-apr
make
make install 

 完成以下

備份默認配置文件並啓動

cd /usr/local/apache/bin
cp /usr/local/apache/conf/httpd.conf{,.bak}
./apachectl -k start #開啓

 

 回車後有段輸出,那些不用管他 
輸入

curl 127.0.0.1

 

 輸出 

<html><body><h1>It works!</h1></body></html>

 

開啓防火牆80端口,這樣在瀏覽器輸入ip才能看到信息

firewall-cmd --zone=public --add-port=80/tcp --permanent  #開啓80端口

systemctl restart firewalld.service  #重啓防火牆服務

 

在瀏覽器輸入192.168.1.11:80,回車會看到下圖

cp /usr/local/apache/bin/apachectl /etc/init.d/httpd

 

 通過上面這條命令操做後你之後開啓apache或者關閉重啓就能夠直接輸入

service httpd start

 

 stop中止,restart是重啓 把apache下的bin加入環境變量裏

echo 'export PATH=/usr/local/apache/bin:$PATH'>>/etc/profile
source /etc/profile

 

 

 

3、安裝Nginx(LAMP不須要管這一節)

Nginx是一款輕量級的Web服務器,特色是佔有內存少,併發能力強,事實上nginx的併發能力確實在同類型的網頁服務器中表現較好。

Nginx安裝須要兩個依賴:pcre和zlib,pcre的安裝見apache中安裝配置,zlib直接用yum命令安裝

yum install -y zlib-devel

 

而後下載nginx安裝包,下圖中拷貝連接

 

一樣用wget命令下載,而後安裝

cd #返回主目錄
wget http://nginx.org/download/nginx-1.12.2.tar.gz #下載
tar zxvf nginx* #解壓
cd nginx* 
./configure --prefix=/usr/local/nginx --with-pcre=../pcre-8.39/#配置,根據以前安裝的pcre-8.39

 

配置完成見下圖

編譯安裝

make && make install #編譯並安裝

 

安裝完成圖

下面啓動nginx,啓動以前先關閉apache,可用剛纔的快捷方式關閉或者經過直接關閉進程的方式進行關閉

service httpd stop #根據以前設置的快捷方式 
#或者 ps aux | grep httpd #查看apache運行進程,而後用
kill -9 (全部進程號)

cd /usr/local/nginx/sbin 

./nginx #啓動nginx

 

再次在瀏覽器中輸入以前的網址:192.168.1.11:80 ,會看到如下頁面,若是沒有,仍然參考apache裏面防火牆設置

關閉nginx 能夠按照剛纔關閉apache的方法,也能夠強制中止

pkill -9 nginx

 

 PHP訪問nginx服務器須要php-fpm,在後面安裝php的時候須要注意 

 

 

4、安裝mysql

 安裝依賴

cd #返回主目錄

yum -y install autoconf yum install cmake ncurses-devel bison -y

 

 下載mysql安裝包,這裏用mysql-5.6.38,一樣,去官網複製下載連接

下載解壓

wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.38.tar.gz #下載
tar zxvf mysql* #解壓
groupadd -r mysql && useradd -r -g mysql -s /bin/false -M mysql #建立一個名爲mysql且沒有登陸權限的用戶和一個名爲mysql的用戶組並把mysql用戶加進mysql用戶組裏

 

 進入mysql的解壓目錄並配置

cd mysql*
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DMYSQL_USER=mysql \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/run/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_DEBUG=0 \
-DMYSQL_MAINTAINER_MODE=0 \
-DWITH_SSL:STRING=bundled \
-DWITH_ZLIB:STRING=bundled

 

 編譯安裝

make && make install
cd /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql

 

 chown是改變文件全部者,change owner,R參數是遞歸,遍歷目錄下全部目錄和文件
上面整個命令是改變/usr/local/mysql下全部的文件擁有者爲mysql用戶,用戶組爲mysql

 

初始化mysql

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

 

 

 完成後如圖上面有些信息來叫你如何完善mysql以及安全
mysql默認的配置文件路徑是/etc/my.cnf,咱們複製安裝自帶的默認配置文件過去

cp support-files/my-default.cnf /etc/my.cnf

 

 詢問覆蓋的時候輸入y 
配置/etc/my.cnf

sed -i 's/# basedir = \.\.\.\.\./ basedir = \/usr\/local\/mysql/' /etc/my.cnf
sed -i 's/# datadir = \.\.\.\.\./ datadir = \/usr\/local\/mysql\/data/' /etc/my.cnf
sed -i 's/# port = \.\.\.\.\./ port = 3306/' /etc/my.cnf
sed -i 's/# socket = \.\.\.\.\./ socket = \/var\/run\/mysql\/mysql.sock/' /etc/my.cnf
num=$(sed -n '/socket/=' /etc/my.cnf)
sed -i "$num a[mysqld_safe]\nlog-error=/var/log/mysqld.log\npid-file=/var/run/mysqld/mysqld.pid\n" /etc/my.cnf

 

 cmake的時候把mysql的sock文件指定到/var/run/mysql裏符合linux文件目錄規範方便往後管理,可是默認沒有這個文件夾,手動建立

mkdir /var/run/mysql
chown mysql:mysql /var/run/mysql

 

啓動mysql

./support-files/mysql.server start

進入mysql客戶端

bin/mysql -uroot -p

 

回車後會有個輸出提示沒有設置密碼
此時直接回車,而後進去mysql客戶端裏 

 

 

進入mysql的客戶端後,咱們來在客戶端裏的命令行裏給mysql設置root密碼

use mysql;
delete from mysql.user where user='';
update user set password=password("123456") where user="root";
flush privileges;
exit

 

其中123456爲你要設置的密碼
第二行是刪除mysql的匿名用戶 flush privileges 命令本質上的做用是將當前user和privilige表中的用戶信息/權限設置從mysql庫(MySQL數據庫的內置庫)中提取到內存裏。MySQL用戶數據和權限有修改後,但願在不重啓MySQL服務的狀況下直接生效 

添加到service裏

cp support-files/mysql.server /etc/init.d/mysqld
chmod u+x /etc/init.d/mysqld

 

之後咱們啓動mysql服務直接輸入

service mysqld start

就好了,若是要開機自啓就輸入下面的命令

chkconfig --add mysqld

 

把mysql的安裝目錄下的bin加入環境變量裏

echo 'export PATH=/usr/local/mysql/bin:$PATH'>>/etc/profile
source /etc/profile

 

之後進入mysql客戶端輸入下面命令就能夠了

mysql -uroot -p

 

(追加)

發現這樣安裝mysql以後,重啓系統以後會出現啓動不了mysqld的狀況

解決方案是在重啓系統以後從新建立 /var/run/mysql目錄,輸入如下命令

mkdir /var/run/mysql
chown mysql:mysql /var/run/mysql

不知道爲何在系統重啓以後這個目錄就不存在了,須要從新建立。望大神們可以解答

 

 

 

5、安裝PHP

先安裝curl爲了後面給php添加curl擴展

cd 
wget http://ojt8x896o.bkt.clouddn.com/curl-7.52.1.tar.gz
tar -zxvf curl-7.52.1.tar.gz
cd curl-7.52.1
./configure --prefix=/usr/local/curl
make && make install

 

 安裝mhash庫給php開啓擴展

cd
wget https://ncu.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz tar -zxvf mhash-0.9.9.9.tar.gz cd mhash-0.9.9.9 ./configure make && make install

 

 進入php官網,進入download頁面點擊tar.gz包

 

進去後咱們找香港的源,右擊後選擇複製連接

 

下載安裝

cd
wget http://hk1.php.net/get/php-5.6.32.tar.gz/from/this/mirror -O php-5.6.32.tar.gz
tar zxvf php*
cd php*

 

 這裏wget下載php有時候被保存爲mirrors,有時候被保存爲php加版本號,因此上面wget後面我加了-O參數下載保存爲php-5.6.32.tar.gz 

 安裝依賴

yum install openssl openssl-devel bzip2-devel libxslt libxslt-devel libmcrypt libmcrypt-devel libxml2 libxml2-devel autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel  zlib zlib-devel glibc glibc-devel glib2 glib2-devel

 

配置

./configure --prefix=/usr/local/php \
--enable-bcmath \
--enable-calendar \
--enable-ftp \
--enable-fpm \
--enable-mbstring \
--enable-pcntl \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-sysvsem \
--enable-zip \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-bz2 \
--with-curl=/usr/local/curl \
--with-freetype-dir=/usr/lib64 \
--with-gettext \
--with-gd \
--with-jpeg-dir=/usr/lib64 \
--with-openssl \
--with-png-dir=/usr/lib64 \
--with-xmlrpc \
--with-xsl \
--with-mhash \
--with-mysql \
--with-mysqli \
--with-pdo-mysql \
--with-zlib \
--with-config-file-path=/usr/local/php/etc/

配置沒錯的話就是圖裏的信息

編譯php須要資源,make的時候有時候會由於內存不夠而中斷,關鍵字memory字樣,因此建議先關閉apache和mysqld

service httpd stop
service mysqld stop
make

 make提示complete後直接

make install

等輸出完成後 php默認的配置文件php.ini是不存在的咱們須要手背拷貝過去 在源碼包裏有倆ini,php.ini-development和php.ini-production 我是拷貝的development,而且修改配置文件裏的時區爲PRC

cp ./php.ini-development /usr/local/php/etc/php.ini
sed -ri '/;date.timezone =/s#;date.timezone =#date.timezone = PRC#' /usr/local/php/etc/php.ini

成功安裝php後咱們要吧php安裝目錄下的bin弄到環境變量裏面

echo 'export PATH=/usr/local/php/bin:$PATH'>>/etc/profile
source /etc/profile

 

這樣PHP就安裝完成了,關於php-fpm的配置能夠在網上查到好多資料,fpm是LNMP必備的,Nginx與php之間須要fpm來完成翻譯的工做。

 

 

6、安裝phpMyAdmin

使用php和mysql開發網站的話,phpmyadmin是一個很是友好的mysql管理工具,而且免費開源,國內不少虛擬主機都自帶這樣的管理工具,配置很簡單,接下來在linux服務器上配置phpmyadmin來管理MySQL數據庫

首先訪問phpmyadmin官網下載頁 https://www.phpmyadmin.net/downloads/

一樣複製下載連接,用wget命令下載

cd #回到主目錄,下載就直接放在主目錄裏面了
wget ttps://files.phpmyadmin.net/phpMyAdmin/4.7.6/phpMyAdmin-4.7.6-all-languages.tar.gz 

tar zxvf phpMyAdmin*

rm -rf phpMyAdmin-4.7.6-all-languages.tar.gz 

mv phpMyAdmin* /usr/local/apache/htdocs #將解壓的文件夾放到htdocs文件夾中

cd /usr/local/apache/htdocs/phpMy* #進入到文件夾中

mv phpMy* phpMyAdmin #修改文件名,爲了後期方便

這時候能夠看到目錄下有一個配置文件:config.sample.inc.php

將這個文件拷貝一份,並進行編輯

cp config.sample.inc.php config.inc.php

vim config.inc.php

找到$cfg['blowfish_secret']配置項,後面默認爲空,這裏咱們能夠隨便設置一個複雜的字符串,用來加密使用:

保存後退出,這樣phpMyAdmin就安裝完成了

啓動mysql和Apache以後就能夠在瀏覽器中輸入 http://192.168.1.11/phpMyAdmin,就能看到如下頁面

輸入數據庫密碼就能工做啦!

 

 

 

7、檢驗環境是否打通

1.LAMP

而後進入apache的conf配置文件

cd /usr/local/apache/conf/

vim httpd.conf

 

在裏面按下i後進去vim的編輯模式,添加一行,這裏是讓apache識別php文件

AddType application/x-httpd-php .php

而後再圖中位置那後面加入index.php 

保存後,進入到apache的默認讀取文件夾,,這裏是在/usr/local/apache/htdocs/,把默認的index.html更名爲index.php內容爲

 

cd /usr/local/apache/htdocs/

mv index.html index.php

vim index.php

將下面的內容編輯到文件中

<?php
$con = mysql_connect("localhost","root","BQ000-000bq");
if($con){
echo 'Database connect ok !';
}else{
echo 'Database connect fail !';
}
echo phpinfo(); #顯示php信息
?>

 保存退出,而後啓動apache,mysql,注意若是你係統也安裝了nginx,先把nginx關掉,要否則啓動apache時會報80端口被佔用,固然你也能夠修改剛纔的apache配置文件httpd.conf,找到listen,將80修改成其餘端口

pkill -9 nginx #強制關閉nginx
service httpd start # 開啓apache
service mysqld start #開啓mysql

 

 刷新剛纔的瀏覽器頁面,看到下圖就表明環境已經打通了

 

 

2.LNMP

 先進入到php安裝目錄中啓動php-fpm

cd /usr/local/php/etc
mv php-fpm.conf.default php-fpm.conf #修改文件名,要否則啓動fpm會報錯
cd ../sbin #進入到sbin目錄中
./php.fpm #開啓fpm

 

 檢查fpm是否開啓成功

ps aux | grep php-fpm #根據名字查看進程

 

說明啓動成功

進入nginx安裝目錄,修改配置文件

cd /usr/local/nginx/conf
ll #查看當前文件夾裏面的內容
vim nginx.conf #修改配置文件

 

將下面內容插入到文件中

location ~ \.php {

fastcgi_pass 127.0.0.1:9000;

fastcgi_index /index.php;

include /usr/local/nginx/conf/fastcgi_params;

fastcgi_split_path_info ^(.+\.php)(/.+)$;

fastcgi_param PATH_INFO $fastcgi_path_info;

fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

}

 

 修改啓動頁面內容

cd ../html #進入到html文件夾中
vim test.php #新建test.php文件

 

 同LAMP同樣,將下面內容寫入到test.php中

<?php
$con = mysql_connect("localhost","root","BQ000-000bq");
if($con){
echo 'Database connect ok !';
}else{
echo 'Database connect fail !';
}
echo phpinfo();
?>

 

保存以後,先關閉apache

service httpd stop #關閉apache
cd ../sbin/ #進入到sbin目錄
./nginx #啓動nginx

 

 在瀏覽器中輸入你的ip加上/test.php(好比個人就是192.168.1.11/test.php)會看到下圖

說明LNMP環境也打通了。

 

 

8、總結

 lz採用的是編譯安裝,最爲複雜的一種,歷時兩天才將環境打通,好多地方也是借鑑別人的,尤爲是https://zhangguanzhang.github.io/2017/02/02/lamp/,寫的很是詳細,另外也感謝老哥推薦的慕課網課程,

雖然裏面講的有些地方不盡詳細。

在這裏給你們推薦一個一鍵安裝lamp的連接,https://lamp.sh/install.html,在安裝好centOS7以後就能夠安裝上面的步驟進行安裝,很方便。

相關文章
相關標籤/搜索