最后更新:2016年11月27日
 by FreeFind
title ?
开始
1. 简介
2. 改用 GNU/Linux
3. 获取 openSUSE
4. 安装
日常应用
5. KDE 桌面环境
6. 常用软件
7. 安全设置
8. 终端命令行
9. 管理员设置 (YaST)
10. 软件安装
11. 软件源
12. 与Windows世界兼容
设置
13. 多媒体编解码器
14. 浏览器插件
15. 显卡驱动
16. 无线网
17. 开发环境
18. 软件打包服务OBS
19. LAMP和LNMP
20. 其他常见服务软件
附录
A: 帮助和文档
B: 游戏
C. 深入了解
D. 提示和解决方法
E. 历史和背景
F: 重在参与
GNU自由文档许可证
19. LAMP和LNMP服务器部署
本章简单介绍一些常见服务器软件的安装和配置, 如LAMP(Linux+Apache+MariaDB+Php)套件安装和phpwind论坛搭建, nginx也很流行,所以也弄了一个LNMP(Linux+Nginx+MariaDB+Php)套件和Discuz!论坛,MySQL/MariaDB的Web管理界面 phpMyAdmin 见19.3.3小节。 这两个案例里面有HTTP和数据库的服务软件, 后面20章介绍了其他常见的FTP、SSH、DNS、VNC Server、Mail服务器等。

19.1 MySQL/MariaDB
MySQL是流行的跨平台的数据库管理系统,经常和Php、Apache/nginx组成网页服务平台。 MySQL公司先被Sun收购,Sun又被Oracle收购,给开源社区带来的打击不小。 因为Oracle自己是做数据库起家,不可能对这个开源竞争对手有好处, MySQL闭源的声音越来越多。MySQL作者Michael Widenius自己创办了新公司Monty Program AB, 在MySQL基础上新创了MariaDB开源数据库。MariaDB带来更好的数据库管理特性, 更好的自由开源保障。所以openSUSE 12.3版本发布时抛弃了MySQL, 集成了新的MariaDB。MariaDB使用方式和MySQL差不多 (两个数据库包含的一堆文件名是一样的,所以不要同时装), 但性能更好。所以这里只介绍MariaDB安装配置了。

MariaDB的服务器端软件包叫mariadb,客户端叫mariadb-client, 还有个MariaDB的管理工具集叫mariadb-tools。 openSUSE默认装了前两个,建议把三个都装上。
zypper in mariadb-tools mariadb mariadb-client

装上文件之后需要初次配置。下面的安装配置都是以root命令行执行:

(1)启动MariaDB数据库服务
systemctl enable mysql.service
systemctl start mysql.service

(2)设置数据库root密码:
mysqladmin -u root password 数据库根密码

(3)进入数据库后台:
mysql -u root -p -h localhost

输入数据库根密码后就进入数据库控制台了,可以执行sql命令:
mariadb01

(4)设置新的普通用户名
上面登录到数据库管理控制台后,执行:
CREATE USER '普通用户名'@'%' IDENTIFIED BY '普通用户密码';
GRANT ALL PRIVILEGES ON *.* TO '普通用户名'@'%';

将上面普通用户名、普通用户密码替换成自己喜欢好的账户和密码,比如
CREATE USER 'susedb'@'%' IDENTIFIED BY 'opensuse123';
GRANT ALL PRIVILEGES ON *.* TO 'susedb'@'%';
以后就尽量用新的如susedb帐户登录使用数据库。

(5)运行安全配置
执行命令:
mysql_secure_installation

在命令行根据提示输入:
显示Enter current password for root (enter for none):
输入数据库根密码

显示Change the root password? [Y/n] : n
(已有密码,不需要重新设)

下面的全选Y,去除数据库不安全的默认设置:
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

这样一些默认不安全的设置就被去除了。由于数据库root不能远程登录, 所以需要一个新的普通帐户如susedb。

(6)开放防火墙端口
如果需要远程登录数据库,那么需要把openSUSE默认的防火墙端口打开。如果只在数据库本机管理,就不需要开防火墙端口。

