网站搜索

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


Gentoo 是最快的 Linux 发行版之一,因为它是从源代码方向构建的,并由其软件管理程序 - Portage 提供 - 构建完整的 Web 开发人员平台所需的某些工具动作和工作速度非常快,并且具有高度的定制性。

本主题将引导您逐步完成使用 LEMP(Linux Nginx、MySQL/MariaDB、PHP-FPM/PhpMyadmin)构建完整 Web 环境平台的安装过程,并借助 LEMP 的帮助>使用Portage Package Management提供的标志,它在编译过程中提供了一组包功能——Web平台所需的模块或设置,将高度调整服务器配置。

要求

  1. 使用强化配置文件为面向 Internet 的服务器安装 Gentoo – Gentoo 安装指南。
  2. 配置有静态 IP 地址的网络。

第 1 步:安装 Nginx Web 服务器

1. 在尝试继续安装 Nginx 之前,请确保您的 NIC 已配置静态 IP 地址,并确保 Portage 源和您的系统是最新的。

sudo su -
emerge --sync
emerge --update --deep --with-bdeps=y @world

2. 更新过程完成后,通过将 Nginx USE 标志 回显到 Portage make.conf 文件来选择首选设置和模块,继续安装 Nginx 。首先通过运行以下命令列出 Nginx 默认安装模块。

emerge -pv nginx

要获取详细的模块信息(包的 USE 标志),请使用 equery 命令。

equery uses nginx

然后使用以下命令安装 Nginx。

emerge --ask nginx

如果除了默认模块之外,您还需要 Nginx 编译的额外模块(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

3. Portage完成Nginx的生成后,启动http守护进程并通过将浏览器定向到http://localhost来验证它。

第 2 步:安装 PHP

4. 要在 Nginx 服务器上使用 PHP 动态 Web 编程语言,请通过附加 fpm< 安装 PHP-FastCGI Process Manager (FPM) 和 Portage USE 标志上的其他重要 PHP 扩展,并确保删除 Apache 扩展。

emerge -pv php

equery uses php

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 配置文件进行一些更改。

步骤 3:编辑 Nginx 配置

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

nano /etc/nginx/nginx.conf

找到与 localhost 对应的第一个 server 块,并侦听 127.0.0.1 IP 地址,并推荐其所有语句,如下面的屏幕截图所示。

先不要关闭文件,移至最底部,在最后一个大括号 “ }” 之前添加以下语句。

Include /etc/nginx/sites-enabled/*.conf;

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

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

为 localhost 创建以下文件配置。

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
                        }
                }

对于具有 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;
                                }
                }

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

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

11.编辑完Bash脚本后,附加执行权限并激活localhost虚拟主机 - 使用不带.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

12. 要测试配置,请在 localhost 默认 Web 文件根路径 (/var/www/localhost/htdocs) 上创建 PHP 信息文件,并将浏览器重定向到 https://localhost/info.phphttp://localhost/info.php

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

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

第四步:安装MySQL/MariaDB + PhpMyAdmin

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

13. 作为回报,如果您想使用 MariaDB(MySQL 的直接替代品),请使用以下命令获取 USE 标志 并安装它。

emerge -pv mariadb
emerge --ask mariadb

如果您遇到与 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 -u root -p命令进入MySQL数据库以测试其功能,并使用exit命令离开它。

mysql -u root -p

MariaDB > show databases;
MariaDB > exit;

16.如果您不太熟悉 MySQL 命令行。通过执行以下命令安装 PhpMyAdmin Web 前端。

emerge -pv dev-db/phpmyadmin
echo “dev-db/phpmyadmin setup vhosts” >> /etc/portage/package.use
emerge  --ask dev-db/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

ln -s /usr/share/webapps/phpmyadmin/4.2.2/htdocs/  /var/www/localhost/htdocs/phpmyadmin

18. 要通过 PhpMyAdmin Web 界面访问 MySQL 数据库,请打开浏览器并使用以下 URL 地址 https://localhost/phpmyadmin

19.最后一步是在系统范围内启用服务,以便在重新启动后自动启动。

rc-update add nginx default
rc-update add php-fpm default
rc-update add mysql default

现在我们已经有了一个最小的虚拟主机环境设置,如果您只使用 HTML、JavaScript 和 PHP 动态生成的页面,并且不需要 SSL 网站,那么上面的配置应该可以满足您的要求。