本文針對新手初次搭建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以後就能夠安裝上面的步驟進行安裝,很方便。