CentOS 下安裝 LEMP 服務(nginx、MariaDB/MySQL 和 php)
LEMP 組合包是一款日益流行的網站服務組合軟體包,在許多生產環境中的核心網站服務上起著強有力的作用。正如其名稱所暗示的, LEMP 包是由 Linux、nginx、MariaDB/MySQL 和 PHP 組成的。在傳統的 LAMP 包中使用的 Apache HTTP 協議伺服器效能低下而且難於大規模叢集,相比來說 nginx 的高效能及輕量級等特性,正是其的替代方案。 MariaDB 是一款社群支援驅動的 MySQL 資料庫的分支,其功能更多效能更佳。PHP,服務端程式語言,具體是由 PHP FastCGI 的增強版 PHP-FPM 元件來處理,生成網頁動態內容。
(LCTT 譯註:為何採用 LEMP 而不是 LNMP 的縮寫?據 https://lemp.io/ 的解釋:Nginx 的發音是 Engine-X,重要的發音而不是首字母,而且 LEMP 實際上是可讀的,而 LNMP 看起來只是字母表。)
這篇文章裡,我們示範如何在 CentOS 操作平臺上安裝 LEMP 包。我們安裝的目標是 CentOS 6 和 CentOS 7 兩個操作平臺,如有必要會指出它們的不同。
第一步: Nginx
讓我們在 CentOS 上安裝 nginx 作為第一步,然後對它作些基本的配置,比如使其能引導時啟動和對防火牆做個性化設定。
安裝 Nginx
讓我們從它的官方的 RPM 源來安裝一個預構建的穩定版本的 nginx 包。
在 CentOS 7 系統上:
$ sudo rpm --import http://nginx.org/keys/nginx_signing.key $ sudo rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm $ sudo yum install nginx
在 CentOS 6 系統上:
$ sudo rpm --import http://nginx.org/keys/nginx_signing.key $ sudo rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm $ sudo yum install nginx
注意在安裝 nginx RPM 包之前,如果您沒有匯入 nginx 的官方 GPG 金鑰的話,會出一如下所示的警告:
warning: /var/tmp/rpm-tmp.KttVHD: Header V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEY
啟動 Nginx
安裝完成後,nginx 是不會自動啟動的。現在讓我們來啟動它吧,還要做些配置讓其可以隨著作業系統啟動而啟動。我們也需要在防火牆裡開啟 TCP/80 埠,以使得可以遠端訪問 nginx 的 web 服務。所有這些操作、設定都只需要輸入如下命令就可實現。
在 CentOS 7 系統上:
$ sudo systemctl start nginx $ sudo systemctl enable nginx $ sudo firewall-cmd --zone=public --add-port=80/tcp --permanent $ sudo firewall-cmd --reload
在 CentOS 6 系統上:
$ sudo service nginx start $ sudo chkconfig nginx on $ sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT $ sudo service iptables save
測試 Nginx
nginx 的預設文件要目錄是 /usr/share/nginx/html。預設的 index.html 檔案一定已經在這目錄下了。讓我們檢測下是否可以訪問到這個測試 web 頁,輸入 http://nginx的ip地址/ 訪問。
如果您看到的是如上所示的頁面的話,說明 nginx 已經正常啟動。繼續往下。
第二步: MariaDB/MySQL
下一步就是安裝 LEMP 包的資料庫元件。CentOS/RHEL 6 或早期的版本中提供的是 MySQL 的伺服器/客戶端安裝包,但 CentOS/RHEL 7 已使用了 MariaDB 替代了預設的 MySQL。作為 MySQL 的簡單替代品,MariaDB 保證了與 MySQL 的 API 和命令列用法方面最大的相容性。下面是關於怎麼在 CentOS 上安裝和配置 MaraDB/MySQL 的操作示例。
在 CentOS 7 系統上:
如下所示操作來安裝 MariaDB 服務/客戶端包以及啟動 MariaDB 服務。
$ sudo yum install mariadb-server $ sudo systemctl start mariadb $ sudo systemctl enable mariadb
在 CentOS 6 系統上:
如下示,安裝 MySQL 服務/客戶端包並且啟動 MySQL 服務。
$ sudo yum install mysql-server $ sudo service mysqld start $ sudo chkconfig mysqld on
在成功啟動 MariaDB/MySQL 服務後,執行在 MariaDB/MySQL 服務包中的指令碼。這一次的執行會為為資料庫伺服器進行一些安全強化措施,如設定(非空)的 root 密碼、刪除匿名使用者、鎖定遠端訪問。
$ sudo mysql_secure_installation
這就是資料庫的設定。現在進行下一步。
第三步: PHP
PHP 是 LEMP 包中一個重要的元件,它負責把儲存在 MariaDB/MySQL 伺服器的資料取出生成動態內容。為了 LEMP 需要,您至少需要安裝上 PHP-FPM 和 PHP-MySQL 兩個模組。PHP-FPM(FastCGI 程式管理器)實現的是 nginx 伺服器和生成動態內容的 PHP 應用程式的訪問介面。PHP-MySQL 模組使 PHP 程式能訪問 MariaDB/MySQL 資料庫。
安裝 PHP 模組
在 CentOS 7 系統上:
$ sudo yum install php php-fpm php-mysql
在 CentOS 6 系統上:
首先,您需要從倉庫中安裝 REMI 庫(參見本指南),並安裝軟體包。
$ sudo yum --enablerepo=remi install php php-fpm php-mysql
在安裝 PHP 時,得注意兩個地方:
在 CentOS 6 系統中,安裝 REMI倉庫中最新的 php-mysql 模組時,MySQL 的服務端包和客戶端包會被當做一部分依賴包而自動的更新。
在 CentOS 6 和 CentOS 7 中,在安裝 PHP 包的同時會把 Apache web 伺服器(即 httpd)當做它的依賴包一起安裝。這會跟 nginx web 伺服器起衝突。這個問題會在下一節來討論。
取決於您的使用情況,可以使用 yum 命令來定製您的 PHP 引擎,也許會想安裝下面的任意一個擴充套件 PHP 模組包。
- php-cli: PHP 的命令列介面。從命令列裡測試 PHP 時非常有用。
- php-gd: PHP 的影像處理支援。
- php-bcmath: PHP 的數學支援。
- php-mcrypt: PHP 的加密演算法支援 (例如 DES、Blowfish、CBC、 CFB、ECB ciphers 等)。
- php-xml: PHP 的 XML 解析和處理支援。
- php-dba: PHP 的資料抽象層支援。
- php-pecl-apc: PHP 加速器/快取支援。
安裝時,要檢視可用的 PHP 模組的完整列表的話,可以執行:
$ sudo yum search php- (CentOS 7) $ sudo yum --enablerepo=remi search php- (CentOS 6)
啟動 PHP-FPM
您需要啟動 PHP-FPM ,然後把它放到自動啟動服務列表。
在 CentOS 7 系統上:
$ sudo systemctl start php-fpm $ sudo systemctl enable php-fpm
在 CentOS 6 系統上:
$ sudo chkconfig php-fpm on $ sudo service php-fpm start
第四步: 配置 LEMP 組合包
本教程的最後一步是調整 LEMP 組合包的配置。
使 Httpd 不可用
首先,讓我們把早先隨 PHP 包安裝的 httpd 服務給禁用掉。
在 CentOS 7 系統上:
$ sudo systemctl disable httpd
在 CentOS 6 系統上:
$ sudo chkconfig httpd off
配置 Nginx
接下來,讓我們配置 nginx 虛擬主機,使得 nginx 可以通過 PHP-FPM 來處理 PHP 的任務。用文字編輯器開啟 /etc/nginx/conf.d/default.conf ,然後按如下所示修改。
$ sudo vi /etc/nginx/conf.d/default.conf
server { listen 80; server_name www.server_domain.com; root /usr/share/nginx/html; index index.php index.html index.htm; location / { } # redirect server error pages to the static page /50x.html error_page 500 502 503 504 /50x.html; location = /50x.html { } # nginx passes PHP scripts to FastCGI server via a TCP/9000 socket # this setting much be consistent with /etc/php-fpm.d/www.conf # try_files prevents nginx from passing bad scripts to FastCGI server location ~ \.php$ { try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
nginx 的預設工作執行緒數(在 /etc/nginx/nginx.conf 檔案中指定的)是 1,讓我們也來調整一下這個數字。通常來說我們建立的工作執行緒數應該和 CPU 核數相同。要確信您的 CPU 的核數,請執行下面這命令:
$ grep processor /proc/cpuinfo | wc -l
如果您的 CPU 是 4 核的,就如下所示修改 /etc/nginx/nginx.conf 檔案。
$ sudo vi /etc/nginx/nginx.conf
worker_processes 4;
配置 PHP
接下來,讓我們對 PHP 的配置檔案 /etc/php.ini 做自定義設定。更具體的就是在 /etc/php.ini 檔案中增加以下兩行。
cgi.fix_pathinfo=0 date.timezone = "PRC"
為了安全起見,我們希望的是 PHP 直譯器只是處理指定檔案路徑的檔案任務,而不是預測搜尋一些並不存在的檔案任務。上面的第一行起的就是這個作用。(LCTT 譯註:原文用的時區是“America/New York”,根據國內情況,應該用 PRC或 Asia 下的中國城市。)
第二行定義的是 PHP 中日期/時間相關函式使用相關的預設時區。使用本指南,找出您所在的時區,並設定相應 date.timezone 的值。
測試 PHP
最後,讓我們來測試下 nginx 是否能處理 PHP 頁面。在測試之前,請確保重啟 nginx 和 PHP-FPM。
在 CentOS 7 系統上:
$ sudo systemctl restart nginx $ sudo systemctl restart php-fpm
在 CentOS 6 系統上:
$ sudo service nginx restart $ sudo service php-fpm restart
建立一個叫名叫 test.php 的檔案,然後寫入如下內容,並放入 /usr/share/nginx/html 目錄。
<?php phpinfo(); ?>
開啟瀏覽器,輸入 http://nginx的IP地址/test.php 。
如果您能看到如上所示的頁面,說明設定的 LEMP 完全成功!
via: http://xmodulo.com/install-lemp-stack-centos.html
作者:Dan Nanni 譯者:runningwater 校對:wxy
相關文章
- Nginx + PHP + MySQL (LEMP)安裝包下載NginxPHPMySql
- 如何在 Fedora 30 Server 上安裝 LEMP(Linux、Nginx、MariaDB、PHP)ServerLinuxNginxPHP
- CentOS7.3 安裝配置 Nginx、MariaDB、PHPCentOSNginxPHP
- Centos6 下安裝Nginx+Mysql+PHPCentOSNginxMySqlPHP
- centos 下 安裝 node,nginx, mysqlCentOSNginxMySql
- centos7.4原始碼安裝php,swoole,nginx,redis,mariadbCentOS原始碼PHPNginxRedis
- Mac下Nginx、PHP、MySQL 和 PHP-fpm安裝配置MacNginxPHPMySql
- Centos下安裝mariaDB方法CentOS
- 在ubuntu中用apt-get安裝LEMP棧(linux+nginx+mysql+php)Ubuntuapt-getLinuxNginxMySqlPHP
- docker 安裝 Laravel 環境 (nginx mariadb PHP7.4)--centos7.3DockerLaravelNginxPHPCentOS
- 在 Ubuntu 16.04 為 Nginx 伺服器安裝 LEMP 環境(MariaDB,PHP 7 並支援 HTTP 2.0)UbuntuNginx伺服器PHPHTTP
- centos下安裝nginxCentOSNginx
- CentOS7上安裝並配置Nginx、PHP、MySqlCentOSNginxPHPMySql
- Centos6.3編譯安裝Nginx+php+MysqlCentOS編譯NginxPHPMySql
- CentOS5.5一鍵安裝nginx+mysql+phpCentOSNginxMySqlPHP
- CentOS.7下安裝配置FTP和SFTP服務CentOSFTP
- CentOS7.4安裝php配置php-fpm服務CentOSPHP
- CentOS 下編譯安裝 PHP7.2(nginx 版)CentOS編譯PHPNginx
- CentOS 7 下安裝 nginx + PHP 執行環境CentOSNginxPHP
- centos7 安裝php7+mysql5.7+nginx+redisCentOSPHPMySqlNginxRedis
- CentOS 下 MySQL 服務搭建CentOSMySql
- Centos6下使用yum安裝MariaDBCentOS
- CentOS7下RabbitMQ服務安裝配置CentOSMQ
- CentOS 7下安裝Tomcat到服務CentOSTomcat
- CentOS7 下 Nginx 的安裝和配置CentOSNginx
- Nginx服務安裝配置Nginx
- Linux CentOS 安裝 PHP5.5 Redis XDebug Nginx MySQLLinuxCentOSPHPRedisNginxMySql
- docker 安裝 Laravel 環境 (nginx mariadb PHP7.2)DockerLaravelNginxPHP
- docker 安裝 Laravel 環境 (nginx mariadb PHP7.3)DockerLaravelNginxPHP
- CentOS 下編譯安裝 NginxCentOS編譯Nginx
- Linux下安裝Nginx+PHP7.1+MySQL5.7LinuxNginxPHPMySql
- Mac 下 Nginx、MySQL、PHP-FPM 的安裝配置MacNginxMySqlPHP
- Ubuntu安裝Lighttpd、PHP和MariaDBUbuntuhttpdPHP
- centos8安裝和配置redis服務CentOSRedis
- 在CentOS下安裝apche+tomcat+mysql+phpCentOSTomcatMySqlPHP
- centos6.8下安裝部署LNMP-(nginx1.8.0+php5.6.10+mysql5.6.12)CentOSLNMPNginxPHPMySql
- Linux上安裝Nginx依賴環境和庫、Nginx安裝,Nginx服務命令LinuxNginx
- Docker下安裝Nginx和php(爬坑篇)DockerNginxPHP