如何在OpenSUSE Leap 42.1上安装Nginx,PHP和MySQL(LEMP)

LEMP或Linux,Engine-x,MySQL和PHP是安装在Linux操作系统上的软件集合,用于获取基于PHP的Web应用程序...

LEMP或Linux,Engine-x,MySQL和PHP是安装在Linux操作系统上的一个软件集,用于在快速的Nginx Web服务器上启动并运行基于PHP的Web应用程序。 LEMP为托管Web应用程序提供了快速可靠的基础。 LEMP是一个开源软件的集合,它具有完整的文档集,因此您可以轻松了解有关不同应用程序及其组合方式的更多信息。

在本教程中,我将向您展示如何在openSUSE spap 42.1上安装Nginx,MariaDB和PHP-FPM。 然后,我将使用SuSEfirewall2配置OpenSUSE防火墙,以允许访问Nginx Web服务器,并向您显示如何在Nginx Web服务器上添加新的虚拟主机配置。

最后,我们将安装phpMyAdmin作为易于使用的数据库管理工具,并通过更改web目录并为phpMyAdmin目录启用HTTP身份验证来保护它。

前提条件

  • OpenSUSE Leap 42.1。
  • 根权限
  • 了解zypper命令。

第1步 - 安装和配置SuSEfirewall2

SuSEfirewall2是一个基于配置文件“/ etc / sysconfig / SuSEfirewall2”生成iptables规则的脚本。 我们将安装和配置它,以防止服务器端口的网络攻击。

用zypper安装SuSEfirewall2:

zypper in SuSEfirewall2

安装完成后,我们必须为Web应用程序和SSH打开一些端口。 我们将打开端口22为ssh服务,端口80和443为http和https。 转到“/ etc / sysconfig /”目录并编辑“SuSEfirewall2”文件:

cd /etc/sysconfig/
vim SuSEfirewall2

在第253行中,添加服务的端口号,以白色空格分隔:

FW_SERVICES_EXT_TCP="22 80 443"

保存文件并退出。

重新启动SuSEfirewall2和SSH服务,然后通过telnet连接到服务器来测试端口配置。

重新启动SuSEfirewall2和SSH服务:

/sbin/rcSuSEfirewall2 restart
systemctl restart sshd

使用telnet在端口22上测试ssh连接:

telnet 192.168.1.101 22

使用SSH访问服务器。

第2步 - 安装和配置Nginx

Nginx或引擎x是具有低内存消耗的高性能HTTP和代理服务器。 它被Netflix,Pinterest,CloudFlare,Github等大型网站使用.Nginx具有易于学习的配置语法,也可以作为具有健康检查和反向代理的缓存功能的负载平衡器。

在这一步中,我们将安装nginx并将其添加到启动时启动。 使用“zypper in”命令安装它:

zypper in nginx

启动nginx,并启动它在启动时启动:

systemctl start nginx
systemctl enable nginx

Nginx现在开始,但是如果您尝试通过网络浏览器访问,您将收到403禁止错误。 出现此错误是因为Web根文件夹中没有标准索引文档。 要解决此问题,请在根目录“/ srv / www / htdocs”中创建一个新的索引html。 转到目录并创建index.html文件:

cd /srv/www/htdocs/
echo "<h1>This is Nginx OpenSUSE Leap 42.1</h1>" > index.html

打开您的Web浏览器并键入您的服务器IP,您将获得索引页面:

http://192.168.1.101/

Nginx在浏览器中工作。

第3步 - 安装和配置MariaDB

MariaDB是根据GNU GPL许可证从MySQL分发的开源RDBMS(关系数据库管理系统)。 在本教程中,我们将安装MariaDB并配置MariaDB shell的根密码。

使用zypper命令安装MariaDB:

zypper in mariadb mariadb-client

启动MariaDB / MySQL,并使用以下的systemctl命令将其添加到引导启动:

systemctl start mysql
systemctl enable mysql

接下来,使用mysqladmin命令配置MariaDBb / MySQL的管理员密码。 您可以为此使用的另一个选项是“mysql_secure_installation”。 在这一步,我将使用mysqladmin:

/usr/bin/mysqladmin -u root password 'aqwe123'

注意:

“aqwe123”是MariaDB / MySQL的新密码。

然后用用户root和密码登录到mysql shell aqwe123:

mysql -u root -p
TYPE PASSWORD 'aqwe123'

测试MySQL登录

现在,MariaDB / MySQL已安装并配置了我们的新密码。

第4步 - 安装和配置PHP-FPM

PHP-FPM或FastCGI Process Manager是旧版PHP FastCGI的替代品,可提供额外的功能和速度改进。 PHP-FPM非常适合基于PHP编程语言的小型和大型站点。

在这一步中,我们将安装php5-fpm,并附上phpMyAdmin所需的一些附加扩展名。 使用zypper安装php5-fom和扩展名:

zypper in php5 php5-mysql php5-fpm php5-gd php5-mbstring

安装完成后,转到php5-fpm目录并复制配置文件:

cd /etc/php5/fpm/
cp php-fpm.conf.default php-fpm.conf

使用vim命令编辑配置:

vim php-fpm.conf

取消注释第32行启用php-fpm日志,默认前缀为/ var,如果php5-fpm有任何问题,可以查看日志文件“/var/log/php-fpm.log”。

error_log = log/php-fpm.log

在第148行中,我们将将nginx进程的所有者配置为Nginx用户。 将用户和进程组更改为nginx:

user = nginx
group = nginx

第159行:将php-fpm配置为在套接字文件下运行,而不是端口。 改变这样的行:

listen = /var/run/php-fpm.sock

而在第170行,使用模式0660将unix套接字的权限更改为nginx用户和组。

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

保存文件并退出编辑器。

接下来,去PHP cli目录,并使用vim编辑php.ini文件:

cd /etc/php5/cli/
vim php.ini

出于安全考虑,将cgi.fix_pathinfo的值更改为零。 第178行:

cgi.fix_pathinfo=0

保存并退出。

将php.ini复制到conf.d目录中:

cp php.ini /etc/php5/conf.d/

PHP-FPM配置在这个阶段完成,但是我们还需要配置Nginx。 我们必须设置Nginx与php-fpm一起工作。

转到nginx配置目录,并使用cp命令备份配置文件:

cd /etc/nginx/
cp nginx.conf nginx.conf.backup

用vim编辑nginx.conf:

vim nginx.conf

在第48行添加index.php:

index index.php index.html index.htm;

在第68行添加新的php配置部分,这是处理.php文件请求的配置。

       location ~ \.php$ {
                root /srv/www/htdocs;
                try_files $uri =404;
                include /etc/nginx/fastcgi_params;
                fastcgi_pass unix:/var/run/php-fpm.sock;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       }

保存文件并退出。

接下来,测试nginx配置文件的语法,以确保没有错误。 然后启动php-fpm守护进程并重新启动Nginx:

nginx -t
systemctl start php-fpm
systemctl restart nginx

为了确保php-fpm和nginx正常工作,我们将添加一个新的php测试文件。 去DocumentRoot目录并创建名为info.php的phpinfo文件:

cd /srv/www/htdocs/
echo "<?php phpinfo(); ?>" > info.php

打开您的Web浏览器键入您的服务器ipaddress:

http://192.168.1.101/info.php

PHP正在运行。

Nginx和php-fpm现在正在工作。

第5步 - 配置Nginx虚拟主机

在此步骤中,我将向您展示如何为网站添加虚拟主机配置。 我们将在“/ srv / www / example /”中配置一个新域“www.example.com”和webroot目录。 请用你自己的域名替换example.com和example.com。

GNginx nginx目录,并为virtualhost配置创建一个新目录。

cd /etc/nginx/
mkdir vhosts.d/
cd vhosts.d/

接下来,为域名“example.com”虚拟主机创建新文件example.conf。

vim example.conf

粘贴virtualhost配置如下:

server {
    server_name example.com;
    return 301 $scheme://www.example.com$request_uri;
}

server {
    listen 80;

    root /srv/www/example;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

          location ~ \.php$ {
                try_files $uri =404;
                include /etc/nginx/fastcgi_params;
                fastcgi_pass unix:/var/run/php-fpm.sock;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       }


}

保存文件并退出。

现在,在/ srv / www /目录中创建站点“example.com”的目录,并创建一个新的索引文件。

mkdir -p /srv/www/example/
cd /srv/www/example/
echo "<h1>This is www.example.com site.</h1>" > index.html
echo "<?php phpinfo(); ?>" > info.php

现在打开您的网络浏览器并访问域:

example.com

您将被重定向到www域,现在访问php文件:

http://www.example.com/info.php

PHP信息。

第6步 - 安装和配置phpMyAdmin

PhpMyAdmin是一个基于PHP的应用程序,用于从Web浏览器管理MySQL或MariaDB数据库。 在此步骤中,我将配置phpMyAdmin在php-fpm下运行,然后通过限制访问phpMyAdmin登录页面来使PHPMyAdmin安全。

使用zypper命令安装phpMyAdmin:

zypper in phpMyAdmin

该命令将安装phpMyAdmin所需的所有软件包,包括创建密码文件所需的apache2-utils。

现在我们在系统上安装了phpMyAdmin。 接下来,我们将使用htpasswd命令创建一个新的htpasswd文件。

创建密码文件htpasswd:

htpasswd -c /etc/nginx/htpasswd megumi
TYPE YOUR PASSWORD for user megumi

接下来,我们必须配置Nginx为phpmyadmin目录使用HTTP基本身份验证。 我们将限制使用auth_basic访问phpMyAdmin登录页面,只有“htpasswd”文件中的用户才能登录到phpMyAdmin。

转到Nginx配置目录并编辑nginx.conf文件:

cd /etc/nginx/
vim nginx.conf

通过在第40行(server_name)下添加新行来定义服务器部分中的Web根目录:

        server_name  localhost;
        root /srv/www/htdocs;       #newline config

然后在第60行添加nginx的phpMyAdmin配置:

    location ~ ^/phpMyAdmin/.*\.php$ {
        auth_basic "Restricted Access";
        auth_basic_user_file  /etc/nginx/htpasswd;
        fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include   fastcgi_params;
    }

保存文件并退出编辑器。

测试nginx配置并重启nginx:

nginx -t
systemctl restart nginx

接下来,打开您的Web浏览器并访问phpMyAdmin URL,系统将要求您输入登录页面的用户名和密码。

http://192.168.1.101/phpMyAdmin/

PHPMyAdmin的基本HTTP验证。

然后使用您的MySQL用户名和密码登录。

Nginx上的PHPMyAdmin。

phpMyAdmin已成功安装,只有htpasswd中的用户可以登录。

参考

http://nginx.org/en/docs/
https://www.howtoing.com/basic-http-authentication-with-nginx
https://www.ruby-forum.com/topic/4411851