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