在 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平台所需的模块或设置,将高度调整服务器配置。
要求
- 使用强化配置文件为面向 Internet 的服务器安装 Gentoo – Gentoo 安装指南。
- 配置有静态 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-enabled 和 sites-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-available 到 sites-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.php 或 http://localhost/info.php。
echo "<?php phpinfo(); ?>" /var/www/localhost/htdocs/info.php
使用 localhost 虚拟主机配置文件作为模板以及 Nginx n2enmod 和 n2dismod,您现在可以轻松添加任意数量的网站,但要确保您拥有有效的 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 网站,那么上面的配置应该可以满足您的要求。