有需要服务器方面的需求和咨询,可以联系博主QQ 7271895(收费) 关于ajax跨域的就不过多的介绍,可以参考改文章http://www.qqdeveloper.com/a/75.html 方式一:在被请求的应用程序中添加一个允许请求跨域 1.apache 1.在httpd.conf文件中加载 LoadModule headers_module modules/mod_headers.so模块 2.在被请求文件头部添加: header("Access-Control-Allow-Origin: *"); 2.nginx 1.在被请求文件头部添加: header("Access-Control-Allow-Origin: *"); 方式二:在配置文件中允许跨域 1.apache的配置文件httpd.conf Options +Indexes +FollowSymLinks +ExecCGI AllowOverride All Order allow,deny Allow from all Require all granted Header set Access-Control-Allow-Origin * #此行代码即是需要添加的代码2.nginx 2.在被请求的域名nginx配置文件中增加配置,配置位置和root的配置等级一致 add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Headers X-Requested-With; add_header Access-Control-Allow-Methods GET,POST,OPTIONS; 该方式配置参考链接:http://www.nginx.cn/4592.html 如果有不懂的、欢迎加入我们学派吧。一起学习交流。右上角站长群
有需要服务器方面的需求和咨询,可以联系博主QQ 7271895(收费) 我擦!这两天可把我累的够呛,心累的那种,用python写了个API想放在Apache服务器上面利用CGI使用,但是整了两个晚上,经过无数次尝试和失败,最终终于搞定了,最终豁然开朗的感觉,才觉得这特么真是非常的坑。 先简单介绍一下Apache的CGI Apache都不知道是啥的大兄弟就自己去百度吧。。CGI你可以理解为它的一个接口,利用CGI你可以实现各种脚本的运行,只要你的服务器可以运行的脚本都可以,通过服务器运行脚本,然后将允许结果最终以HTML的形式显示给浏览器。Apache根目录如下: bin:Apache服务器软件所在地 cgi-bi:保存自己写的CGI脚本程序 conf:保存服务器设置的信息 error:网站发送错误的处理 htdcocs:保存HTML程序 icons:保存开发Apache程序用的图标 include:保存开发web程序用到的一些头文件 lib:保存的是开发web程序用到的一些库 logs:日志 manual:Apache服务器语言的设置 modlules:保存一些动态链接库 一般我们常用的文件夹就是上面标红的那两个。、 开始配置: 声明一下,一般Apache的默认配置CGI都是开启的,可以在服务器的Apache的配置文件中看到配置情况,这里以Ubuntu14.4的Apache2为例看一下。 先进入apache2的主目录并查看文件夹,默认的apache2的默认目录在/etc/apache2 可以看到在这个目录下面有很多的文件夹和配置文件,Apache2其实是将各个模块的配置分文件夹保存了,这个CGI的配置文件在上图箭头指向的那个文件夹内,现在进入这个文件夹 这个serve-cgi-bin.conf文件就是我们要找的文件,使用vim编辑器打开这个文件 上图第一个箭头指向配置 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 这句话是用来设置别名的,就是说你在使用url访问的时候,当遇到/cgi-bin/这个目录的时候服务器会自动去/user/lib/cgi-bin/目录下面查找要访问的文件,这句话有时候可以不写,但前提是cgi的文件目录要在web的根目录下第二个箭头指向的配置 <Directory "/usr/lib/cgi-bin"> AllowOverride None #显示目录 Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch #可以运行的模块 Require all granted #允许所有的请求 </Directory> 注意上面标红的位置,/usr/lib/cgi-bin/要和上面的别名一致,这个地方是个可以改动的,你可以自己选定别的文件夹,当作CGI的根目录,只要设置好目录可以访问就好,然后+ExecCGI要有,这个是加载CGI模块的选项,没有是不行的。可以看到,我们并没有声明可以运行那些脚本,所以Apache会全面默认运行。只要在脚本中指定执行程序的路径即可。下面我们会讲到。好了,文件的配置完并保存之后重启服务器,然后就可以去测试一下了。 Apache2的重启命令: sudo /etc/init.d/apache2 restart Apche CGI 文件测试 根据上面配置的别名,我们在浏览器访问一下试试 可以看到提示的是403然后说没有权限访问这个目录而不是404,说明找到了这个文件,只不过我们没有访问脚本文件,又不允许列出目录,所以提示403,下面我们编写一个CGI脚本测试一下,这里我使用Python来测试,代码如下: #!/usr/bin/python #CGI运行程序的目录 # -*- coding: UTF-8 -*- print "Content-type:text/html" print # 空行,告诉服务器结束头部,CGI必须的部分 print '<html>' print '<head>' print '<meta charset="utf-8">' print '<title>Hello Word - 我的第一个 CGI 程序!</title>' print '</head>' print '<body>' print '<h2>Hello Word! 我是来自菜鸟教程的第一CGI程序</h2>' print '</body>' print '</html>' 上面的两个人注释的部分必须注意,规则不可以变。 写在python文件里面命令为t2.py,然后对文件进行权限的设置,让它具有可执行权限,注意,这一块很重要,要不然会提示500错误的 chmod 777 /usr/lib/t2.py 然后再浏览器中访问测试 仍然是500错误,其实这个才是我这篇博文的重点,这个坑我觉得肯定是坑死过很多人,这个流程明明没有问题,怎么还会出现问题呢?经过我多次的尝试,多次的失败,多次的googl,多次的baidu,就特么差放弃了,我特么成功了。我觉得我的配置没有问题,那么问题肯定出在CGI文件上面,通过测试发现,有两个地方必须要注意: 注意1 # -*- coding: UTF-8 -*- 上面这句话是用来声明utf8编码的,若文件中存有中文必须声明utf8编码格式,但是在这,这句话似乎不管用了,必须使用’ #coding:utf8 用上面的生命替换以前的代码之后,重新访问浏览器,结果仍然是500。重点在下面 注意2 在linux中新建的文件和在windows上面新建的文件是不同的,在CGI中运行的文件必须是unix文件编码格式,所以会出现500错误的!对于这个问题我测试了很久,虽然说vim编辑器有将文件编码格式转换为unix命令:set ff = unix ,但是结果还是不行,依然是500错误!但是,在linux上面使用vim新建的文件却可以正常运行。具体这个问题到底是怎么回事我也没有具体搞清楚,但是最不会出错的方法就是在linxu上面直接新建和编辑文件,或者在linux上面新建文件之后拿到本地用IDE编辑,注意!最好不要使用记事本,在测试中发现有时候记事本的BOM头也会影响程序执行。 既然知道了问题的原因,那么我们在linux上面使用vim新建文件并将代码复制过去,然后运行测试。 可以看到这样就成功了。两个晚上,闹心的,就是解决不了的问题,坑太多了,最终还好解决了,不然就要骂娘了。。! 如果有不懂的、欢迎加入我们学派吧。一起学习交流。右上角站长群
【腾讯云】2核2G云服务器新老同享 99元/年,续费同价,云服务器3年机/5年机限时抢购,低至 2.5折
有需要服务器方面的需求和咨询,可以联系博主QQ 7271895(收费) 1. CentOS 和 Ubuntu安装 Docker 2. 创建Apache容器 作为Linux系统管理员,或多或少都有可能听说过Docker。因为这款软件可以有效降低运营成本,提升系统部署速度,让系统管理工作变得十分轻松。 但这一切也不是变魔术,Docker只是一个容器管理平台,可以跨平台运行各种应用软件及相应工具容器的平台。换句话说,容器化的软件可以在不同系统平台直接运行而不需要任何修改,而由运行在不同系统的Docker来管理容器软件的运行。另外,同虚拟机相比,创建、停止和维护这些容器都相对容易得多,如果想仔细了解Docker同虚拟机之间的差异,可以访问Docker官方网站进行了解。 本文将实例演示如何在CentOS 7系统和Ubuntu 16.04系统安装Docker,并从Docker Hub获得 Apache 2.4容器。之后,我们还会演示如何利用Aapache容器来充当一个Web服务器,显示网页内容,而我们的主机是不需要安装任何Web服务器的。 1. CentOS 和 Ubuntu安装 Docker 安装Docker比较简单,只需要使用如下命令,无论是CentOS系统还是Ubuntu系统都可以执行。该命令实际上执行一个Docker的安装脚本,该脚本会自动将Docker软件库添加到系统,然后安装相应的软件包。 # curl -fsSL https://get.docker.com | sh 如果运行这条命令系统没有反应,也可以直接访问https://get.docker.com将脚本下载下来,然后保存成”.sh”文件在系统里执行,实在不会的话,可以 点击这里 下载安装脚本。安装完成后会看到提示建议使用”docker”用户来执行程序,测试的话不太需要,实际生产环境建议使用非root用户,增加系统安全性。 安装完成后,可以使用如下命令启动docker: # systemctl start docker # systemctl status docker 如果看到如图所示的内容,就表示Docker已经安装成功,并且服务已经启动。使用Docker只需要运行如下命令: # docker 想要查看特定命令的帮助信息,则使用以下命令: # docker COMMAND --help 例如想查看Docker的版本信息,则使用以下命令: # docker version --help # docker version 执行结果如下图所示: 2. 创建Apache容器 Docker生态系统最吸引人的地方在于你可以任意下载并使用数以万计的已有容器。接下来,我们将创建一个名为”Rultr-web”的Apache 2.4容器,这个容器将脱离于当前终端独立运行。为实现此功能,我们需要从Docker Hub下载一个apache 2.4的镜像文件。 假设我们将VPS的8080端口重定向到容器的80端口,另外,我们不想从容器中提供web页面,而是使用”/home/user/website”作为容器中Apache的文件目录。想要实现该功能,就需要将”/home/user/website”这个VPS实际目录映射到容器中的”/usr/local/apache2/htdocs/”目录,同时注意执行以下命令时需要具有root用户权限,需要的话适当使用sudo: # docker run -dit --name Rultr-web -p 8080:80 -v /home/user/website/:/usr/local/apache2/htdocs/ httpd:2.4 现在,可以查看一下容器的状态,理论上Apache容器已经运行起来了: # docker ps 接着要做的就是在系统的”/home/user/website”目录里创建页面文件,以验证容器中的Apache服务器启动成功,并且目录映射正确。 # vi /home/user/website/docker.html 简单起见,”docker.html”文件只有如下内容: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Learn Docker at rultr.com</title> </head> <body> <h1>Learn Docker With Us</h1> </body> </html> 然后,就可以通过浏览器访问VPS的IP地址来访问”docker.html”文件了,还记得我们是将容器的80端口映射到VPS的8080端口了么,所以,访问的地址应该形如”AAA.BBB.CCC.DDD:8080/docker.html”,成功的话就可以见到如下内容: 之后就是一些操作容器的命令,可以进行容器的停止、删除以及删除容器镜像等。 # docker stop Rultr-web //停止容器 # docker remove Rultr-web //删除容器 # docker image remove...
有需要服务器方面的需求和咨询,可以联系博主QQ 7271895(收费) Nginx防盗链方法 Apache防盗链方法 说明:很多人的VPS流量是有限的,而一般情况下我们放在网站上的媒体文件都是可以被别人引用的,我们的文件也就成了别人的免费外链,可想而知流量会消耗的有多快,这时候设置一下防盗链还是很有必要的。 根据我们搭建的系统环境不同,我们在Nginx和Apache中设置防盗链的方法也是不同的。 Nginx防盗链方法 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|mp3|wav|zip|rar)$ { valid_referers none blocked xirik.cn *.xirik.cn; if ($invalid_referer){ return 403; } expires 30d; } 在网站所在的配置文件*.conf中添加以上代码,添加后重启nginx就可以生效,网址记得替换成自己的。 Apache防盗链方法 首先我们需要保证开启了Apache的伪静态模块 然后把下面代码中的网址替换成自己的,复制到网站根目录下的伪静态文件.htaccess中即可生效。 RewriteEngine On RewriteCond %{HTTP_REFERER} !^http://xirik.cn/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://xirik.cn$ [NC] RewriteCond %{HTTP_REFERER} !^http://www.xirik.cn/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://www.xirik.cn$ [NC] RewriteRule .*\.(gif|jpg|jpeg|png|bmp|swf|mp3|wav|zip|rar)$ http://xirik.cn/404.html [R,NC] 原文出处:xirik -> https://xirik.cn/153.html 如果有不懂的、欢迎加入我们学派吧。一起学习交流。右上角站长群
有需要服务器方面的需求和咨询,可以联系博主QQ 7271895 系统环境 安装 使用示例 使用扩展包 系统环境 CentOS 7 安装 通过pip直接安装 pip install virtualenv 使用示例 # 在/usr/local/下面创建一个virtualenv目录,作为多环境管理用目录 mkdir /usr/local/virtualenv # 进入上面创建的目录 cd /usr/local/virtualenv # 创建一个名为env1的python环境(这里没加参数,该命令其实有很多参数可用) virtualenv env1 # 执行之后,目录下会创建一个env1目录,如果想切换到env1环境下,则执行一下命令 source env1/bin/activate 使用扩展包 为了更简便的切换和管理virtualenv环境,可以借助virtualenvwrapper扩展包 安装扩展包 pip install virtualenvwrapper 配置环境变量,可在/etc/profile里添加如下指令 # 指定工作空间,可以自己随意创建 WORKON_HOME=/usr/local/virtualenv # /usr/bin/virtualenvwrapper.sh是安装扩展包后生成的,不同的系统可能生成的文件路径不同 source /usr/bin/virtualenvwrapper.sh 常用命令 # 创建环境 mkvirtualenv [环境名] # 切换到环境;后面不跟环境名,可以显示出所有环境 workon [环境名] # 查看已有的环境 lsvirtualenv # 查看当前环境中已安装的包 lssitepackages # 退出当前环境 deactivate 如果有不懂的、欢迎加入我们学派吧。一起学习交流。右上角站长群