Linux安裝PHP環境LNMP

Linux系統搭建LNMP環境,即Linux+Nginx+mysql+php。

服務器版本是CentOS Linux release 7.4.1708,阿里雲服務器,所以部署環境之前,需要先登錄阿里雲服務器管理後臺開啓端口:80、82、443、3306,其中82端口是我的項目配置站點的端口。

打開阿里雲官網-》控制檯-》雲服務器ECS-》安全組-》安全組規則:
隨便選中一個規則列,點擊“克隆”,彈出頁面的“協議類型”選擇“HTTP(80)”,“優先等級”輸入60,點擊完成。

1.安裝Nginx依賴庫

#安裝Nginx的編譯環境gcc
yum install gcc-c++

#nginx的http模塊使用pcre解析正則表達式所以安裝perl兼容的正則表達式庫
yum install -y pcre pcre-devel

#nginx使用zlib對http包的內容進行gzip
yum install -y zlib zlib-devel

#nginx不僅支持http協議,還支持https(即在ssl協議上傳輸http),如果使用了https,需要安裝OpenSSL庫
yum install -y openssl openssl-devel

2.安裝Nginx

下載地址: http://nginx.org/en/download.html 選擇下載的版本,我這裏選擇    nginx-1.15.3,進入到下載路徑,輸入下載命令:

cd /usr/local/
wget http://nginx.org/download/nginx-1.15.3.tar.gz
tar -zxvf nginx-1.15.3.tar.gz
rm nginx-1.15.3.tar.gz
mv nginx-1.15.3 nginx
cd nginx
./configure --prefix=/usr/local/nginx
make
make install

#遇到make錯誤 /usr/local/nginx 路徑不存在不管,繼續 make install

#添加Nginx環境變量,可以在命令行直接輸入Nginx命令
vim /etc/profile
#在最後添加Nginx的路徑
export NGINX_HOME=/usr/local/nginx
export PATH=$PATH:$NGINX_HOME/sbin

#重新編譯環境變量
source /etc/profile

#啓動nginx
cd sbin
./nginx

#我這邊啓動時報錯:
nginx: [alert] could not open error log file: open() "/usr/local/nginx/logs/error.log" failed (2: No such file or directory)
2018/09/25 13:59:56 [emerg] 15555#0: open() "/usr/local/nginx/logs/access.log" failed (2: No such file or directory)
#需要手動創建logs文件夾
mkdir /usr/local/nginx/logs
#再啓動
./nginx

3.安裝PHP

#安裝php依賴包:
yum install libxml2
yum install libxml2-devel

下載php7,下載地址: http://cn2.php.net/distributions/php-7.2.1.tar.gz ,選擇下載的版本,進入到下載路徑,輸入下載命令:

cd /usr/local
wget http://cn2.php.net/distributions/php-7.2.1.tar.gz
tar -zxvf php-7.2.1.tar.gz
rm php-7.2.1.tar.gz
mv php-7.2.1 php
cd php
./configure --prefix=/usr/local/php --with-zlib --enable-zip --with-openssl --enable-fpm --enable-mbstring --with-libdir=lib64
make
make install

cp php.ini-production /usr/local/php/lib/php.ini
cp sapi/fpm/php-fpm /etc/init.d/php-fpm
#添加執行權限
chmod +x /etc/init.d/php-fpm
#php-fpm的配置文件
cp etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

#設置默認啓動php-fpm子進程數和最大啓動數
vim /usr/local/php/etc/php-fpm.d/www.conf
pm.max_children = 200
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 30

#設置環境變量
vim /etc/profile
#最後一行加入
export PATH=/usr/local/php/bin:$PATH

#刷新環境變量
source /etc/profile

#啓動
/etc/init.d/php-fpm

重啓php-fpm:

#找到master的進程ID
ps -ef | grep php
kill ID
#然後再次啓動
/etc/init.d/php-fpm

配置nginx支持php 編輯對應的nginx配置文件,我的配置文件路徑/usr/local/nginx/conf/nginx.conf

vim /usr/local/nginx/conf/nginx.conf
#在http模塊裏面添加下面內容
server {
    listen       82;
    server_name  localhost 47.92.151.19;
    root         /opt/www;
    location / {
        root   html;
        index  index.html index.htm index.php;
    }
 
    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /opt/www$fastcgi_script_name;
        include        fastcgi_params;
    }
}

在/opt/www下新建index.php

vi index.php
<?php
	phpinfo();
?>

重啓nginx

nginx -s reload

瀏覽器輸入IP地址:82/index.php就可以看到phpinfo的信息,配置成功,若不成功再重啓下php-fpm。

安裝composer

curl -sS https://getcomposer.org/installer | php
#將composer.phar文件移動到bin目錄以便全局使用composer命令
mv composer.phar /usr/local/bin/composer
#切換國內源
composer config -g repo.packagist composer https://packagist.phpcomposer.com

#如果提示:
Do not run Composer as root/super user! Seehttps://getcomposer.org/rootfor details
#是因爲composer不希望我們用root賬號去操作,則需要創建一個賬號
useradd -g root composer
#切換到composer賬號
su composer
#使用composer賬號進行composer命令操作

4.安裝mysql
下載地址: https://dev.mysql.com/downloads/mysql/5.6.html#downloads ,選擇Linux-Generic

tar -zxvf mysql-5.6.41-linux-glibc2.12-x86_64.tar.gz
rm mysql-5.6.41-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.6.41-linux-glibc2.12-x86_64 mysql

