SDB:搭建LAMP服务器

跳转至: 导航, 搜索

测试版本


本文教您如何使用 openSUSE 架设 LAMP,以部署 WordPress,MediaWiki 等有用的本地或网络站点。

什么是 LAMP?

LAMP 是一个自由开源的服务器解决方案套件包,名字分别是 Linux,Apache HTTP 服务器,MySQL(或 MariaDB) 数据库,PHP 脚本语言的首字母。根据需求的不同,PHP 脚本语言还可以换成 Perl 或 Python,甚至是 Go。

准备工作

取得 root 权限

安装与配置 LAMP 的大部分操作需要 root 权限,可以使用以下命令切换到 root 账户:

su -
本页面出现的所有命令默认在 root 账户下运行。你也可以使用
sudo

以在普通账户下临时获取 root 权限。

配置防火墙

如果想让你部署的站点可以被远程访问,请确保 http 服务或 80 端口已被防火墙放行。如果你想部署 https 站点,请确保 https 服务或 443 端口已被防火墙放行。你可以使用 firewall-cmd(文本界面) 或 yast2-firewall(图形界面,也提供文本界面模式)配置防火墙:

注意: 请小心配置防火墙,以免将自己锁于服务器外。

firewall-cmd

你可以使用 firewall-cmd 配置配置防火墙。首先使用以下命令获取当前启用的区域:

firewall-cmd --get-active-zones

使用以下命令将 http 和 https 服务永久添加到区域,使用上面查询到的区域名称替换「区域」部分:

firewall-cmd --zone=区域 --add-service=http --permanent
firewall-cmd --zone=区域 --add-service=https --permanent

你也可以使用以下命令将 80 和 443 端口永久添加到区域,使用上面查询到的区域名称替换「区域」部分:

firewall-cmd --zone=区域 --add-port=80/tcp --permanent
firewall-cmd --zone=区域 --add-port=443/tcp --permanent

重新加载防火墙配置:

firewall-cmd --reload

yast2-firewall

你也可以使用 yast2-firewall 模块配置防火墙。

打开 YaST(有无图形界面均可):

yast

在图形界面下使用鼠标,在文本界面下按[↓]移动到「安全和用户」,按[Tab]切换列,按向[↓]移动到「防火墙」,回车进入防火墙设置。你也可以使用以下命令直接打开 yast2-firewall 模块:

yast firewall

在「接口」页面确认当前使用的区域,在对应的区域页面将「http」和「https」服务添加到「允许」列表中,保存设置即可。

安装与配置

Apache HTTP 服务器

安装

官方软件源提供了 Apache HTTP 服务器的包,你可以使用 zypper 安装:

zypper install apache2

启动并配置开机启动 Apache HTTP 服务器:

systemctl start apache2
systemctl enable apache2

测试

apache2-example-pages 包提供了一个测试页面,你可以使用 zypper 安装:

zypper install apache2-example-pages

使用浏览器访问localhost(本地站点)或远程站点的 IP 地址,如果出现「It works!」字样说明 Apache HTTP 服务器运行正常。

管理模块

使用以下命令启用或禁用模块:

a2enmod 模块名
a2dismod 模块名

使用以下命令查看当前启用的模块:

a2enmod -l

部分模块被单独打包,你可以使用 zypper 搜索并安装这些模块:

zypper search 'apache2-mod*'
zypper install 模块名

多处理模块(MPM)

openSUSE 提供了 Apache HTTP 服务器的三种多处理模块 prefork、worker 和 event。prefork 提供了更好的可靠性和与旧软件的兼容性,后两者则能提供更好的性能。

openSUSE 将多处理模块分别打包,请安装所需的多处理模块:

zypper install apache2-prefork
zypper install apache2-worker
zypper install apache2-event

如果安装了多个多处理模块,请编辑/etc/sysconfig/apache2APACHE_MPM=""字段,在引号内填入要使用的多处理模块名称。编辑后请重启 Apache HTTP 服务器:

systemctl restart apache2

相关目录及文件

Apache HTTP 服务器的配置文件位于/etc/apache2,/etc/apache2/httpd.conf提供了该目录中文件的描述。

默认网站文件目录为/srv/www/htdocs

MariaDB

安装

openSUSE 提供了 MariaDB,它是 MySQL 的分支和替代品,不再建议安装 MySQL。你可以使用 zypper 安装 MariaDB 及相关工具:

zypper install mariadb mariadb-tools

启动并配置开机启动 MariaDB:

systemctl start mariadb
systemctl enable mariadb

配置

MariaDB 与 MySQL 兼容,安装后应当运行安全配置向导:

mysql_secure_installation

