【经验】基于阿里云 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 ,由于经济能力的限制,本人购买的是最低配置如下 其 ...
随机推荐
- FESTUNG 模型介绍 — 2. 对流问题隐式求解
FESTUNG 模型介绍 - 2. 对流问题隐式求解 1. 控制方程 对流问题的控制方程为 \[\partial_t C + \partial_x u^1 C + \partial_y u^2 C = ...
- List 去重的 6 种方法,这个方法最完美!
在日常的业务开发中,偶尔会遇到需要将 List 集合中的重复数据去除掉的场景.这个时候可能有同学会问:为什么不直接使用 Set 或者 LinkedHashSet 呢?这样不就没有重复数据的问题了嘛? ...
- c++ cmake及包管理工具conan简单入门
cmake是一个跨平台的c/c++工程管理工具,可以通过cmake轻松管理我们的项目 conan是一个包管理工具,能够自动帮助我们下载及管理依赖,可以配合cmake使用 这是一个入门教程,想深入了解的 ...
- Flink(九)【Flink的重启策略】
目录 1.Flink的重启策略 2.重启策略 2.1未开启checkpoint 2.2开启checkpoint 1)不设置重启策略 2)不重启 3)固定延迟重启(默认) 4)失败率重启 3.重启效果演 ...
- Vue 之keep-alive的使用,实现页面缓存
什么是keep-alive 有时候我们不希望组件被重新渲染影响使用体验: 或者处于性能考虑,避免多次重复渲染降低性能.而是希望组件可以缓存下来,维持当前的状态.这时候就需要用到keep-alive组件 ...
- Gradle插件详解
参考[1]Gradle 插件 [2]修改 Gradle 插件(Plugins)的下载地址(repositories)
- 创建Oracle数据库实例
创建Oracle数据库实例 转自oracle数据库创建实例 数据库已经安装完成,可以正常登陆查看用户等操作. system用户只能用normal身份登陆em.除非你对它授予了sysdba的系统权限或者 ...
- 二叉树——Java实现
1 package struct; 2 3 interface Tree{ 4 //插入元素 5 void insert(int value); 6 //中序遍历 7 void inOrder(); ...
- redis入门到精通系列(五):redis的持久化操作(RDB、AOF)
(一)持久化的概述 持久化顾名思义就是将存储在内存的数据转存到硬盘中.在生活中使用word等应用的时候,如果突然遇到断电的情况,理论上数据应该是都不见的,因为没有保存的word内容都存放在内存里,断电 ...
- fatal: unable to access 'https://github.com/xxxxx/xxxx.git/': Failed to connect to github.com port 443: Timed out
今天使用git push的时候提示"fatal: unable to access 'https://github.com/xxxxx/xxxx.git/': Failed to conne ...