1. 程式人生 > >在ConoHa上Centos7環境下原始碼安裝部署LNMP

在ConoHa上Centos7環境下原始碼安裝部署LNMP

本文記錄了從原始碼,在Centos 7上手動部署LNMP環境的過程,為了方便以後對nginx和mariadb進行升級,這裡採用yum的方式進行安裝。

1.建立執行網站和資料庫的使用者和組

groupadd www

useradd -g www admin

passwd admin #然後輸入你想設定的密碼

更多使用者操作請參考【這裡】,然後將新建使用者新增到sudo列表中,編輯/etc/sudoers,內容如下:

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
admin    ALL=(ALL)       ALL

至此,使用者和使用者組建立完畢,然後接下來所有的操作都是在使用者admin情況下操作的,如果涉及超級使用者許可權的時候使用sudo進行操作。

2.新增依賴包

以下依賴包是整個Lnmp搭建過程中所需的基本依賴包,如果在安裝過程中出現錯誤,提示缺少某依賴包,可以自己安裝

#執行下面這條命令,各引數之間以空格分開
sudo yum -y install zlib-devel pcre-devel openssl-devel  gcc gcc-c++  ncurses-devel perl libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel  libxml2 libxml2-devel curl-devel libxslt-devel

以上各依賴包之間以空格隔開即可。

3.下載安裝檔案

需要下載的原始檔包括:libiconv-1.14.tar.gz、libmcrypt-2.5.8.tar.gz、php-7.0.4.tar.gz,操作如下:

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz

wget http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz

wget http://php.net/distributions/php-7.0.4.tar.gz

4.編譯libiconv

tar zxf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure --prefix=/usr/local/libiconv-1.14  #安裝目錄
cd srclib
sed -i -e '/gets is a security/d' ./stdio.in.h
cd ..
sudo make -j2 
sudo make install

5.編譯libmcrypt

tar zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure --prefix=/usr/local/libmcrypt-2.5.8
sudo make -j2 
sudo make install

6.編譯nginx

安裝

進入nginx的安裝目錄/usr/local/nginx目錄下,執行以下命令

./sbin/nginx

測試

在瀏覽器位址列輸入IP進行訪問,如果出現“Welcome to nginx!”字樣,說明安裝成功!

補充

如果通過Ip出現無法訪問的情況,請參考這裡一下情形進行分析:

  • ssh登入你的vps,執行curl localhost,看是否能返回帶有“Welcome to nginx!”字樣的資訊,如果返回說明Nginx安裝沒問題,再檢視其他原因,否則就是你nginx安裝有問題;
  • 如果執行curl localhost沒問題,那麼遠端執行一下telnet你的vps的80埠看時候能連線,如果不能,說明80埠沒開放呢,參考這裡進行開放80埠,然後重啟防火牆;

7.編譯MariaDb

欲練此功,必先自宮!

因為現在mysql不再開源,所以centos7自帶的是mariadb,而且版本為5.5系列,編譯安裝mariadb之前,請先將自帶的mariadb解除安裝掉,具體完全解除安裝方法,請谷歌一下!或者參考這裡

mariadb需要cmake進行安裝,所以我們需要先安裝一下cmake:

sudo yum -y install cmake

解壓

tar -xzvf mariadb-10.1.13.tar.gz

建立mariadb資料檔案目錄並更改屬主及使用者組

sudo mkdir -p /home/userdata/mariadb
sudo chown -R admin:www /home/userdata/
sudo chown -R admin:www /home/userdata/mariadb

cmake編譯

#切換目錄
cd mariadb-10.1.13/
#下面是一整行,請直接複製後,更改成對應你的環境後再執行,有不明白的地方請留言
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb-10.1.13 -DMYSQL_DATADIR=/home/userdata/mariadb -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LIBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mariadb-10.1.13.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_USER=admin 

注意:以上各引數是以空格隔開的。

安裝

sudo make -j2  #-j2 表示雙執行緒編譯,一般取cpu核心數+1
sudo make install

更改目錄許可權

sudo chown -R admin:www /usr/local/mariadb-10.1.13/

複製配置檔案

#切換目錄
cd /usr/local/mariadb-10.1.13/
cp ./support-files/my-huge.cnf  ./support-files/my.cnf # 複製配置檔案

開啟配置檔案:/usr/local/mariadb-10.1.13/support-files/my.cnf,查詢關鍵字thread_concurrency,將該值修改為你的vps cpu*2之後的值,然後儲存。

初始化安裝資料庫

#切換目錄
cd /usr/local/mariadb-10.1.13/
#執行指令碼
 ./scripts/mysql_install_db --defaults-file=/usr/local/mariadb-10.1.13/support-files/my.cnf --datadir=/home/userdata/mariadb --user=admin

注意:上面個引數之間以空格隔開

接下來製作mariadb的啟動指令碼,在/usr/lib/systemd/system/目錄下新建mariadb.service檔案,內容參考如下(具體內容還需要根據自己的實際情況進行修改):

[Unit]
Description=MariaDB Server
After=network.target
 
[Service]
User=mariadb
Group=mariadb
PIDFile=/tmp/mariadb-10.1.13.pid
ExecStart=/usr/local/mariadb-10.1.13/bin/mysqld_safe  --defaults-file=/usr/local/mariadb-10.1.13/support-files/my.cnf  --user=mariadb --datadir=/home/userdata/mariadb-10.1.13  --pid-file=/tmp/mariadb-10.1.13.pid
 