请遵循向导完成安全配置,这个向导也会为 MariaDB 的 root 创建密码。使用以下命令以 root 账户登录 MariaDB:

mysql -u root -p

接下来便可以用 SQL 语句管理数据库,如新建一个普通用户:

CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';

创建数据库:

CREATE DATABASE 数据库名;

给予普通用户该数据库的所有权限:

GRANT ALL PRIVILEGES ON 数据库名.* TO "用户名"@"主机名";

刷新权限:

FLUSH PRIVILEGES;

退出:

EXIT

相关目录及文件

MariaDB 主配置文件为/etc/my.cnf,额外配置文件可放置在/etc/my.cnf.d中。

PHP

安装

openSUSE 提供了 php7 的软件包,你可以使用 zypper 安装:

注意: PHP5 的生命周期已结束,请不要尝试安装 PHP5。
zypper install php7

一些 php 模块被单独打包,你可以使用 zypper 搜索与安装它们。

zypper search 'php7-*'

为了和 MariaDB 交互我们需要安装 php7-mysql 模块:

zypper install php7-mysql

与 Apache 集成

可用使用多种方式将 PHP 与 Apache 集成:

mod_php
注意: mod_php 不是线程安全的,请确保将其与 prefork 多处理模块(多进程无线程)一起使用。

mod_php 是一个 Apache 模块,你可用使用 zypper 安装:

zypper install apache2-mod_php7

启用该模块:

a2enmod php7
php-fpm

php-fpm 是一个 PHP FastCGI 进程管理器,使用该方式比起 mod_php 可以获得更好的性能。

注意: 建议与 event 多处理模块一起使用。

安装 php-fpm:

zypper install php7-fpm

启动并配置开机启动 php-fpm:

systemctl start php-fpm
systemctl enable php-fpm

php-fpm 需要 proxy 和 proxy_fcgi 两个 Apache 模块的支持,启用它们:

a2enmod proxy proxy_fcgi

默认情况下 php-fpm 监听 9000 端口,在 Apache 配置文件中添加以下内容:

<FilesMatch \.php$>
setHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

建议在/etc/apache2/conf.d下新建一个文件或在虚拟主机文件中添加此内容。

配置后请重启 Apache HTTP 服务器:

systemctl restart apache2

测试

在默认网站文件目录/srv/www/htdocs下新建名为index.php的文件,内容如下:

<?php
phpinfo();
?>

通过浏览器访问https://localhost/index.php (本地站点)或https://IP地址/index.php(远程站点),若出现 PHP 信息页面说明配置正确。

由于该页面会显示服务器敏感信息,测试后请务必删除该文件以确保安全性:

rm /srv/www/htdocs/index.php

相关目录及文件

/etc/php7包含了大部分配置文件。

/etc/php7/fpm/php-fpm.conf.default/etc/php7/fpm/php-fpm.d/www.conf.default记录了默认的 php-fpm 配置参数。

部署应用示例

PhpMyAdmin

接下来可以用命令行做,也可以用特权的 Dolphin 来做:

cd /srv/www/htdocs/phpMyAdmin
sudo cp -r config.sample.inc.php config.inc.php
sudo vi config.inc.php
按下键盘上的 "i" 键,进入输入模式
按方向键,向下,找到这里:
$cfg['blowfish_secret'] = ‘这里输入密码’;
按 ":" 号,输入 wq 保存。

测试

打开浏览器,输入 localhost/phpMyAdmin,回车。使用用户名 root,和刚才设置的 phpMyAdmin 密码登陆。

PhpMyAdmin.png

搭建 Wordpress

先用 phpMyAdmin 建立一个数据库,点『数据库』,输入一个名字,点创建。

然后下载 Wordpress,解压,复制 wp-config-sample.php 为 wp-config.php

打开 wp-config.php,里面的『DB_NAME』输入刚才创建的数据库名字,『DB_USER』是你登陆 mysql 用的用户名,这里是 root,『DB_PASSWORD』是你登陆 mysql 用的密码,这里是 123456。保存。

把 wordpress 整个文件夹仍到 /srv/www/htdocs/ 里面去。

sudo cp -r wordpress /srv/www/htdocs/

打开浏览器,输入 localhost/wordpress/wp-admin/ 就进入了 wordpress 的安装页面,填写完基本信息点安装。

成功了! enjoy it!

Wordpress.png

常见问题

php_gettext 提示没有 mb_detect() 函数

你需要安装 php7-mbstring

sudo zypper in php7-mbstring

缺少 mysqli|mysql 扩展

你需要安装 php7-mysql

sudo zypper in php7-mysql

无法裁剪 (crop) 图片

你需要安装 php7-gd

sudo zypper in php7-gd

扩展阅读