网页伺服器(http server)
大家都听过linux很适合用来当伺服器,Ubuntu是最多人熟悉的linux版本,现在就来说明如何在Ubuntu上架设网页伺服器
来架设属于自己的网页吧!
本篇使用LAMP架构L:Linux作业系统 A:Apache网页伺服器 M:MySQL资料库 P:PHP
1.安装及设定Apache
apache是apache软体基金会研发的open source网页伺服器,目前到2.4.25版
进到/etc/apache2,所有与apache相关的档案全在这里
首先打开设定档apache2.conf(记得用root权限打开),apache2.conf包含apache主要的设定
找到Global configuration,从这里以下开始设定
ServerRoot "(路径)" apache设定档所在的目录,例如设定挡在etc的apache2这个目录里,就是"/etc/apache2",最右边不要加/,预设有mark掉,要把#拿掉才会生效
Timeout (秒数) 设定client端多久没反应就自动踢出
KeepAlive On/Off 是否让client端建立一次连线可以对server发出多次request,打开可以让client一次连上后同时做多件事(例如同时上传下载多个档案),不用每次都要重新连接
MaxKeepAliveRequests (数量) client端每次连线可以同时从网页下载的档案数,0为无限制
KeepAliveTimeout (秒数) client端上次发出request后多久没再发出request即自动踢出
HostnameLookups On/Off/Double 纪录每个连上的client的方式,On会纪录client的网域名称,Off会纪录client的ip,Double两者都会纪录
下面有一个<Directory />,这里设定要对个别目录内容在网页上如何呈现,每段代表一个目录,开头的<Directory (目录名)>代表要对哪个目录设定,结尾用</Directory>结束,夹在中间的是设定项目和参数,例如<Directory />代表对/这个目录的设定,</Directory>是结尾,中间是设定
Options
Indexes:如果这个目录下没有首页档,就在网页上显示出这个目录下所有档案的档名
※首页档就是在这个网页首页对应到的目录里叫index.html的这个档案,内容要用html设计,首页上的背景、物件、连结等都可以用这个档设计
FollowSymLinks:当client连到你的网页时,apache会读取index.html,这个参数可以透过连结载入目录外的index.html,所以有了这个参数,再将目录外的index.html建一个symbolic link在这个目录里,就可以在网页上显示index.html的内容了
※symbolic link的指令sudo ln -s /(原档位置、档名) /(要建立连结的目录)
ExecCGI:让这个目录有执行CGI程式的权限
Includes:让一些server-side include程式可以执行
MultiViews:在纪录错误的档案中以多种语言纪录错误讯息,语言种类取决于系统设定
AllowOverride
ALL:这个目录的全部权限设定皆可以被client端的.htaccess这个档覆写
AuthConfig:只有网页认证设定可以被client端的.htaccess覆写
Indexes:只有indexes相关的设定可以被client端的.htaccess覆写
Limits:可以直接设定client端可在这个目录下做哪些动作
None:不可覆写任何权限设定
※AllowOverride设定为Limits时,直接在<Directory (目录名)>和</Directory>之间加入
<Limit A B C....>
Order allow,deny/deny,allow
Allow/Deny from all/(ip位址)
</Limit>
A、B、C...是要规范client在这个目录下的网页做的事,allow,deny代表基本上允许,特别规定者除外,deny,allow代表基本上不允许,特别规定者除外
all是对所有的client都用此设定,或可以指定对哪些ip位址的client用此设定
例如
<Limit GET POST OPTIONS>
Order allow,deny
Allow from all
</Limit>
代表允许所有client在这个目录的网页做GET、POST、OPTIONS这些动作,特别规定者除外
Require all denied:所有使用者的apache都不可以使用这个目录当网页,特别规定者除外
Require all granted:所有使用者的apache都可以使用这个目录当网页,特别规定者除外
预设只有三个目录,当然也可以自己加入想要当网页的目录,格式与上面的一样
打开apache2目录里的ports.conf
ports.conf设定伺服器要用的port
Listen (port数) http协定要用哪个port
<IFModule ssl_module>
Listen (port数) ssl协定要用哪个port
</IFModule>
<IFModule mod_gnutls.c>
Listen (port数) gnutls模式要用哪个port
</IFModule>
打开sites-available资料夹,里面有一个档名有default的档,另外在sites-enabled资料夹里有它的symbolic link,sites-enabled里放的都是sites-available的连结,所以改其中一个档两边的档会一起改
打开sites-available里档名带有default的那个档
ServerName (网域名) 网页的DNS名称,必须先注册过或设定在hosts里(下面会详细说明)
ServerAdmin (电邮信箱) 网页管理员的电子邮件信箱
DocumentRoot (目录位置) 网页相关档案摆放的目录
当在浏览器打上DNS位置,也就是servername,会看到以documentroot设定的目录为首页的网页,如果目录内有摆index.html这个网页档,页面会显示网页档的内容,如果没有就要看apache2.conf里对这个目录的设定
可以在documentroot目录下建子目录,子目录的网址是documentroot的网域名称加上/(目录名),例如网域名称叫www.example.com,首页目录是/var/www/html,如果在/var/www/html目录里建一个目录A,那么在浏览器打www.example.com/A可以进到目录A,这就是为什么很多网页的网域名后面会有/啰
2.安装及设定PHP
PHP是伺服器端script,是给伺服器看的,不像html、CSS、javascript是给浏览器看的,所有与伺服器相关的动作(存取资料库、在伺服器端读写档案、与其他伺服器端的程式沟通)都必须由PHP达成,安装php后网页伺服器(Apache)才能编译所有.php档,虽然简单的不涉及后端的网页可以不用PHP,但大多数网页都需要使用,至于PHP语法这里不提
以下指令安装php
到/etc/php/(php版本)/apache2里,会看到php.ini,它是php的设定档,打开它
找到allow_url_fopen、allow_url_include,确定它们是On
找到post_max_size,这个参数是以POST方法传送表单的最大容量限制,0是无限制,如果太小,会发现在上传档案时跑很久,有可能是这个原因
此外,upload_max_filesize和memory_limit这两个值也检查一下,三个参数的大小关系必须是memory_limit>post_max_size>upload_max_filesize
在terminal打a2enmod php7.0,这个指令是启动php用的,看到Module php7.0 already enabled表示php已启动
service apache2 restart重新启动apache
打开/etc/apache2/mods-available/php7.0.conf
里面是如下画面
在</FilesMatch>下面加上
<FilesMatch ".\.html$">
SetHandler application/x-httpd-php
</FilesMatch>
如下
php部分完成
3.安装及设定MySQL资料库
MySQL是一种资料库,除了储存资料,还提供查询、排序(sort)、删除、分类、合并、分开等功能,它以表单栏位的形式储存资料,可以由PHP下达指令自动化操作,MySQL看的是SQL语法,至于SQL语法这里不提
以下指令安装MySQL
设定资料库root使用者(资料库管理员)的密码
安装phpmyadmin
以下按照图上选择
设定phpmyadmin登入密码
下面输入刚刚root user相同的密码即可
以下如图上选择
port number留白即可
MySQL database name for phpmyadmin设一个自己喜欢的名字
MySQL username for phpmyadmin预设是phpmyadmin,直接确定即可
以下预设是root,直接确定即可
如出现以下画面,选keep the local version currently installed
打开/etc/apache2/apache2.conf
在IncludeOptional sites-enabled/*.conf底下加一行Include /etc/phpmyadmin/apache.conf
安装php7.0-mbstring
重新启动apache
在浏览器打http://localhost/phpmyadmin,如出现以下画面代表成功了,试著用username:root和刚刚设定的root使用者密码登入
大功告成!😃😃😃
*如无安装mysql-server会出现此错误
*如出现以下错误
到/etc/dbconfig-common/phpmyadmin.conf
找到dbc_dbport=' '这行
将它设为0
retry