[Install]
WantedBy=multi-user.target

上面ExecStart的各個引數之間也是以空格隔開的,具體的引數需要自己指定,具體使用方法如下:

systemctl enable mariadb #開機啟動
systemctl start mariadb #立刻啟動
systemctl status mariadb #檢視服務狀態

設定root密碼

/usr/local/mariadb-10.1.13/bin/mysqladmin -u root password '1234567890'

注:通過上述方式設定密碼會出現無法進行登陸或者遠端連線(實現遠端連線的方法參考這裡)的情況,請使用其他方式(命令列或者執行修改mysql.user表)更改密碼,具體可參考這裡。還是在下面貼一下自己的吧。

下面進入mysql命令列,重新設定一下root使用者的密碼,以及新增遠端連線(注意埠開放)。

/usr/local/mariadb-10.1.13/目錄下執行./bin/mysql -u root -p '剛剛你設定的root密碼'進行登陸,登陸後再mariadb的命令列模式執行下列命令:

使用命令列修改資料庫使用者密碼:
use mysql;

UPDATE user SET password=PASSWORD('你的密碼') WHERE User='root';

為root資料庫使用者新增本地訪問所有資料庫的許可權:

grant all privileges  on *.* to [email protected]'localhost' identified by "你的密碼";

為root資料庫使用者新增遠端連線訪問所有資料庫的許可權:

grant all privileges  on *.* to [email protected]'%' identified by "你的密碼";

最後重新整理許可權
FLUSH PRIVILEGES

8.編譯PHP

解壓

tar -xzvf php-7.0.4.tar.gz

預編譯

#進入解壓後的目錄
cd /home/module_compile/php-7.0.4
#預編譯
./configure --prefix=/usr/local/php-7.0.4 --with-config-file-path=/usr/local/php-7.0.4/etc --with-mysqli=mysqlnd --with-iconv-dir=/usr/local/libiconv-1.14 --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --enable-bcmath --enable-inline-optimization --with-curl --with-fpm-user=admin --with-fpm-group=www --enable-mbstring --with-mcrypt=/usr/local/libmcrypt-2.5.8 --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-sockets --enable-zip --enable-ftp --without-pear --enable-pdo --with-pdo-mysql=mysqlnd --disable-fileinfo --with-xmlrpc --enable-opcache --enable-fpm

注意:以上各引數以空格隔開,–prefix指定你想要設定的安裝目錄,–with-iconv-dir指定你前面libiconv的安裝目錄,–with-fpm-user指定你的使用者,–with-fpm-group指定你的使用者組,–with-mcrypt需要指定你libmcrypt的安裝目錄,不然編譯PHP時,就算安裝了也會提示找不到libmcrypt,請重新安裝的錯誤!

編譯安裝

make -j2
make test
make install

配置

1)首先為php建立配置檔案:

將加壓後的安裝包內的 php.ini-production檔案複製一份到安裝目錄

cd /home/module_compile/php-7.0.4

cp php.ini-development  /usr/local/php-7.0.4/php.ini # 如果是開發就複製php.ini-development

將安裝目錄/usr/local/php-7.0.4/etc下的php-fpm.conf.default檔案複製一份並重名為php-fpm.conf

cd /usr/local/php-7.0.4/etc
cp php-fpm.conf.default  php-fpm.conf

做一個軟連結

ln -s /usr/local/php-7.0.4/bin/php /usr/bin/

進入安裝目錄/usr/local/php-7.0.4/etc/php-fpm.d目錄下,將www.conf.default複製一份並重命名為www.conf

cd /usr/local/php-7.0.4/etc/php-fpm.d
cp www.conf.default  www.conf

2)配置php-fpm.conf檔案

vi /usr/local/php-7.0.4/etc/php-fpm.conf

具體編輯內容參考這裡

3)配置www.conf檔案

vi /usr/local/php-7.0.4/etc/php-fpm.d/www.conf

具體編輯內容參考這裡。 需要修改的內容包括user ,group,listen.owner,listen.group ,listen 等資訊,其中listen那一行,修改成如下內容:

listen = /var/run/php-fpm/php-fpm.sock   # 使用unix socket

4)啟動php-fpm

mkdir /var/run/php-fpm/ #這一步在每次啟動系統時都要做,因為/var/run是個動態目錄,系統重啟php-fpm就沒了
chown -R admin:www /var/run/php-fpm
cd /usr/local/php-7.0.4/
./sbin/php-fpm

5)修改nginx配置檔案支援php

cd /usr/local/nginx/
vi ./conf/nginx.conf

具體修改內容如下:

server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.php index.html index.htm;         # 新增index.php的首頁檔案
        }

        # 新增下面內容
        location ~ \.php$ {
            fastcgi_pass        unix:/var/run/php-fpm/php-fpm.sock;
            fastcgi_index       index.php;
            fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
            include fastcgi_params;
            include fastcgi.conf;
        }

修改完成後重啟nginx.

cd /usr/local/nginx
./sbin/nginx -s stop
./sbin/nginx 

然後在/nginx/html下建立index.php,

vi /nginx/html/index.php

新增下面內容:

<?php
    phpinfo();
?>

然後在瀏覽器中輸入ip進行訪問,當你看到下面的介面,那麼恭喜你,配置成功!

參考文章: