实验要求:在LAMP、LNMP等环境下,任意挑选下列2种或以上动态网页语言,写出一个页面,读取MYSQL实验中的数据表数据。(PHP,JSP,Perl,Python,Ruby,Go,ASP.NET)
环境介绍:
LAMP是指:linux、Apache、mysql,php
LNMP是指:linux,Nginx、mysql,php 也就是说他们的服务器不一样;
Apache 是使用中最受欢迎的一个开放源码的WEB服务器软件。
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
linux下搭建lamp环境(yum):https://www.cnblogs.com/xuezhileikaku/articles/5342978.html
一、JSP页面
1、参考链接
(1)配置java和tomcat环境:https://blog.csdn.net/tingsking18/article/details/610124
(2)Java下打包成war:https://blog.csdn.net/taoshujian/article/details/75570780
2、相关配置总结
(1)想要在Linux下使用jsp,必须要配置的两个东西是JDK+Tomcat。去官网都能很容易搜到源码的链接,然后用wget来下载。
(2)先安装jdk,我选择的是rpm.bin包,先给它加上可执行权限,然后使用./运行,得到rpm后,用rpm -ivh的命令安装。
(3)tomcat的安装非常简单,推荐下载压缩包(后缀为tar.gz),然后解压后就能直接运行使用。然后去tomcat的目录下的bin目录下,输入命令./startup.sh,然后lynx http://localhost:8080/若能看到tomcat的页面,即成功配置完成tomcat。
(4)Tomcat安装完后,强烈建议在/root下用ln建立一个软连接,因为经常需要去目录的bin下用./startup.sh开启它,亦或是把要运行的程序放在tomcat目录的webapps目录下。3、tomcat下载
core是核心程序,linux就下载zip或tar.gz的,其它是Win系统的。
Full Documentation是完整的说明文档、Deployer 安装部署版本、Extras是额外组件、Embedded是嵌入式版本4、tomcat相关内容
(1)启动Tomcat:去到tomcat的Bin目录下,输入命令./startup.sh,执行启动脚本
(2)关闭tomcat:上述目录,执行关闭脚本./shutdow.sh
5、注意事项
(1) Jsp上我觉得特别需要注意的问题就是,在win的java下写好的jsp代码通过编译后,要打包成war包,然后用xftp把war包传到tomcat文件夹下的webapps目录下,然后重启tomcat,重启后war包会自动解压成可以在linux下执行的文件。
(2) 再用tomcat访问页面的时候,特别注意路径3写对,从jsp所在的目录开始写,直到jsp文件名,如:lynx http://localhost:8080/Linux/Linux.jsp。
(3) 无论加入什么原来的jar包,都要记得重启tomcat,它才能“感知”到。(如:tomcat下lib文件夹的mysql-connector-java-8.0.11.jar)
二、python
1、参考链接
(1)anaconda源码网址:https://www.anaconda.com/download/#linux(关于anaconda的卸载,就把相关的anaconda3文件夹删除即可。)
(2) python连接数据库安装及测试例子:http://www.runoob.com/python3/python3-mysql.html2、相关配置
(1)首先,python连接数据库需要使用pymysql(python3用pymysq,而python2用MySQLdb),这个用pip install pymysql(pip install MySQL-python)指令安装即可。
(2)由于阿里云服务器自带的python是2.7版本的,所以我用anaconda安装了python的3.6版本的,anaconda的安装去官网找源码,用wget下载后是.sh后缀文件,然后用./命令即可运行安装包,其中一点要注意的是,在安装过程中会问及是否加入到环境变量中,我比较倾向于输入yes,否则后面使用时要自己手动添加,比较麻烦。
(3)关于python写网页,我一开始用的是django框架,但使用起来时我觉得由于它目录结构较为复杂(但其实是一个大一统的框架,很多东西能拿来就用,文档也比较齐全)。后来我就换用了tornado,这个的优点是异步I/O,框架也比较轻巧,灵活性强,适合组合各种模块来搭建服务。
django安装成功显示界面:
(4)使用pip install tornado命令即可方便的下载并使用这个框架,tornado文件编写就是普通的.py文件,放在哪个目录下,运行时就用”python py文件绝对路径”语句。
3、注意事项
(1) 在配置pymysql和MySQLdb的过程中都不约而同的出现了一系列毫无头绪,网上解决error方法千百态的方法,后来看了无数博客后发现一个可行的解决方法,那就是因为mysql的版本太高太新了,所以无法应求python的连接,后来重装后,发现果然是这个问题,装了一个较低版本的mysql后就可以正常的使用pymysql了。
(2) 卸载mysql的过程中也遇到了一些困难,除了要删除安装mysql时执行rpm命令产生的文件外,还要把产生的文件夹都一一删除完毕,否则在重装过程中会出现各种各样奇怪的问题,导致当时我为了找错还试过去mysql.log中查看错误日志,日志内容全英而且文件内容繁多,幸好后来反省过来是卸载不干净问题。(rpm安装方式:vi /var/log/mysqld.log,可查看mysql相关文件,特别是错误警告)
(3) Python文件的语句很重视.py文件的格式问题,目前遇到过的会出error的问题有,缩进要注意对齐,空格和tab不能混用。
(4) 在执行import了tornado的py文件时,如果因为网络断了的原因导致服务器连接断了,先找到对应pid号,然后用kill杀死进程,否则无法执行语句。
(5)装django的命令是:pip install Django,这样运行默认安装的是最新版,因为python是2.7版本的原因,所以会出现错误,安装失败,根据测试,在python2.7基础上安装Django 1.8.9正式版是没有问题的,所以要执行下面命令:pip install Django==1.8.9
(6)搞清localhost、ip地址、127.0.0.1的关系:(以下出处为知乎)
【1】localhost 是个域名,不是地址,它可以被配置为任意的 IP 地址,不过通常情况下都指向 127.0.0.1(ipv4)和 [::1](ipv6)
【2】整个127.* 网段通常被用作 loopback 网络接口的默认地址,按惯例通常设置为 127.0.0.1。这个地址在其他计算机上不能访问,就算你想访问,访问的也是自己,因为每台带有TCP/IP协议栈的设备基本上都有 localhost/127.0.0.1。
【3】本机地址通常指的是绑定在物理或虚拟网络接口上的IP地址,可供其他设备访问到
为什么要说这个问题呢,因为在一个一个终端设备中用tornado搭建了一个服务器平台后,在另外一个终端用lynx访问网页时,由于是在自己本机上测试,所以输入localhost和127.0.0.1都可以成立,但在自己电脑win下的浏览器或别人电脑下输入ip地址访问时就会发现无法访问成功,这时就需要去阿里云管理的安全组那里设置入站和出站规则,才能让别人也能访问。
4、遇到的报错及解决方法
(1)解决报错:OSError: [Errno 98] Address already in use
https://blog.csdn.net/handoking/article/details/79217410
(2)解决报错:inconsistent use of tabs and spaces in indentation
这个报错就是混用了tab和空格造成的,检查代码,要不全部用tab,要不全部用空格(总结:python很注重格式问题)
(3)解决报错:Failed to stop iptables.service: Unit iptables.service not loaded.
https://www.cnblogs.com/blueskyli/p/7218570.html
三、Asp.net
1、参考链接
(1)下载mono:http://www.mono-project.com/官网中有资源及具体步骤,安装很方便快捷简单
(2)jexus官网:https://www.jexus.org/
2、Jexus安装
Jexus是一款Linux平台上的高性能WEB服务器和负载均衡网关,以支持ASP.NET、ASP.NET CORE、PHP为特色,同时具备反向代理、入侵检测等重要功能。解压后进入目录执行install即可自动安装
启动 /usr/jexus/jws start
停止 /usr/jexus/jws stop
重启 /usr/jexus/jws restart
如果用start语句发现不ok,有可能是因为安装时就帮你start,此时可以先stop再start,没有这个错误的可以忽略
要去jexus的网站配置文件中配置默认文件夹,我设置的是默认的default,然后把要运行的文件放在defualt文件夹下。cd /var/www/default
http://localhost/info 这是jexus的首页
想要登录自己写的:http://localhost/自己写的文件的文件名
用jexus运行自己网页时出现的错误,运行.html、.asp都没问题,一运行aspx文件就gg了
报错如下:(在弄asp.net的时候就有这个错误了,然后因为解决不了,所以改用了python)
Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed (for security reasons).
Details: To enable the details of this specific error message to be viewable, please create a
Notes: The current error page you are seeing can be replaced by a custom error page by modifying the "defaultRedirect" attribute of the application's
几乎所有的回答都跟这个差不多https://zhidao.baidu.com/question/199160768649222445.html?qbl=relate_question_7&word=Description:%20An%20application%20error%20occurred%20on%20the%20server.%20The%20current%20custom
或者这个https://www.cnblogs.com/yougmi/p/4487861.html
总之都是弄IIS的,这个貌似是win下的东西,对linux不管用
那就按照它的提示来改错吧,寻找web.config文件
locate web.config可查找这个文件 【科普:locate的安装为:yum install mlocate】
其实貌似错误错在了,asp.net版本太高,可能导致无法兼容问题吧
看了很多博客,但还是没能很好的解决,希望有大神可以指点指点。
其实也有可能报这个错是我自己的原因吧,可能哪里没配置好,目前还没找到原因...
遇到问题,安装配置,看了感觉快上百的博客了,自己动手学到了不少,不过考研要复习,目前就先总结到这里了,以后有机会把其他几种语言都给做了吧。