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
第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,您将获得索引页面:
第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'
现在,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:
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
现在打开您的网络浏览器并访问域:
您将被重定向到www域,现在访问php文件:
http://www.example.com/info.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/
然后使用您的MySQL用户名和密码登录。
phpMyAdmin已成功安装,只有htpasswd中的用户可以登录。
参考
http://nginx.org/en/docs/
https://www.youcl.com/info/4267
https://www.ruby-forum.com/topic/4411851