SDB:搭建LAMP服务器

跳转至: 导航, 搜索
本文教您如何使用 openSUSE 12.1+ 架设 LAMP,搭建 wordpress,mediawiki 等有用的本地或网络站点。

什么是 LAMP?

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

安装

首先,打开 Konsole:

sudo zypper in apache2-mod_php5 php5-mysql mariadb mariadb-tools phpMyAdmin(可选)

这样就可以安装上必要的 apache2, php5 和 mariadb/mysql 了。目前 openSUSE/SUSE SLE 均提供了 mariadb mariadb-tools,不再建议安装 mysql。

安装好之后,运行 /usr/sbin/a2enmod php5 来启用 PHP5 模块。

开启防火墙端口

打开 YaST(有无图形界面均可),这里只介绍无图形界面的方法,以适用于服务器环境:

su
yast

按向下键移动到「安全和用户」,按 Tab 键切换列,按向下键移动到「防火墙」,回车进入防火墙设置。

切换到「允许的服务」,「高级」,TCP 端口里面输入你 VPS 可能会需要的端口,常见的有:

  • HTTP: 80
  • HTTPS: 443
  • FTP: 21
  • SSH: 22
  • VNC: 5901,5902...//看你开多少 VNC 窗口
  • php5-fpm: 9000
  • Mysql: 3306

其它的自己用自己搜,比如各种科学上网服务器端的默认端口等。

最后确认修改,退出 yast 和 su 环境。

启动

然后是顺序启动 apache2, mysql,注意,openSUSE 12.1 使用了 systemd,所以以前通过 rcapache2, rcmysql 的方式都不灵了,要这样:

su
输入密码登陆成 root
systemctl start apache2.service
systemctl start mysql.service

查看运行状态

systemctl status apache2.service
systemctl status mysql.service

开机启动 apache2

systemctl enable apache2.service

如果用

systemctl enable mysql.service

来开机启动 MySQL 的话,您会看到提示:

mysql.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig mysql on
The unit files have no [Install] section. They are not meant to be enabled
using systemctl.
Possible reasons for having this kind of units are:
1) A unit may be statically enabled by being symlinked from another unit's
   .wants/ or .requires/ directory.
2) A unit's purpose may be to act as a helper for some other unit which has
   a requirement dependency on it.
3) A unit may be started when needed via activation (socket, path, timer,
   D-Bus, udev, scripted systemctl call, ...).

也就是说实际上设置 mysql 开机启动的命令是:

/sbin/chkconfig mysql on

正好 openSUSE 已经帮我们执行了这个命令。对应的,取消 mysql 开机启动的命令就是:

/sbin/chkconfig mysql off

当然 YasT 也可设置,您需要安装 yast2-services-manager。然后打开 YasT->系统->服务管理器,找到 mysql,点一下 Enable/Disable 就可以设置开机启动或者禁用 mysql 了。

初始化

下面是给 mysql 创建 root 密码。注意,网络上流传的所有教程都是错的。它会给你 mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost' (using password: YES)' 错误。正确的方法是:

mysqladmin -u root password 123456 

这样就给你的 root 账户添加上了密码 123456

看下好不好用:

mysqladmin -u root -p status (接下来会提示你输入密码)

要是能看到:

Uptime: 523  Threads: 1  Questions: 8  Slow queries: 0 Opens: 33  Flush tables: 1  Open tables: 26  Queries per second avg: 0.015

这样的信息就代表成功了。

建立新的普通用户(可选,因为我是自用嘛,又不是真的跑服务器,就不需要了):

mysqladmin -u root -p -h localhost

这样就登陆进了 mysqladmin 终端后台,输入:

CREATE USER '用户名'@'%' IDENTIFIED BY '密码';
GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'

于是你就有了一个普通用户,可以进行远程登入数据库后台了(root 不能远程登入),当然从安全的角度考虑不建议进行远程登入,但你一定要那么做的话,你可能还需要为 mysql 开启防火墙端口。不

接着运行 mysql_secure_installation 来把比如匿名用户,test 数据库,root 远程登入这些可能会减弱安全的东西删掉或改掉。

不过我宁愿在 phpmyadmin 里弄,图形化的会简单一些。

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() 函数

你需要安装 php5-mbstring

sudo zypper in php5-mbstring

缺少 mysqli|mysql 扩展

你需要安装 php5-mysql

sudo zypper in php5-mysql

无法裁剪 (crop) 图片

你需要安装 php5-gd

sudo zypper in php5-gd

扩展阅读