#添加用戶組
groupadd mysql
#添加用戶mysql 到用戶組mysql
useradd -g mysql mysql
 
cd mysql/
mkdir -p data/mysql
chown -R mysql:mysql ./
./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data/mysql --pid-file=/usr/local/mysql/data/mysql.pid
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
cp support-files/my-default.cnf /etc/my.cnf

#如果./scripts/mysql_install_db報錯:FATAL ERROR: please install the following Perl modules before executing,解決:
yum install -y perl-Module-Install.noarch
#如果./scripts/mysql_install_db報錯:Installing MySQL system tables.../usr/local/mysql/bin/mysqld: error while loading shared,解決:
yum install libaio* -y


#修改啓動腳本
vi /etc/init.d/mysqld
#修改項:
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data/mysql
 
#啓動服務
service mysqld start
 
#測試連接
./bin/mysql -uroot
 
#加入環境變量,在最後加上下面內容,這樣可以在任何地方用mysql命令了
vim /etc/profile
export PATH=$PATH:/usr/local/mysql/bin

#重新編譯環境變量
source /etc/profile

#創建遠程訪問賬號-只對單數據庫有權限
mysql -u root -p
create user rootweb@'%' identified by 'dwfe21&uwd';
grant all privileges on news_db.* to rootweb@'%';
flush privileges;

#創建本地連接數據庫賬號-只對單數據庫有權限
create user rootlocal@'localhost' identified by 'dwfe21&uwd';
grant all privileges on news_db.* to rootlocal@'localhost';
flush privileges;

#mysql服務器命令:
#啓動mysql
service mysqld start
#關閉mysql
service mysqld stop
#查看運行狀態
service mysqld status

5.安裝redis
下載地址:https://redis.io/download

wget http://download.redis.io/releases/redis-4.0.11.tar.gz
tar -zxvf redis-4.0.11.tar.gz
rm redis-4.0.11.tar.gz
mv redis-4.0.11 redis
cd redis
make

#設置redis服務後臺啓動
vi redis.conf
設置daemonize yes

#啓動服務
src/redis-server redis.conf

#測試
src/redis-cli

6.安裝git客戶端

yum install -y git

7.配置nginx支持thinkphp路由
修改nginx配置

vim /usr/local/nginx/conf/nginx.conf
#修改上面步驟設置的站點信息爲:
server {
    listen       82;
    root        /opt/www;
    server_name  localhost 47.92.151.19;

    location / {
        index  index.htm index.html index.php;
        if (!-e $request_filename) {
           rewrite  ^/(.*)$  /index.php/$1  last;
           break;
        }
    }
    location ~ \.php/?.*$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        include        fastcgi.conf;

        set $fastcgi_script_name2 $fastcgi_script_name;
        if ($fastcgi_script_name ~ "^(.+\.php)(/.+)$") {
            set $fastcgi_script_name2 $1;
            set $path_info $2;
        }
        fastcgi_param   PATH_INFO $path_info;
        #下面兩句是給fastcgi權限,可以支持 ?s=/module/controller/action的url訪問模式
        fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        #下面兩句才能真正支持 index.php/index/index/index的pathinfo模式
        fastcgi_param   SCRIPT_FILENAME   $document_root$fastcgi_script_name2;
        fastcgi_param   SCRIPT_NAME   $fastcgi_script_name2;
    }
}

#重啓nginx
nginx -s reload

8.配置不同環境讀取對應的數據庫配置
由於本地開發環境與現實環境的數據庫配置或者其他配置不一致,隨意可以設置環境變量來控制。
編輯nginx的配置,設置環境變量:

vim /usr/local/nginx/conf/nginx.conf
#在我們配置的站點的fastcgi_param   SCRIPT_NAME   $fastcgi_script_name2;下面加上這句
fastcgi_param  ENV_TYPE product;

#重啓ngixn
nginx -s reload

代碼判斷的話就是:
$env_type = empty($_SERVER['ENV_TYPE']) ? 'develop' : $_SERVER['ENV_TYPE'];
if($env_type == 'product') {
	// 返回生成環境配置
}else {
	// 返回測試環境配置
}

9.安裝pdo_mysql拓展
運行ThinkPHP5項目發現數據庫報錯:could not find driver,phpinfo發現沒有啓動pdo_mysql拓展,需要安裝pdo_mysql拓展。

cd /usr/local/php/ext/pdo_mysql
phpize
#如果提示Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable. Then, rerun this script. 解決:
yum install autoconf

#注意路徑指向的是自己的mysql安裝路徑
./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql
make
make install

vim /usr/local/php/lib/php.ini
#打開extension=pdo_mysql的註釋
extension=pdo_mysql

#重啓php-fpm
ps -ef | grep php 找到master的進程ID,kill,啓動 /etc/init.d/php-fpm
#phpinfo看到pdo_mysql就完成了

10.安裝node.js
由於我用到node,附上node的安裝方法。
下載地址: http://nodejs.cn/download/

tar -xvf node-v10.8.0-linux-x64.tar.xz
rm node-v10.8.0-linux-x64.tar.xz
mv node-v10.8.0-linux-x64 node
cd node
#軟鏈接配置
ln -s /usr/local/node/bin/node /usr/local/bin/node
ln -s /usr/local/node/bin/npm /usr/local/bin/npm
#測試
node -v
npm -v

#因爲官方鏡像下載速度比較慢,若需要設置鏡像地址爲淘寶:
npm config set registry https://registry.npm.taobao.org

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章