【经验】基于阿里云 Ubuntu 的 LAMP 网站搭建及配置完全教程
本文同步发表在负雪明烛的博客:https://fuxuemingzhu.cn/2016/03/02/My-Aliyun-Server-Setting/
起因
最近老师让我做一个众筹系统,可以在微信公众号上展示运行的。虽然说着简单,但是实现起来却完全不是那么回事,并且我一个做安卓开发的,对服务器和前端完全不懂,这个对我来说一路坎坷,最终上线,这里记录一下我的辛酸历程。
最终效果是在自己的网站服务器网页中运行以下网站:
经过
服务器
首先,当然要有一台云服务器,在腾讯云和阿里云当中,学生包的价格分别是1元每月和9.9元每月,这里我选择了阿里云,因为我感觉阿里云用的更多,应该更可靠点(想太多了,我这种小白用户感觉不到差别好么)。在使用阿里云的过程中还是感到了使用阿里云是更简单的,首先实名认证部分只需要绑定支付宝就能完成,学生认证需要输入学号和身份证号和学信网信息一致即可。腾讯云需要本人手持学生证拍照上传,这些略去不提。
域名
再者,需要一个域名。当然这个不是必须的,因为只有云服务器ip也能访问服务器上运行的网站。当然我还是买了一个http://www.fuxuemingzhu.com/,这个域名现在是我的博客站点,并不是用来给服务器用,因为我的博客是存储在github.io的,这样写博客的时候还能增加github的contributions……这个域名需要备案和审核,采用的是阿里旗下的万网备案,如实填写,提交各种信息之后有个人工电话审核,接听了之后也只是有个住址信息不完整,帮我完善了下信息,最后阿里送了块幕布,拍照上传之后给工信部备案,总共大概20天左右域名到手。
前端和后台
系统选择
这两个完成之后,我也就啥都不会了……咳咳,但不能放弃不是,我知道需要前端和服务器配合,本来想按照学姐画的草图用DreamWeaver慢慢画吧,可惜自己水平不是一般的差,完全不会弄。经学姐提醒,可以搜类似网站代码啊,在搜的过程中,我找到了一个RaiseDreams的开源众筹系统!对呀,直接用开源写系统不就完了!看来程序员一般都是想着自己动手,没想到人家已经有免费的直接用就完了。
几经对比,我最终选择了芝麻乐开源众筹系统https://www.zhimale.com/,开源版本,永久免费,顺便也给人家打一个广告。我感觉这个系统唯一的不足就是帮助文档太少,可能对于我一个新手帮助不够吧。
软件安装
我的阿里云服务器运行的是Ubuntu,正好我的电脑也有Ubuntu,所以,就先在本地搭建服务器试用吧。下面进入正式讲解。
首先,需要安装一个Apache,在放狗搜的时候发现了LAMP(Linux-Apache-MySQL-PHP)这个东西。对呀,一次性安装齐全多好!在Ubuntu的官方网站上有教程https://help.ubuntu.com/community/ApacheMySQLPHP。对我来说只需要一行命令(软件更新速度慢,没用):
$ sudo apt-get install lamp-server^
不要忘记最后的 ^ 号。
Ubuntu好啊,一行命令就完成了所有的安装,这在Windows下不可想象。中间有一个对MySQL的密码的设置,设置好一定要记住!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3ZdR1MDI-1573132307709)(http://i.imgur.com/6fcMruh.png)]
等运行结束之后就全部完成了,一颗赛艇!
测试Apache,在浏览器输入 127.0.0.1 或者 http://localhost/ ,这个时候不能挂代理。如果出现 It works! 的画面,说明Apache安装成功。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ks630BTI-1573132307714)(https://github.com/fuxuemingzhu/fuxuemingzhu.github.io/blob/master/images/My-Aliyun-Server-Setting/2016-03-02%2023-25-59%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE.png?raw=true)]
下面检验PHP是否安装成功。在 /var/www/html 文件夹之下新建 testphp.php,打开写入以下内容:
<?php
phpinfo();
?>
如果用gedit无法编辑保存 testphp.php ,说明该文件为只读模式,请安装vim,并使用以下命令:
sudo vim /var/www/html/testphp.php
在vim模式编辑模式下编写,关闭时要使用强制执行:
:wq!
应该就可以了。如果还是不行可以采用 chmod 改变文章读写权限再试。(我忘记了我用哪种方法成功的了)
然后再在浏览器地址栏输入:http://localhost/testphp.php,出现如图所示内容表示PHP安装成功!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TUHGJlgx-1573132307723)(https://github.com/fuxuemingzhu/fuxuemingzhu.github.io/blob/master/images/My-Aliyun-Server-Setting/2016-03-02%2023-26-23%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE.png?raw=true)]
因为芝麻乐系统需要用到php-gd,所以采用以下命令安装。不需要的请不要安装。
# apt-get install php5-gd
或者
$ sudo apt-get install php5-gd
并且重启狗帕琪。
# sudo /etc/init.d/apache2 restart
至此,所有软件的安装已经结束。还是很简单的吧?
软件配置
软件安装过程中会自动生成 /etc/apache2/ 和 /var/www/ 文件夹,这两个基本是我们最重要的设置地方。其中 /etc/apache2/ 是apache的自身设置文件夹, /var/www/ 是要展示的网站的文件夹。其中 /etc/apache2/ 的文件夹目录如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EGEIEjfn-1573132307725)(https://github.com/fuxuemingzhu/fuxuemingzhu.github.io/blob/master/images/My-Aliyun-Server-Setting/2016-03-02%2023-41-22%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE.png?raw=true)]
可以看到 /var/www/ 只有一个被锁定的只读的文件夹 /html ,这里的文件必须用 sudo 命令打开,vim 编辑退出时使用 :wq! 命令。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tqdx34dN-1573132307731)(https://github.com/fuxuemingzhu/fuxuemingzhu.github.io/blob/master/images/My-Aliyun-Server-Setting/2016-03-02%2023-47-29%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE.png?raw=true)]
下面设置自己的服务站点,并让其能在自己的网页上显示出来。
在 /var/www/ 文件夹下新建www.test.net的文件夹,并将开源网站所有代码和文件放入到其中,效果如图。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cWKZ8PCA-1573132307735)(https://github.com/fuxuemingzhu/fuxuemingzhu.github.io/blob/master/images/My-Aliyun-Server-Setting/2016-03-02%2023-51-29%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE.png?raw=true)]
下面修改apache的路径指向www.test.net的文件夹。使用以下命令进行编辑。
$ sudo vim /etc/apache2/sites-available/000-default.conf
将其中的ServerName取消注释,并将DocumentRoot修改为 /var/www/www.test.net,并使用 :wq! 命令保存关闭vim.
重启Apache:
# sudo /etc/init.d/apache2 restart
如果没有问题的话就已经进入了芝麻乐重酬平台开源系统的安装界面了。按照芝麻乐的官方教程来做,应该很快就能安装成功。
官方教程网址:https://www.zhimale.com/News/show/id/8.html
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7bQPbFUm-1573132307736)(https://github.com/fuxuemingzhu/fuxuemingzhu.github.io/blob/master/images/My-Aliyun-Server-Setting/%E8%8A%9D%E9%BA%BB%E4%B9%90-2.png?raw=true)]
至此,芝麻乐开源众筹系统已经在本地的Ubuntu上安装成功。
服务器配置
本地安装一切顺利,可是没想到服务器上安装同样的东西却状况连连。
怎么连接服务器?
采用阿里云推荐方式,Windows下安装盘putty,使用这个来与运行在阿里云上的服务器进行通信和命令传输。参考www.putty.org
怎么把文件传送到服务器?
经过一番搜索,我采用在服务器搭建ftp系统,然后用ftp传送的方式。这里使用 vsftpd,安装和配置过程略去不讲,参考//TODO 和 http://jingyan.baidu.com/article/67508eb4d6c4fd9ccb1ce470.html。
这个配置是挺麻烦的,因为服务器上的文件是可以ftp给大家看的,如果没有做到充分地保障的话,服务器可能被大家搞得一塌糊涂,需要花点功夫好好折腾一下。
Windows上安装FileZilla,这样可以连接到服务器ip,注意端口为21.
将Windows下的芝麻乐平台代码进行上传,如果出现530错误,说明vsftpd设置的文件夹没有写入权限,需要使用以下命令改变文件夹的写入权限。
# sudo chmod 755 /home/sftp/
上传成功之后进行文件夹复制,使用以下命令。
# sudo cp /home/sft/ /var/www
文件复制参考:http://zhidao.baidu.com/question/63755445.html
如果失败的话,同样是因为文件夹权限的问题,记得使用chmod改变/var/www/文件夹的写入权限。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NQXnCY3a-1573132307743)(https://github.com/fuxuemingzhu/fuxuemingzhu.github.io/blob/master/images/My-Aliyun-Server-Setting/%E8%8A%9D%E9%BA%BB%E4%B9%90-1.png?raw=true)]
这样之后,就成功把系统放入到了要配置的目标文件夹。下面配置Apache指向这里的文件夹。
$ sudo vim /etc/apache2/sites-available/000-default.conf
将其中的ServerName取消注释,并将DocumentRoot修改为 /var/www/sftp,并使用 :wq! 命令保存关闭vim.
注意:上面的这些过程中如果出现错误一般就是读写权限的问题,出现错误之后注意修改文件夹的写入权限。
重启Apache,理论上已经可以用了,浏览器直接输入服务器的网址就行。
遇到问题怎么办?
这时候如果出现关于ServerName的警告:
Restarting web server apache2
apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName
那么请在 /etc/apache2/apache2.conf 中添加:
ServerName localhost
重启Apache,这个警告就会消失。
可是我的服务器给我了500的错误,这个是怎么回事呢?为什么本地运行没出现这个问题?而且没有显示错误日志。
本以为是PHP安装没成功,但是搜索一番之后,受到启发,可以开启PHP的错误提示,然后进行分析。开启PHP错误提示的方法参考:http://tsov.net/open-ubuntu-php-error/
sudo chmod 777 /etc/php5/apache2/php.ini
sudo vim /etc/php5/apache2/php.ini
搜索并修改下行,把Off值改成On
display_errors = Off
这就完成了,重启Apache。
这次服务器网页上会出现错误提示了,如下:
Unknown: failed to open stream
经过搜索,参考以下网页http://stackoverflow.com/questions/5326531/php-warning-unknown-failed-to-open-stream,我推断是因为文件夹的读写权限导致。这个很奇怪,为什么读权限的文件夹不能在Apache上?这个我没有深入研究。那么下面的问题是修改 /var/www/ 文件夹下的文件的写入权限,把文件夹的用户切换到我的用户名root。
cd /var/www
sudo chown www-data:www-data * -R
sudo usermod -a -G www-data root
重启Apache。
这次已经出现了芝麻乐的开源系统安装引导,按指导进行安装就能成功啦!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fFwJzMT2-1573132307746)(https://github.com/fuxuemingzhu/fuxuemingzhu.github.io/blob/master/images/My-Aliyun-Server-Setting/%E8%8A%9D%E9%BA%BB%E4%B9%90-3.png?raw=true)]
结语
至此安装已经完全成功,中途遇到了很多问题,最终都在强大的Google的帮助下解决。上面的文章虽然写到的遇到的问题的内容篇幅不多,但是却花了我两天的时间。中途学到了很多东西,也让我对服务器的使用更加熟练。
另外,我在遇到问题的时候并没有完全当时截图,后来写文章时有参考别人,另外命令不保证完全正确。
参考文献
用到的文章在文章当中基本上都写了,在此表示感谢。
部分图片来自网络。
【经验】基于阿里云 Ubuntu 的 LAMP 网站搭建及配置完全教程的更多相关文章
- 基于阿里云ECS的phpwind网站备案前如何远程访问调试?
基于阿里云ECS的phpwind网站部署非常方便,但云主机的外网IP绑定域名却比较复杂.先要申请域名,成功后还需要备案.尤其是企业网站备案,需要提交的资料较多,准备资料以及审批的时间较长.这段时间在外 ...
- 基于阿里云服务器的git服务器搭建
使用阿里云Ubuntu 12.0.4 64位操作系统做git服务器. 首先git服务器有两种访问方式可以选择:http方式和ssh的方式,http方式更容易使用. 1.http方式的git服务器搭建以 ...
- 【转存】阿里云服务器下 LAMP 环境配置 —— 基于 CentOS 6.3
阿里云服务器下 LAMP 环境配置 —— 基于 CentOS 6.3 Posted on 2016年2月10日 by 学院君 1.Apache 配置 —————————————————– vi / ...
- 阿里云Ubuntu快速建站
阿里云Ubuntu快速建站 有一个小笑话: 从前有个程序员遇到了一个问题.他想,没事,我懂,用线程就好了.现他有两个问题了. 本人小白,对网站部署什么都不懂,只是申请个阿里云服务器,把我的站点放上去. ...
- 在阿里云Ubuntu 14.04 Linux服务器上安装docker
参考 How To Install and Use Docker: Getting Started 这篇最靠谱的文档在阿里云 Ubuntu 14.04 服务器上成功安装 docker . ---- ...
- 基于阿里云SLB/ESS/EIP/ECS/VPC的同城高可用方案演练
今天基于阿里云SLB/ESS/EIP/ECS/VPC等产品进行了一次同城高可用方案演练: 基本步骤如下: 1. 在华东1创建VPC网络VPC1,在华东1可用区B和G各创建一个虚拟交换机vpc1_swi ...
- 阿里云Ubuntu下tomcat8.5配置SSL证书
环境 阿里云ubuntu(18.04)服务器 阿里云申请的域名 Tomcat8.5.7 jdk1.8 免费型SSL证书 SSL证书申请 登录阿里云的官网,登录后在菜单中选择SSL证书(应用安全) 进入 ...
- 基于阿里云容器服务用docker容器运行ASP.NET 5示例程序
小试阿里云容器服务 之后,接下来有一个挡不住的小试冲动--用docker容器运行程序.首先想到的程序是 ASP.NET 5示例程序,于是参考msdn博客中的这篇博文 Running ASP.NET 5 ...
- 一·创建Linux服务器(基于阿里云)
本系统是基于阿里云服务器,购买请前往https://www.aliyun.com/?spm=5176.8142029.388261.1.taXish ,由于经济能力的限制,本人购买的是最低配置如下 其 ...
随机推荐
- 【Perl】如何安装Bioperl模块?
目录 失败尝试一:使用cpanm 失败尝试二:使用CPAN 成功尝试:直接conda安装bioperl 没有尝试:源码安装bioperl 生信软件绕不过Perl,Perl绕不过Bioperl.而Bio ...
- ClickHouse数据定义
数据定义 ClickHouse的数据类型 ClickHouse是一款分析型数据库,有多种数据库类型,分为基础类型.复合类型和特殊类型.其中基础类型使用ClickHouse具备了描述数据的基本能力, ...
- excel-大于0的数值标记红色且标记红色上箭头,小于0的数值标记绿色且标记绿色下箭头,等于0的数值标记黄色且标记右箭头
0.数值是常规的数值: [蓝色]"↑"0;[红色]"↓"0;[黄色]"→"0 [蓝色]"↑"0.0;[红色]" ...
- IPFS是什么?IPFS原理、IPFS存储
以下内容调研截止到2021/11/5日 IPFS简介 IPFS是一种内容可寻址.点对点.分布式文件系统.IPFS采用内容-地址寻址技术,即通过文件内容进行检索而不是通过文件的网络地址.简单来说,就是对 ...
- 日常Java 2021/11/2
Java提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据.有关对象的类型的信息和存储在对象中数据的类型.将序列化对象写入文件之后,可以从文件中读取出来 ...
- abide, able, abnormal
abide 近/反义词:1. 忍受: bear, endure, put up with, stand, tolerate2. 遵守(abide by): accept, comply, confor ...
- 在 windows 系统上 安装与配置 PHP + Apache
参考:http://www.cnblogs.com/pharen/archive/2012/02/06/2340628.html 在大学时候上过一门PHP课时,因为课堂需要配置过一次PHP+Mysql ...
- rust方法集
随机数.数字对比.控制台输入 use std::io; use std::cmp::Ordering; use rand::Rng; fn main() { println!("please ...
- my39_InnoDB锁机制之Gap Lock、Next-Key Lock、Record Lock解析
MySQL InnoDB支持三种行锁定方式: 行锁(Record Lock):锁直接加在索引记录上面,锁住的是key. 间隙锁(Gap Lock): 锁定索引记录间隙,确保索引记录的间隙不变.间隙锁是 ...
- Spring Boot 和 Spring Cloud Feign调用服务及传递参数踩坑记录
背景 :在Spring Cloud Netflix栈中,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使用HTTP客户端.我们可以使用JDK原生的URLConnectio ...