打开Yast----》安全和用户----》防火墙。
在设置窗口,左边选“允许的服务”,右边区域用默认的“外部区域”,
要允许的服务选“MySQL server”,点击“添加”, 然后点“下一步”,完成配置即可。
mariadb02

远程登录数据库就可以执行:
mysql -u susedb -p -h 数据库服务器IP

Windows下MySQL客户端也可以使用用户名、密码、数据库服务器IP登录openSUSE上的数据库服务器进行操作。

19.2 PHP
PHP,是英文超文本预处理语言Hypertext Preprocessor的缩写。 简单地说,php就是用来建设网站必不可少的计算机语言。 我们平时在上网时看到的网站大部站是用php制作的。 比如:新浪、百度、腾讯、网站公司的网站都是用php开发的。 php是一门简单易学的语言, 只要有初中以上学历的人都可以快速学习并掌握建站技术。

PHP除了核心模块,还有无数的扩展模块。比如php5-mysql是包含连接MySQL数据库函数的模块,php5-ftp是访问FTP服务器的模块,php5-gd是创建管理png、jpg、gif等各种图片的模块,php5-zip、php5-zlib、php5-bz2是访问压缩包的函数模块, php5-pear用于管理PHP扩展和程序的集合,在Yast软件管理里面搜索php,可以看到茫茫多php5-pear打头的扩展模块。
apache2-mod_php5是用于和Apache搭建网页服务器的模块。

安装php5和常用模块执行:
zypper in php5 php5-bz2 php5-gd php5-mbstring php5-mcrypt php5-mysql php5-zip php5-zlib pwgen php5-gettext php5-pear php5-suhosin

查看php和pear内置帮助,执行
php -h
pear help

比如用户主文件夹里的hello.php文件内容:
<?php
echo "Hello world! \n"; //输出Helo world
?>

解析执行hello.php:
php -f hello.php


19.3 Apache与LAMP
Apache是最流行的Web服务器软件之一,当然也是开源跨平台的。Apache发展了很多年,现在非常强大,拥有大量的扩展模块,支持各种Web服务特性,可以做服务器集群、负载均衡。

LAMP是一个流行的Web建站平台:Linux+Apache+MySQL/MariaDB+Php/Python/Perl 。
LNMP也是类似的流行Web建站平台: Linux+Nginx+MySQL/MariaDB+Php/Python/Perl。

如果要架设LNMP平台,19.3节Apache的东西不要装,免得冲突,直接去看19.4节。 这里先简单示范一个LAMP + phpWind论坛搭建。

19.3.1 Apache安装配置
现在openSUSE Linux、MariaDB、Php都装上了,就剩Apache了。

(1)执行安装
zypper in apache2 apache2-mod_php5 apache2-doc yast2-http-server

如果要使用Python和Perl来做网页开发, 对应Apache扩展模块是apache2-mod_python和apache2-mod_perl 。 对于Servlet/JSP动态网页是通过tomcat软件支持的。 由于这里是搭建Php网站,所以不需要这些额外模块。 装php5模块和apache本身就行了。

(2)装好后启动Apache服务
systemctl enable apache2.service
systemctl start apache2.service

(3)开启防火墙80端口
Web服务器当然得开服务端口了。与前面类似的,打开
Yast----》安全和用户----》防火墙。
左边“选允许的服务”,右边添加“HTTP Server”, 如果用得到HTTPS服务,就把“HTTPS Server”一块添加开放。

(4)Yast图形界面管理
Yast还有专门的管理Apache服务器的模块,前面安装了。打开
Yast----》网络服务----》HTTP服务器。
就可以从图形界面操控Web服务器。配置比较简单,初次配置一直点下一步就行, 也可以编辑一下站点名字和管理员邮箱:
apache

以后就都可以用这个Yast的“HTTP服务器”配置来管理服务器。
HTTP网页文档根就是/srv/www/htdocs,所以最好把/srv单独做个分区或者把根分区弄大点,免得空间不够。

