LNMP環境搭建(轉載)

  博主前兩天面試被刁難,被問到linux用戶態、內核態的東東,而後一臉懵逼的關門謝客。因而博主準備發奮圖強,狠心買了臺學生機,先裝它20遍環境!php

  博主在網上發現一篇博客,寫的挺好的,拿過來轉載下,方便之後複習。html

  如下爲轉載內容:node

  轉自:https://www.cnblogs.com/wujuntian/p/8183952.html  原博主大大:編程人,在天涯mysql

  

LNMP環境搭建

 

  通過一番折騰,終於將LNMP環境搭建完成了。本文介紹的LNMP環境是在windows的Oracle VM VirtualBox中的Centos虛擬機上搭建的,各個軟件的版本爲:Centos7 + Nginx1.12.2 + Mysql-5.6.38 + PHP7.2.0。本文是在假設Centos7虛擬機已經安裝完成的前提下進行介紹的,若還沒有安裝,能夠前往Centos官網下載對應的ios文件安裝,我下載的是這個:http://mirrors.tuna.tsinghua.edu.cn/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1708.iso,而後按照網上的教程進行安裝就能夠了,教程實例:https://jingyan.baidu.com/article/9c69d48f8ec01613c8024e58.html。
linux

  Centos7虛擬機安裝完成就能夠開始編譯安裝Nginx、Mysql和PHP了,下面容我一一道來。ios

 

1、安裝前nginx

1. 更新系統軟件:c++

yum update面試

2. 查看是否已安裝wget:正則表達式

rpm -qa wget

不然安裝:

yum install wget

3. 查看是否已安裝編譯器:

rpm -qa gcc

不然安裝:

yum install gcc gcc-c++

 

2、安裝Nginx

1. 安裝nginx依賴包

nginx的Rewrite模塊和HTTP核心模塊會使用到PCRE正則表達式語法:

yum -y install pcre pcre-devel

nginx的各類模塊中須要使用gzip壓縮:

yum -y install zlib zlib-devel

安全套接字層密碼庫:

yum -y install openssl openssl-devel

2. 下載nginx包並解壓(到/usr/local/src目錄中)

cd /usr/local/src

wget http://nginx.org/download/nginx-1.12.2.tar.gz

tar -zxvf nginx-1.12.2.tar.gz

3. 編譯安裝(到/usr/local/nginx目錄中)

cd nginx-1.12.2

./configure --prefix=/usr/local/nginx

make

make install

4. 建立並設置nginx運行帳號:

groupadd nginx

useradd -M -g nginx -s /sbin/nologin nginx

cd /usr/local/nginx/conf

vim nginx.conf,設置user參數以下:

user nginx nginx

其餘配置參數暫時無需改動。

5. 設置nginx爲系統服務

vim /lib/systemd/system/nginx.service

文件內容:

[Unit]

Description=nginx

After=network.target

[Service]

Type=forking

ExecStart=/usr/local/nginx/sbin/nginx

ExecReload=/usr/local/nginx/sbin/nginx -s reload

ExecStop=/usr/local/nginx/sbin/nginx -s stop

PrivateTmp=true

[Install]

WantedBy=multi-user.target

6. 設置nginx開機自啓動

systemctl enable nginx.service

7. 開啓nginx服務:

systemctl start nginx.service

查看nginx是否啓動成功:

ps aux | grep nginx

在虛擬機瀏覽器中訪問測試:

http://localhost

出現如下界面則表示能夠成功訪問:

8. 防火牆開放80端口(nginx默認使用80端口,可在nginx.conf中配置,若無需進行遠程訪問則不須要開放端口)

永久開放80端口:

firewall-cmd --zone=public --add-port=80/tcp --permanent

重啓防火牆:

firewall-cmd --reload

查看防火牆開啓狀態:

systemctl status firewalld

查看80端口是否開放成功:

firewall-cmd --zone=public --query-port=80/tcp

可在windows宿主主機瀏覽器直接訪問虛擬機ip測試是否能夠成功訪問。

 

