在Gentoo Linux中安裝LEMP(Linux、Nginx、MySQL/MariaDB、PHP/PHP-FPM和PhpMyAdmin)

Gentoo 是其中一個最快的Linux發行版,因為它建立於來源導向並且提供軟件管理程式Portage,這個程式提供了構建完整的網頁開發平台所需的某些工具,它的運作速度非常快,同時也具有高度的自定義能力。

Install Nginx in Gentoo Linux

本主題將帶您逐步完成構建完整的Web環境平台的安裝過程,這個平台使用LEMP(Linux Nginx、MySQL/MariaDB、PHP-FPM/PhpMyadmin),並利用Portage軟件包管理所提供的USE flags,該功能在編譯過程中提供了一組軟件包功能,用於Web平台所需的模塊或設置,將大幅調整伺服器配置。

需求

  1. 使用強化配置文件的Gentoo安裝進行互聯網伺服器安裝 – Gentoo安裝指南
  2. 使用靜態IP地址配置的網絡。

步驟1:安裝Nginx Web伺服器

1.在嘗試進行Nginx安裝之前,請確保您的網絡接口卡已配置為靜態IP地址,並確保Portage源和系統是最新的。

$ sudo su -
# emerge --sync
# emerge --update --deep --with-bdeps=y @world
Update Gentoo Linux

2.更新過程完成後,通過將Nginx USE flags回顯到Portage make.conf文件中,選擇首選的設置和模塊進行Nginx安裝。首先運行以下命令列出Nginx默認安裝的模塊。

# emerge -pv nginx

對於詳細的模組信息(包的 USE 標誌),請使用 equery 命令。

# equery uses nginx
List All Flag Modules

然後使用以下命令安裝 Nginx。

# emerge --ask nginx
Install Nginx Web Server

如果除了默認模組外需要額外的模組(如 WebDAV、fancyindex、GeoIP 等),則應在 Portage 的 make.conf 文件上使用 NGINX_MODULES_HTTP 指示,然後重新編譯 Nginx 以使用新模組。

# echo 'NGINX_MODULES_HTTP="dav auth_pam fancyindex geoip fastcgi uwsgi gzip rewrite"' >> /etc/portage/make.conf
# emerge --ask nginx
Compile Nginx for New Modules

3. 當 Portage 完成 Nginx 的 emerge 後,啟動 http 實例,並使用瀏覽器導向至 http://localhost 來進行驗證。

Verify Nginx Web Server

第二步:安裝 PHP

4. 若要在 Nginx 伺服器中使用 PHP 動態網頁編程語言,請安裝 PHP-FastCGI Process ManagerFPM),並在 Portage 的 USE 標誌上加入 fpm 和其他重要的 PHP 擴展,同時確保刪除 Apache 擴展。

# emerge -pv php
Install PHP in Gentoo
# equery uses php
PHP Extension Selection
# echo " dev-lang/php fpm cgi curl gd imap mysql mysqli pdo zip json xcache apc zlib zip truetype -apache2 " >> /etc/portage/package.use
# emerge --ask php

5. 在啟動 PHP-FPM 之前,需要對服務配置文件進行一些更改。打開 php-fpm 配置文件,並進行以下更改。

# nano /etc/php/fpm-php5.5/php-fpm.conf

尋找並取消註釋以下指示以讓其看起來像這樣。

error_log = /var/log/php-fpm.log
listen = 127.0.0.1:9000    ## Here you can use any HTTP socket (IP-PORT combination ) you want  ##
pm.start_servers = 20

6. 編輯完 PHP-FPM 配置文件後,更改 PHP-FPM 日誌文件權限並啟動服務。

# chmod 755 /var/log/php-fpm.log
# /etc/init.d/php-fpm start

即使啟動了 PHP-FPM 服務,Nginx 仍無法與 PHP 網關通信,因此需要對 Nginx 配置文件進行一些更改。

第三步:編輯 Nginx 配置

7. Nginx的默认模板配置文件只提供了一个仅限本地主机的基本HTTP套接字。要更改此行为并启用虚拟主机,请打开位于路径/etc/nginx/nginx.conf文件并进行以下配置。

# nano /etc/nginx/nginx.conf

定位对应于localhost并监听127.0.0.1 IP地址的第一个server块,并将其所有语句注释掉,使其看起来像下面的屏幕截图一样。

Disable Basic HTTP Configuration

不要关闭该文件,然后移动到底部,在最后一个关闭花括号“ } “之前添加以下语句。