现在LAMP平台就架好了,我们把hello.php复制到/srv/www/htdocs,(这个文件夹写入要root权限)
cp hello.php /srv/www/htdocs

然后在浏览器里打开网页:
http://127.0.0.1/hello.php
就可以在浏览器里看到Hello world,说明安装成功。

19.3.2 phpwind论坛
LAMP平台当然不是仅仅用来显示helloworld的。现在来装一个phpwind论坛来试试。phpwind是很流行的社区系统,可以去主页查看介绍:
http://www.phpwind.com/index.php
下载页面:
http://www.phpwind.com/index.php?m=downloads&a=downloadsphpwind
一般Windows下用GBK的包,Linux当然要用简体UTF8的包。下载下来。
参看安装教程:
http://faq.phpwind.net/answer-881

(1)设置网页文件夹权限
需要将一堆文件设置成777权限,就是所有人可以读、写、执行。
所以这里先把/srv/www/htdocs设置成 777 ,再把论坛文件放进去。
root命令行执行:
chmod 777 -R /srv/www/htdocs

(2)解压缩phpwind包,将upload内的文件捣腾到htdocs文件夹
下载的比如phpwind_v9.0_utf8.zip,解压缩到phpwind_v9.0_utf8文件夹, 然后进入里面的upload文件夹。Ctrl + A 再Ctrl + X,剪切所有文件到 /srv/www/htdocs 文件夹里。
由于默认解压缩的文件权限不是777 ,所以再执行一遍:
chmod 777 -R /srv/www/htdocs

(3)执行phpwind安装
打开浏览器,访问:
http://127.0.0.1/install.php
接受协议;
接着看到各种环境状态,这里当然是很好的状态了,没问题:
phpwnd01

进入下一步;
phpwnd02

输入MariaDB数据库密码,除了root,也可以用前面自己设的普通用户名如susedb。
输入phpwnd的数据库名字,可以设置为phpwnd(论坛软件自动创建叫这个名字的数据库)。
输入论坛管理员密码。输入好后点创建数据。
创建好数据论坛就成功装好了,可以发帖:
phpwnd03

论坛主页是:
http://127.0.0.1/
论坛管理后台页面是:
http://127.0.0.1/admin.php
建议不用的时候把admin.php挪走,或者改成乱七八糟的名字。用的时候再改回来。

(4)更正/srv/www/htdocs权限
之前为安装方便,全改成777了,最好按照最小化权限重设:
chmod 755 -R /srv/www/htdocs
chmod 777 -R /srv/www/htdocs/attachment
chmod 777 -R /srv/www/htdocs/html
chmod 777 -R /srv/www/htdocs/data

这样就把LAMP + phpwind论坛架设好了。

19.3.3 phpMyAdmin
phpMyAdmin是MySQL/MariaDB数据库的管理界面,可以通过Web界面操作数据库。 由于是php语言写的,所以需要LAMP或LNMP一整套平台才跑的起来。 现在LAMP已经装好了,正好把phpMyAdmin装上,方便对数据库的管理。
zypper in phpMyAdmin

装好后就自动放在/srv/www/htdocs/phpMyAdmin/文件夹里了。在浏览器里访问:
http://127.0.0.1/phpMyAdmin/
就可以用数据库的用户名密码登录,来管理数据库。
phpMyAdmin


19.4 Nginx与LNMP
与Apache相比,Nginx是后起之秀。Apache模块很多,属于大而全的服务器软件。 而Nginx以小巧高效闻名,由俄罗斯的程序设计师Igor Sysoev所开发,其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。中国大陆使用nginx网站用户有:新浪、网易、 腾讯、小米官网等。

使用Apache的体系叫LAMP,使用Nginx的当然叫LNMP了。Apache大而全的好处是有现成的 apache2-mod_php5模块,装上就什么都不用管。 而Nginx就没这类的模块,需要借助FastCGI来解析php文件。 参看:
http://www.myhack58.com/Article/sort099/sort0102/2012/33364.htm
Apache和Nginx装一个就够了,因为HTTP服务默认都占用80端口,装两个显得浪费。 这一节的内容是接着19.2节,php装好之后,安装配置LNMP平台。