3、安裝Mysql

1. 卸載已有mysql

查看是否已安裝mysql:

rpm -qa mysql

有則卸載:

rpm -e --nodeps 文件名稱

是否存在與mysql相關的文件或目錄:

whereis mysql

是則刪除。

2. 安裝編譯mysql須要的依賴包

yum install libevent* libtool* autoconf* libstd* ncurse* bison* openssl*

3. 安裝cmake(mysql5.5以後須要用cmake支持編譯安裝)

查看是否已安裝cmake:

rpm -qa cmake

沒有則下載編譯安裝:

cd /usr/local/src

wget http://www.cmake.org/files/v2.8/cmake-2.8.12.1.tar.gz

tar -xf cmake-2.8.12.1.tar.gz

cd cmake-2.8.12.1

./configure

make

make install

檢查cmake是否安裝成功:

cmake --version

4. 下載mysql包並解壓(到/usr/local/src目錄)

cd /usr/local/src

wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.38.tar.gz

tar -zxvf mysql-5.6.38.tar.gz

5. 編譯安裝(到/usr/local/mysql目錄)

cd mysql-5.6.38

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci

make(此過程需花費大概20-30分鐘)

make install

6. 配置mysql

groupadd mysql

useradd -M -g mysql -s /sbin/nologin mysql

chown -R mysql:mysql /usr/local/mysql

7. 初始化配置

cd /usr/local/mysql/scripts

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

8. 設置mysql爲系統服務

vim /lib/systemd/system/mysql.service

文件內容:

[Unit]

Description=mysql

After=network.target

[Service]

Type=forking

ExecStart=/usr/local/mysql/support-files/mysql.server start

ExecStop=/usr/local/mysql/support-files/mysql.server stop

ExecRestart=/usr/local/mysql/support-files/mysql.server restart

ExecReload=/usr/local/mysql/support-files/mysql.server reload

PrivateTmp=true

[Install]

WantedBy=multi-user.target

9. 設置mysql服務開機自啓動

systemctl enable mysql.service

10. 啓動mysql

systemctl start mysql.service

如果啓動失敗:

直接使用/usr/local/mysql/support-files/mysql.server restart啓動能夠看到詳細錯誤緣由:

如果這個緣由,/var/lib/mysql這個目錄(用於存放mysql.sock)不存在的話,手動建立就行了:

mkdir /var/lib/mysql

chown -R mysql:mysql /var/lib/mysql

再次啓動,成功了!

查看是否啓動成功:

ps aux | grep mysql

11. 登陸mysql並設置root密碼:

/usr/local/mysql/bin/mysql -u root

set password=password('123456');

 

4、安裝PHP

1. 安裝php依賴包

yum install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel

若提示yum中沒有可用的軟件包libmcrypt和libmcrypt-devel,則須要手動編譯安裝,能夠先在windows宿主主機中前往libmcrypt官網下載而後使用rz指令將包上傳至centos7進行編譯安裝。我下載的包爲libmcrypt-2.5.8.tar.gz:

tar -zxvf libmcrypt-2.5.8.tar.gz

cd libmcrypt-2.5.8

./configure --prefix=/usr/local/libmcrypt

make

make install

2. 下載php包並解壓

cd /usr/local/src

在windows上前往php官網下載php-7.2.0包,而後使用rz指令將下載好的php安裝包上傳到centos7上,解壓:

tar -zxvf php-7.2.0.tar.gz

3. 編譯安裝(到/usr/local/php目錄)

cd php-7.2.0

./configure --prefix=/usr/local/php --disable-fileinfo --enable-fpm --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-openssl --with-zlib --with-curl --enable-ftp --with-gd --with-xmlrpc --with-jpeg-dir --with-png-dir --with-freetype-dir --enable-gd-native-ttf --enable-mbstring --with-mcrypt=/usr/local/libmcrypt --enable-zip --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mysql-sock=/var/lib/mysql/mysql.sock --without-pear  --enable-bcmath