Include /etc/nginx/sites-enabled/*.conf;
Enable Nginx Virtual Host

8. 接下来创建sites-enabledsites-available(未使用的虚拟主机)Nginx目录和本地主机在HTTP和HTTPS协议上的配置文件。

# mkdir /etc/nginx/sites-available
# mkdir /etc/nginx/sites-enabled

创建以下本地主机的文件配置。

# nano /etc/nginx/sites-available/localhost.conf

添加以下文件内容。

server {
               listen 80;
               server_name localhost;

               access_log /var/log/nginx/localhost_access_log main;
               error_log /var/log/nginx/localhost_error_log info;

               root /var/www/localhost/htdocs;

                location / {
                index index.html index.htm index.php;
                autoindex on;
                autoindex_exact_size off;
                autoindex_localtime on;

                                }

                         location ~ \.php$ {
                       # Test for non-existent scripts or throw a 404 error
                       # Without this line, nginx will blindly send any request ending in .php to php-fpm
                       try_files $uri =404;
                        include /etc/nginx/fastcgi.conf;
                       fastcgi_pass 127.0.0.1:9000;  ## Make sure the socket corresponds with PHP-FPM conf file
                        }
                }
Create Nginx Virtual Host Configuration

对于具有SSL的本地主机,请创建以下配置文件。

# nano /etc/nginx/sites-available/localhost-ssl.conf

添加以下文件内容。

server {
               listen 443 ssl;
               server_name localhost;

            ssl on;
               ssl_certificate /etc/ssl/nginx/nginx.pem;
               ssl_certificate_key /etc/ssl/nginx/nginx.key;

               access_log /var/log/nginx/localhost.ssl_access_log main;
               error_log /var/log/nginx/localhost.ssl_error_log info;

               root /var/www/localhost/htdocs;

                                location / {
                index index.html index.htm index.php;
                autoindex on;
                autoindex_exact_size off;
                autoindex_localtime on;
                                 }                                                

                      location ~ \.php$ {
                       # Test for non-existent scripts or throw a 404 error
                       # Without this line, nginx will blindly send any request ending in .php to php-fpm
                       try_files $uri =404;
                       include /etc/nginx/fastcgi.conf;
                       fastcgi_pass 127.0.0.1:9000;
                                }
                }
Create SSL Nginx Virtual Host

9. 现在是时候在系统可执行路径($PATH shell变量)上创建两个脚本,作为激活或禁用Nginx虚拟主机的命令。

创建第一个名为n2ensite的Bash脚本,通过在sites-availablesites-enabled之间创建符号链接来启用虚拟主机配置文件。

# nano /usr/local/bin/n2eniste

添加以下文件内容。

#!/bin/bash
if test -d /etc/nginx/sites-available && test -d /etc/nginx/sites-enabled  ; then
echo "-----------------------------------------------"
else
mkdir /etc/nginx/sites-available
mkdir /etc/nginx/sites-enabled
fi

avail=/etc/nginx/sites-available/$1.conf
enabled=/etc/nginx/sites-enabled/
site=`ls /etc/nginx/sites-available/`

if [ "$#" != "1" ]; then
                echo "Use script: n2ensite virtual_site"
                echo -e "\nAvailable virtual hosts:\n$site"
                exit 0
else

if test -e $avail; then
sudo ln -s $avail $enabled
else
echo -e "$avail virtual host does not exist! Please create one!\n$site"
exit 0
fi

if test -e $enabled/$1.conf; then
echo "Success!! Now restart nginx server: sudo /etc/init.d/ nginx restart"
else
echo  -e "Virtual host $avail does not exist!\nPlease see available virtual hosts:\n$site"
exit 0
fi
fi
Create Virtual Host Enable Script

10. 然后创建第二个名为 n2dissite 的脚本,将删除 sites-enabled Nginx 路径中指定的活动虚拟主机,内容如下。

# nano /usr/local/bin/n2dissite

添加以下内容。

#!/bin/bash
avail=/etc/nginx/sites-enabled/$1.conf
enabled=/etc/nginx/sites-enabled
site=`ls /etc/nginx/sites-available/`

if [ "$#" != "1" ]; then
                echo "Use script: n2dissite virtual_site"
                echo -e "\nAvailable virtual hosts: \n$site"
                exit 0
else

if test -e $avail; then
sudo rm  $avail
else
echo -e "$avail virtual host does not exist! Exiting!"
exit 0
fi

if test -e $enabled/$1.conf; then
echo "Error!! Could not remove $avail virtual host!"
else
echo  -e "Success! $avail has been removed!\nPlease restart Nginx: sudo /etc/init.d/nginx restart"
exit 0
fi
fi
Create Virtual Host Disable Script

11. 完成编辑 Bash 脚本后,附加执行权限并激活本地主机虚拟主机 – 使用虚拟主机配置文件名,不带 .conf 扩展名,然后重新启动 Nginx 和 PHP-FPM 服务以应用更改。

# chmod +x /usr/local/bin/n2dissite
# chmod +x /usr/local/bin/n2ensite
# n2ensite localhost
# n2ensite localhost-ssl
# service nginx restart
# service php-fpm restart
Restart Nginx and PHP-FPM

12. 为了测试配置,在本地主机默认的 Web 文件根路径(/var/www/localhost/htdocs)上创建一个 PHP 信息文件,并将浏览器重定向到 https://localhost/info.phphttp://localhost/info.php

echo "<?php phpinfo(); ?>" /var/www/localhost/htdocs/info.php
Verify PHP Configuration

使用本地主机虚拟主机配置文件作为模板,以及 Nginx n2enmodn2dismod,您现在可以轻松地添加任意数量的网站,但请确保您对于面向互联网的 Web 服务器有有效的 DNS 指针,或者在系统 hosts 文件中本地使用条目。

第 4 步:安装 MySQL/MariaDB + PhpMyAdmin

要安装 MySQL 数据库和 MySQL 的 PhpMyAdmin Web 界面,请使用在 在 Gentoo 上安装 LAMP 中介绍的相同过程。

13. 如果您想要使用 MariaDB,作为 MySQL 的替代品,使用以下命令获取 USE flags 并安装它。

# emerge -pv mariadb
# emerge --ask mariadb
Install MariaDB Database

如果与 MySQL 发生软件包冲突,请将以下行添加到 Portage package.accept.keywords

# echo “=dev-db/mariadb-5.5.37-r1 ~amd64” >> /etc/portage/package.accept.keywords
# echo “=virtual/mysql-5.5 ~amd64” >> /etc/portage/package.accept.keywords
# emerge --ask mariadb

14. 安裝MySQL數據庫後,啟動服務並使用mysql_secure_installation進行安全設置(修改root密碼,禁用非本地主機的root登錄,刪除匿名用戶/測試數據庫)

# service mysql start
# mysql_secure_installation

15. 進入MySQL數據庫,使用mysql -u root -p命令測試其功能,離開時使用exit命令。

# mysql -u root -p

MariaDB > show databases;
MariaDB > exit;
Verify MySQL Connectivity

16. 如果你對MySQL命令行不太熟悉,可以通過執行以下命令安裝PhpMyAdmin Web前端。

# emerge -pv dev-db/phpmyadmin
# echo “dev-db/phpmyadmin setup vhosts” >> /etc/portage/package.use
# emerge  --ask dev-db/phpmyadmin
Install PhpMyAdmin

17. 安裝完成PhpMyAdmin後,根據示例配置文件創建一個配置文件,將blowfish_secret密語更改為隨機字符串,然後從/usr/share/webapps/phpmyadmin/phpmyadmin_version_number/htdocs/創建一個符號鏈接到您想要訪問PhpMyAdmin Web界面的虛擬主機文檔根路徑。

# cd /usr/share/webapps/phpmyadmin/4.2.2/htdocs/
# cp config.sample.inc.php  config.inc.php
# nano config.inc.php
Configure PHPMyAdmin
# ln -s /usr/share/webapps/phpmyadmin/4.2.2/htdocs/  /var/www/localhost/htdocs/phpmyadmin
Create a PhpMyAdmin Symbolic Link

18. 要通過PhpMyAdmin Web界面訪問MySQL數據庫,打開瀏覽器並使用以下URL地址https://localhost/phpmyadmin

Verify PhpMyAdmin Login

19. 最後一步是在系統中啟用服務,以便在重啟後自動啟動。

# rc-update add nginx default
# rc-update add php-fpm default
# rc-update add mysql default
Enable Services System Wide

現在我們已經為Web托管設置了一個最小環境,如果您只使用HTML、JavaScript和PHP動態生成的頁面,且不需要SSL網站,上述配置對您應該是滿意的。

Source:
https://www.tecmint.com/install-lemp-in-gentoo-linux/