19.4.1 Nginx安装
(1)Nginx没什么附加模块,直接装它本身就行了: (好像在13.2中把nginx移到不稳定源里了,如果官方源里没有,去 http://software.opensuse.org/package/nginx 页面找 nginx)
zypper in nginx

(2)开启nginx服务
systemctl enable nginx.service
systemctl start nginx.service

(3)开放防火墙端口
由于是HTTP服务器,必须在防火墙里把80端口打开。
与19.3节类似的,打开Yast----》安全和用户----》防火墙。
左边“选允许的服务”,右边添加“HTTP Server”, 如果用得到HTTPS服务,就把“HTTPS Server”一块添加开放。
安装好nginx后,如果把前面的hello.php放在/srv/www/htdocs目录,浏览器里访问
http://127.0.0.1/hello.php
这时不会看到解析的网页,而是直接下载了hello.php文件。所以必须要继续配置。

19.4.2 php-fpm安装配置
软件包php5-fpm是用于FastCGI进程管理的PHP5模块。
LNMP平台大致的工作流程是:安装php5-fpm后,通过php-fpm启用FastCGI进程, 然后配置nginx,让nginx把php文件解析交给FastCGI进程处理, 然后nginx把解析得到网页显示出来。下面进行安装配置。

(1)安装php5-fpm
zypper in php5-fpm

(2)编辑php-fpm.conf
装了之后,在/etc/php5/fpm/目录有默认的配置文件php-fpm.conf.default, 要启用php5-fpm必须复制一个php-fpm.conf放在/etc/php5/fpm/目录:
cp /etc/php5/fpm/php-fpm.conf.default /etc/php5/fpm/php-fpm.conf

文件php-fpm.conf就是实际使用的php5-fpm配置文件。
用root权限打开php-fpm.conf进行编辑:
把 ;error_log = log/php-fpm.log 一行开头的分号去掉,并改为
error_log = /var/log/php-fpm.log

保存文件。然后可以尝试在root命令行执行:
php-fpm

如果没提示ERROR,那表示配置文件没问题。

(3)启动PHP的FastCGI进程
用root命令行启动FastCGI服务:
systemctl enable php-fpm.service
systemctl start php-fpm.service

可以查看 php-fpm监听状态:
netstat -antl |grep 9000

命令行会提示:
tcp    0    0     127.0.0.1:9000    0.0.0.0:*    LISTEN

如果是使用负载分担,将nginx和php-fpm分别运行在两台不同服务器上的话, 需要开放防火墙的TCP 9000端口,使它们能够互通。 如果二者在同一台机器上那就无所谓。

(4)配置nginx
用root权限编辑/etc/nginx/nginx.conf ,找到其中的两段:
  location / {
    root    /srv/www/htdocs/;
    index   index.html index.htm ;
  }
##
##中间的一大堆不动。
##
  #location ~ \.php$ {
    # root          html;
    # fastcgi_pass  127.0.0.1:9000;
    # fastcgi_index index.php;
    # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
    # include       fastcgi_params;
  #}

第二段本来是用#注释掉的,把#去掉,这段php的配置就会生效,然后编辑如下:
  location / {
    root    /srv/www/htdocs/;
    index   index.php index.html index.htm ;
  }
##上一段添加了一个 index.php 的主页文件名
##中间的一大堆不动。
##下面一段改网页root位置,并把/scripts改成root一样的位置
  location ~ \.php$ {
    root          /srv/www/htdocs;
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /srv/www/htdocs$fastcgi_script_name;
    include       fastcgi_params;
  }

编辑后保存。

(5)重启nginx
systemctl restart nginx.service

再用浏览器访问:
http://127.0.0.1/hello.php
就可以看到久违的Hello wolrd。这样LNMP平台就配置好了。

19.4.3 Discuz!论坛
这里提到的Discuz!和上一节的phpwnd、phpMyAdmin在LAMP和LNMP都可以正常运行。配置好了LAMP或LNMP平台后,可以随意装哪个论坛软件和phpMyAdmin。这里是演示方便,把Discuz!放到这来装,如果放到前面LAMP装是一样的。论坛phpwnd放到LNMP下也是一样装。

根据维基百科,Discuz!是个可免费下载的PHP网络论坛程序,简称DZ,由戴志康(Crossday)所创立,目前最新版本是X2.5。前身为Crossday Bulletin(CDB),最初改自XMB,尔后改写成为现今的Discuz!社区论坛程序,由康盛创想所有。现在Discuz!已成为大中华地区最多用户使用的论坛程序。Discuz!的源代码可免费下载,但它并不是开源软件,因为其许可证不符合开放源代码的定义。其官方网站:
http://www.comsenz.com/products/discuzx
下载地址:
http://www.comsenz.com/downloads/install/discuzx
大陆的选“简体UTF-8”,想要装繁体的也可以选“繁体UTF-8”。

(1)把论坛文件放到/srv/www/htdocs/
下载后把Discuz_X2.5_SC_UTF8.zip解压缩放到主文件夹的 Discuz_X2.5_SC_UTF8 文件夹里。
Discuz_X2.5_SC_UTF8 文件夹里有三个子文件夹:readme,upload,utility。
在root命令行执行命令把 upload里面的都移动到/srv/www/htdocs/ 文件夹:
mv /home/用户名/Discuz_X2.5_SC_UTF8/upload/* /srv/www/htdocs/

(这里/home/用户名/Discuz_X2.5_SC_UTF8是解压缩后的路径,可以根据各人自己的的改。)
然后在 /srv/www/htdocs/ 文件夹就可以看到一大堆论坛文件了。

(2)设置权限
/srv/www/htdocs/ 里面有四个子文件夹config ,data,uc_client/data,uc_server/data 里面的都需要设置777权限。执行:
chmod 777 -R /srv/www/htdocs/config/
chmod 777 -R /srv/www/htdocs/data/
chmod 777 -R /srv/www/htdocs/uc_client/data/
chmod 777 -R /srv/www/htdocs/uc_server/data/

(3)进行Discuz!论坛安装
打开浏览器,访问:
http://127.0.0.1/install/
进入安装界面,同意协议,进入环境检查界面:
discuz01

一切OK,点“下一步”;

进入设置运行环境,选“全新安装 Discuz! X (含 UCenter Server)”,点“下一步”;
discuz02

填写数据库用户名密码,推荐用前面新建的普通的数据库用户名密码,如susedb的用户名。
然后填写给Discuz! 用的数据库名,论坛管理员admin的新密码。 点“下一步”。

等待创建数据库表完成和数据初始化。会提示Discuz! 应用中心有一些应用,可以装一下喜欢的。 这里就不装了。直接进入论坛:
http://127.0.0.1/
discuz03

其管理后台是
http://127.0.0.1/admin.php
平时不用后台时,最好把admin.php挪走,或者改成乱七八糟的名字。等到要用的时候再改回去。

LNMP平台装phpMyAdmin与上面LAMP装是一样的,就不重复了。
下一章介绍其他常见的服务器软件。


最后附上更多的参考资料:
实战Nginx与PHP(FastCGI)的安装、配置与优化
在 OpenSuse Linux 中配置安装 Nginx + MySQL + PHP(PHP-FPM)
nginx php-fpm配置
SDB:搭建LAMP服务器
新鲜体验 openSUSE 12.1下搭建Web服务器
配置http服务器(apache, nginx)支持 html5 video(ogv, webm...)


prev
next
本文档翻译自 http://opensuse-guide.org/ 不当之处,还望指正
使用e-mail发送您的英文评论给 admin [at] opensuse-guide.org
或发送意见和建议给中文译者:Libitum (hello[at]libitum.org); Winland (winland0704[at]126.com)