(注意:--with-mcrypt參數指定的是libmcrypt的安裝目錄。Php7再也不使用mysql的庫來支持mysql的鏈接,而是啓用了mysqlnd來支持,因此php7的編譯已經再也不使用--with-mysql參數指定mysql的安裝位置了,若想支持mysql,須要設置--enable-mysqlnd、--with-mysqli和--with-pdo-mysql=mysqlnd參數,--with-mysql-sock指定的是編譯mysql時-DMYSQL_UNIX_ADDR參數指定的文件)

make(此過程需花費大概20分鐘)

make install

4. 將php包解壓目錄中的配置文件放置到正確位置(configure命令中的--with-config-file-path設置的位置)

cp php.ini-development /etc/php.ini

5. 建立並設置php-fpm運行帳號

groupadd www-data

useradd -M -g www-data -s /sbin/nologin www-data

cd /usr/local/php/etc

cp php-fpm.conf.default php-fpm.conf

vim php-fpm.conf

發現搜索不到「user」(設置運行帳號的位置),但發現文件的最後一行:

因此:

cd php-fpm.d

cp www.conf.default www.conf(不然include匹配不到文件)

vim www.conf

搜索「user」設置運行帳號:

user=www-data

group=www-data

6. 配置nginx支持php

vim /usr/local/nginx/conf/nginx.conf

7. 設置php-fpm爲系統服務:

vim /etc/systemd/system/php-fpm.service

文件內容:

[Unit]

Description=php-fpm

After=network.target

[Service]

Type=forking

ExecStart=/usr/local/php/sbin/php-fpm

PrivateTmp=True

[Install]

WantedBy=multi-user.target

8. 設置php-fpm服務開機自啓動:

systemctl enable php-fpm.service

9. 啓動php-fpm:

systemctl start php-fpm.service

查看是否啓動成功:

ps aux | grep php-fpm

10.寫一個php腳本測試nginx是否已支持php,php是否已支持mysql。

1
2
<?php
phpinfo();

 

  至此,LNMP搭建完成!

 

PHP擴展安裝說明:

  若想安裝一些PHP擴展,首先能夠在PHP源碼目錄下的ext子目錄中查找是否存在你想安裝的擴展,不存在則下載,存在則直接進入擴展源碼目錄進行安裝操做,下面以安裝pcntl擴展爲例進行說明。

首先編譯源碼安裝pcntl擴展:

cd /usr/local/src/php-7.0.27/ext/pcntl   (進入擴展源碼目錄)

/usr/local/php/bin/phpize(取決於你安裝php以後phpize文件的位置)

./configure --with-php-config=/usr/local/php/bin/php-config(取決於你安裝php以後php-config文件的位置)

make

make install

而後修改php配置文件:

vim /etc/php.ini

extension=pcntl.so

最後重啓php-fpm服務:

systemctl reload php-fpm.service

 這樣pcntl就安裝完成了!

 

  有個疑惑的地方,剛開始想安裝mysql5.7.20的,可是在編譯(make)的時候,真的很慢,有時候卡了大半天都不動的,不知道啥緣由,試了不少次,浪費了不少時間啊,淚奔。最後實在受不了,改用mysql5.6.38,30分鐘不到就編譯完成了,阿西吧,有時候仍是不要太糾結。。。

 
  以上爲原博文內容,未作任何刪減。
  說一下本身學習的感覺,這篇文章寫的很詳細了,博主跟着一點一點把本身的環境搭建完了,中間遇到一個小坑,博主安裝mysql的時候用了make&&make install 致使安裝的時候有條信息沒有看到, make的時候提示 my.cnf已經存在,生成的新文件my-new.cnf,而後博主的mysql就啓動不起來了,網上各類翻文章,最後重裝mysql才發現
  這樣博主的mysql就正常了。博主體會是:作任何事都不要偷懶,一步一步來,注意提示語。
相關文章
相關標籤/搜索