• 关于

    加省略号

    的搜索结果

问题

给一个放多行文字的div,最后加一行文字末尾加省略号?

假如这个div height为50px,width为160px,最多分三行文字从服务器得到数据,如果超过第三行的长度在末尾加个...省略号。问题是得到文本长度不固定,可能就几个字,不超一行。也有可能很多,超三行。我知道有text-overf...
杨冬芳 2019-12-01 19:39:20 945 浏览量 回答数 1

问题

white-space破坏了table的宽度怎么解决?

http://jsfiddle.net/k4dyeqk5/1/embedded/result,css,html点击预览比如我要给链接加过长变成省略号出现这个问题...
a123456678 2019-12-01 19:28:55 865 浏览量 回答数 1

回答

拿到当前页$current和总页数$total你的规律应该是,只展示当前页加减2页, 另外对首页和最后一页特殊判断下就ok了,不是第一页就显示1,不是最后一页就显示最后一页, 对省略号的判断差不多,文字太多不写了
蛮大人123 2019-12-02 01:46:50 0 浏览量 回答数 0

问题

间距的效果?

只在一个div中实现,还有其中的文字并不确定是多少,有可能是一行,有可能是3行,超过3行要加...省略号。 用line-height的话有上下居中效果,但第一行上边和第三行下边没有距离,该怎么制定css呢...
杨冬芳 2019-12-01 19:39:16 786 浏览量 回答数 1

问题

css用一个div怎样实现顶端低端无间距,中间有间距的效果?

只在一个div中实现,还有其中的文字并不确定是多少,有可能是一行,有可能是3行,超过3行要加...省略号。用line-height的话有上下居中效果,但第一行上边和第三行下边没有距离,该怎么制定css呢...
a123456678 2019-12-01 19:31:44 1009 浏览量 回答数 1

回答

首先要确定你所使用的端口号是不是默认端口号80,如果是就不用考虑端口问题,如果不是就要使用一下解决方案: 1、使用域名指向功能将域名直接解析到ip上,然后通过通过在域名后加“:端口号”来实现的,例如:http://www.aaa.com:8181(8181就是端口号) 2、改用域名url转发功能,假如ip是136.136.136.136,端口是8181,那么设置www.aaa.com转发到http://136.136.136.136:8181。 原因: 80端口是服务器提供网站访问服务的默认端口,我们在访问一个网站例如www.aaa.com的时候,实际完整地址其实是http://www.aaa.com:80,省略为www.aaa.com,这时候我们在做域名解析的时候完全不需要考虑端口的问题。 如果用的不是默认端口的时候,比如服务器提供网页访问服务但用的端口是8181的时候,就只能使用以上两种方式来解决了
游客2q7uranxketok 2021-02-09 16:27:17 0 浏览量 回答数 0

问题

Godaddy个人备案顺利通过

阿里云的备案速度果然很快,我是5.4日提交的备案申请(浙江,首次备案,个人,godaddy 买的 .me 域名),到今天5.15日才10天左右的时候就已经通知备案通过了。...
stg609 2019-12-01 21:15:46 16130 浏览量 回答数 9

回答

     url 填写:http://testweixin.sinaapp.com/weixin 即可打完收工。认证的事情是腾迅来处理的,jfinal 做不了干预###### 引用来自“JFinal”的评论      url 填写:http://testweixin.sinaapp.com/weixin 即可打完收工。认证的事情是腾迅来处理的,jfinal 做不了干预 1.网上有的教程说的是先要写一个servlet认证校验,然后配置web.xml发布到公网服务器上(SAE),最后在公众号平台上把这个servlet填写到这个Url上,给公众号平台进行认证校验,如: Url:http://testweixin.sinaapp.com/coreServlet <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>coreServlet</servlet-name> <servlet-class> org.liufeng.course.servlet.CoreServlet </servlet-class> </servlet> <!-- url-pattern中配置的/coreServlet用于指定该Servlet的访问路径 --> <servlet-mapping> <servlet-name>coreServlet</servlet-name> <url-pattern>/coreServlet</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> coreSerlet.java代码略,此处进行的是一些sha1加密校验,   2.我的意思是:能不能通过您的这个Demo结合公众平台的相关Url,Token设置直接申请通过开发者认证?省略了以上代码,也就说我的微信公众号开发者认证与Demo发布一次性完成.   ######这个功能早就有了,自动化的,设置好 token 即可###### 谢谢,还有一问题,怎么我在本机测试,输入:http://127.0.0.1:8080/jfinal_weixin_sdk/weixin 没有响应内容,报404错误呢? ###### 引用来自“andying”的评论 谢谢,还有一问题,怎么我在本机测试,输入:http://127.0.0.1:8080/jfinal_weixin_sdk/weixin 没有响应内容,报404错误呢? 本地调试参考这篇博文: http://my.oschina.net/jfinal/blog/336861 ###### 引用来自“andying”的评论 谢谢,还有一问题,怎么我在本机测试,输入:http://127.0.0.1:8080/jfinal_weixin_sdk/weixin 没有响应内容,报404错误呢? 谢谢.###### 对不起,还有一问题,那发布的时候要带Jfinal-1.8Jar包吗? ###### 引用来自“andying”的评论 对不起,还有一问题,那发布的时候要带Jfinal-1.8Jar包吗? 需要的jar都要
kun坤 2020-06-08 18:01:46 0 浏览量 回答数 0

回答

uni-app配套UI框架: 开始觉得graceUI 挺适合要求的,多端通用,可惜是收费的,然后在uni-app插件市场发现colorUI 可以用,基本满足需求开发,重要的是免费,果断选择colorUI 2.自定义navigationBar uni.getSystemInfo()在微信上显示正常,支付宝因为异步获取不到值,这里使用同步处理uni.getSystemInfoSync(); 3.支付宝title中的点击事件不生效,是因为title区域设置了pointer-events: none; 4.关于upx换算 1px=2upx(设计稿 1px / 设计稿基准宽度 = 框架样式 1upx / 750upx) 注:我们使用的设计稿基准宽度为375px 5.scss支持 uni-app原生支持sass, 新建uni.scss文件,定义变量,全局有效 6.配套UI框架 使用uView: https://www.uviewui.com/guide/note.html 7.vue-router解决方案 在插件市场搜索”路由、拦截、最优雅解决方案“ 8.vuex解决方案 https://www.jianshu.com/p/63980716cd47 https://www.cnblogs.com/edward-life/p/11181139.html 9.组件中无法使用应用生命周期函数(onShow、onHide等),需要使用vue声明周期函数 10.分支合并命令:   git checkout dev-others   git pull   git checkout dev-self   git merge dev-others   git pull   (如果有冲突,解决冲突后执行下面命令)   git add ./   git commit -m ' '   git push 11.文字内容超出后显示省略号:   // 单行   .text-overflow {     overflow: hidden;     text-overflow: ellipsis;     white-space: nowrap;   }   // 多行   .text-overflow {     display: -webkit-box;     -webkit-box-orient: vertical;     -webkit-line-clamp: 2;     overflow: hidden;   } 12.使用 uni.getLocation(OBJECT) 获取位置信息需要在manifest.json 中配置位置接口为开启 13.pointer-events: none;设置所有点击事件不生效 14.图片需要指定缩放方式,同时适配支付宝和微信小程序 支付宝自定义组件,需要在 IDE 中的 详情 > 项目配置 中,勾选 启用 component2 编译 。 16.自 HBuilderX 2.2.3版本后,uni-app项目在发布时会默认启用 uni统计,开发者可在https://tongji.dcloud.net.cn查看数据报表 17.之前为了减小主包的大小,将组件放在分包中,结果发现,支付宝小程序中组件必须放在主包中才能访问。 18.减少图片请求的两种处理方法:   a.将固定不变的图片进行雪碧图压缩处理,只用请求一次,就可以得到大量图片   b.将小图片制作成font-face字体,字体库使用链接,也可以达到请求一次得到所有小图标的效果 19.解决IOS列表滑动不流畅的问题,给滑动区域的标签加-webkit-overflow-scrolling: touch;属性 20.使用雪碧图后,微信小程序可以使用标签显示雪碧图图片,But支付宝小程序不能使用必须使用view标签来显示。 21.分包和主包不能放同一个目录下,需要分开和小程序结构一样。 22.ios不支持2019-04-11这样的格式 要改成2019/04/11 这样的; new Date(date).getTime()在苹果手机上是不兼容的。解决方法: new Date(data.replace(/-/g,'/')).getTime()
游客2q7uranxketok 2021-02-22 19:57:28 0 浏览量 回答数 0

回答

回1楼ivmmff的帖子 pwftp是不是要改为自己的ftp用户名?他这里出现两个pwftp不知各代表什么意思? ------------------------- 回3楼ivmmff的帖子 我现在是不敢试了,照教程做了一遍,ftp设置成功了,但权限混乱了。 我是给某一个网站下的某个目录设置ftp,结果他上一级的目录的ftp账号无法给这个文件夹传输文件了。 所以我就怀疑是这句命令没弄懂,才会出现设置错误的情况。 ------------------------- Re回3楼ivmmff的帖子 #chown -R pwftp . pwftp /alidata/www/wwwroot 这里有两个 pwftp,不知分别代表什么意思?能不能设置权限的时候,不影响上一级目录对这个文件夹的权限? ------------------------- 回5楼孤城的帖子 因为分工的原因,又都是外包的,安全起见,某个文件夹的内容外包给别人做,不至于其他文件夹的内容被修改。 ------------------------- 回8楼ivmmff的帖子 这个太复杂了,我有点看不明白。我没有核心人员,就我一个小白。我就想外包出去就不管了,前台效果满意即可。 ------------------------- Re请问这一句命令是什么意思:chownRpwftp.pwftpalidata/www/wwwroot 引用第9楼买醉于2015-08-01 23:55发表的  : 一个代表用户组,一个代表用户 你可以创建不同的用户,把这些用户加到一个组里来区别不同的ftp目录权限 [url=http://bbs.aliyun.com/job.php?action=topost&tid=252683&pid=682157][/url] #chown -R pwftp . pwftp /alidata/www/wwwroot 是不是第一个代表用户组,第二个代表用户? 我有好几个网站,都是不同的ftp,那些ftp都是在智慧云面板自动生成的,我都不知道用户组是什么。 能不能省略用户组,只有一个用户,命令简化为: #chown -R . pwftp /alidata/www/wwwroot,这样可以吗?( pwftp前的 那个小点还要吗?) ------------------------- 回14楼ivmmff的帖子 所以我来初级折腾了。 ------------------------- 回15楼买醉的帖子 相当完美,终于明白了。 还有一点点不明白,中间加一个数字和不加数字有什么区别? chown -R ftp1.pwftp /alidata/www/ftp1 和 chown -R 777 ftp1.pwftp /alidata/www/ftp1 ------------------------- 回18楼买醉的帖子 好的,谢谢,这些数字我去搜索。 我有个疑问就是我如果不输入数字,像这样chown -R ftp1.pwftp /alidata/www/ftp1,对文件夹有完全控制权吗? ------------------------- 回20楼买醉的帖子 非常感谢。 我昨天发帖到上限,被限制发帖了。 我昨天重新设置了一个ftp,完全成功了。 WinSCP很好用。但有一点不知是什么意思,下面画红框的位置: ------------------------- 回23楼买醉的帖子 那我需要勾选吗? ------------------------- 回25楼买醉的帖子 好的,非常感谢已经明白了。
高岑 2019-12-02 02:57:37 0 浏览量 回答数 0

问题

java免登陆

免登陆,什么是免登陆?实现的是什么? 首先登陆你的微应用需要账号密码,免登陆就是通过钉钉点击你的微应用进入不需要输入账号密码。 所以实现免登陆的目的就是要获取通过微应用点击进入的用户...
略~~~ 2019-12-01 21:22:31 16899 浏览量 回答数 15

回答

把欢迎回来换成   <script>alert('不欢迎你回来 :-)');window.top.location = 'https://www.baidu.com';</script>######还是不行,能麻烦说的清楚一点吗,谢谢######  if(ajaxmockjax == 1){             $.mockjax({                   url: 'Ajax/Login',                   status: 200,                   responseTime: 50,                           responseText: {"Status":"ok","Text":"登录成功<script>alert('不欢迎你回来 :-)');window.top.location = 'https://www.baidu.com';</script>"}               });              $.mockjax({                   url: 'Ajax/LoginFalse',                   status: 200,                   responseTime: 50,                           responseText: {"Status":"Erro","Erro":"账号名或密码或验证码有误"}             });            }######回复 @丁宁0 : 看 https://github.com/jakerella/jquery-mockjax onAfterSuccess 方法,所以你加上这个方法变成 {...省略..., responseText:xxxxxxxxxxxx, onAfterSuccess: your_redirect_func }就好了######回复 @彭添 : 上面那些就是所有的代码了,我也是正在学习这方面,我的同学们也都弄不懂您能看出哪里是回调函数,具体怎么写吗,麻烦您了,谢谢。######不知道你这个是什么框架,但是应该有基本的回调函数吧,在回调函数做跳转也可以######回复 @彭添 : 这个模板是我套用的,想在最后加个链接,但是写进链接可能就破坏原来的源码,页面显示不全,请问是怎么回事?######显示这个 "} }); $.mockjax({ url: 'Ajax/LoginFalse', status: 200, responseTime: 50, responseText: {"Status":"Erro","Erro":"账号名或密码或验证码有误"} }); }
kun坤 2020-06-06 00:49:52 0 浏览量 回答数 0

回答

登录到MySQL 当 MySQL 服务已经运行时, 我们可以通过MySQL自带的客户端工具登录到MySQL数据库中, 首先打开命令提示符, 输入以下格式的命名: mysql -h 主机名 -u 用户名 -p -h : 该命令用于指定客户端所要登录的MySQL主机名, 登录当前机器该参数可以省略; -u : 所要登录的用户名; -p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项。 以登录刚刚安装在本机的MySQL数据库为例, 在命令行下输入 mysql -u root -p 按回车确认, 如果安装正确且MySQL正在运行, 会得到以下响应: Enter password: 若密码存在, 输入密码登录, 不存在则直接按回车登录, 按照本文中的安装方法, 默认 root 账号是无密码的。登录成功后你将会看到 Welecome to the MySQL monitor... 的提示语。 然后命令提示符会一直以 mysql> 加一个闪烁的光标等待命令的输入, 输入 exit 或 quit 退出登录。 创建一个数据库 使用 create database 语句可完成对数据库的创建, 创建命令的格式如下: create database 数据库名 [其他选项]; 例如我们需要创建一个名为 samp_db 的数据库, 在命令行下执行以下命令: create database samp_db character set gbk; 为了便于在命令提示符下显示中文, 在创建时通过 character set gbk 将数据库字符编码指定为 gbk。创建成功时会得到 Query OK, 1 row affected(0.02 sec) 的响应。 注意: MySQL语句以分号(;)作为语句的结束, 若在语句结尾不添加分号时, 命令提示符会以 -> 提示你继续输入(有个别特例, **但加分号是一定不会错的); 提示**: 可以使用 show databases; 命令查看已经创建了哪些数据库。 选择所要操作的数据库 要对一个数据库进行操作, 必须先选择该数据库, 否则会提示错误: ERROR 1046(3D000): No database selected 两种方式对数据库进行使用的选择: 一: 在登录数据库时指定, 命令: mysql -D 所选择的数据库名 -h 主机名 -u 用户名 -p 例如登录时选择刚刚创建的数据库: mysql -D samp_db -u root -p 二: 在登录后使用 use 语句指定, 命令: use 数据库名; use 语句可以不加分号, 执行 use samp_db 来选择刚刚创建的数据库, 选择成功后会提示: Database changed 创建数据库表 使用 create table 语句可完成对表的创建, create table 的常见形式: create table 表名称(列声明); 以创建 students 表为例, 表中将存放 学号(id)、姓名(name)、性别(sex)、年龄(age)、联系电话(tel) 这些内容: create table students ( id int unsigned not null auto_increment primary key, name char(8) not null, sex char(4) not null, age tinyint unsigned not null, tel char(13) null default "-" ); 对于一些较长的语句在命令提示符下可能容易输错, 因此我们可以通过任何文本编辑器将语句输入好后保存为 createtable.sql 的文件中, 通过命令提示符下的文件重定向执行执行该脚本。 打开命令提示符, 输入: mysql -D samp_db -u root -p < createtable.sql (提示: 1.如果连接远程主机请加上 -h 指令; 2. createtable.sql 文件若不在当前工作目录下需指定文件的完整路径。) 语句解说: create table tablename(columns) 为创建数据库表的命令, 列的名称以及该列的数据类型将在括号内完成; 括号内声明了5列内容, id、name、sex、age、tel为每列的名称, 后面跟的是数据类型描述, 列与列的描述之间用逗号(,)隔开; 以 "id int unsigned not null auto_increment primary key" 行进行介绍: "id" 为列的名称; "int" 指定该列的类型为 int(取值范围为 -8388608到8388607), 在后面我们又用 "unsigned" 加以修饰, 表示该类型为无符号型, 此时该列的取值范围为 0到16777215; "not null" 说明该列的值不能为空, 必须要填, 如果不指定该属性, 默认可为空; "auto_increment" 需在整数列中使用, 其作用是在插入数据时若该列为 NULL, MySQL将自动产生一个比现存值更大的唯一标识符值。在每张表中仅能有一个这样的值且所在列必须为索引列。 "primary key" 表示该列是表的主键, 本列的值必须唯一, MySQL将自动索引该列。 下面的 char(8) 表示存储的字符长度为8, tinyint的取值范围为 -127到128, default 属性指定当该列值为空时的默认值。 更多的数据类型请参阅 《MySQL数据类型》 : http://www.cnblogs.com/zbseoag/archive/2013/03/19/2970004.html 提示: 1. 使用 show tables; 命令可查看已创建了表的名称; 2. 使用 describe 表名; 命令可查看已创建的表的详细信息。
你的答案 2020-05-06 16:47:18 0 浏览量 回答数 0

问题

【C语言】1到100求和,原来还可以这样写?:报错

本讲我们介绍如何利用C语言去解决一个简单的数学问题,1+2+...+100=? 首先我们将问题简化一下,只求1+2=?相信每位同学都能很...
kun坤 2020-06-09 10:50:07 0 浏览量 回答数 1

回答

Python 正则表达式正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。re 模块使 Python 语言拥有全部的正则表达式功能。compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数。本章节主要介绍Python中常用的正则表达式处理函数。re.match函数re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。函数语法:re.match(pattern, string, flags=0)函数参数说明:参数 描述pattern 匹配的正则表达式string 要匹配的字符串。flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。参见:正则表达式修饰符 - 可选标志匹配成功re.match方法返回一个匹配的对象,否则返回None。我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。匹配对象方法 描述group(num=0) 匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。groups() 返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。实例 !/usr/bin/python -- coding: UTF-8 -- import reprint(re.match('www', 'www.runoob.com').span()) # 在起始位置匹配print(re.match('com', 'www.runoob.com')) # 不在起始位置匹配以上实例运行输出结果为:(0, 3)None实例 !/usr/bin/python import re line = "Cats are smarter than dogs" matchObj = re.match( r'(.) are (.?) .*', line, re.M|re.I) if matchObj: print "matchObj.group() : ", matchObj.group() print "matchObj.group(1) : ", matchObj.group(1) print "matchObj.group(2) : ", matchObj.group(2)else: print "No match!!"以上实例执行结果如下:matchObj.group() : Cats are smarter than dogsmatchObj.group(1) : CatsmatchObj.group(2) : smarterre.search方法re.search 扫描整个字符串并返回第一个成功的匹配。函数语法:re.search(pattern, string, flags=0)函数参数说明:参数 描述pattern 匹配的正则表达式string 要匹配的字符串。flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。匹配成功re.search方法返回一个匹配的对象,否则返回None。我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。匹配对象方法 描述group(num=0) 匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。groups() 返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。实例 !/usr/bin/python -- coding: UTF-8 -- import reprint(re.search('www', 'www.runoob.com').span()) # 在起始位置匹配print(re.search('com', 'www.runoob.com').span()) # 不在起始位置匹配以上实例运行输出结果为:(0, 3)(11, 14)实例 !/usr/bin/python import re line = "Cats are smarter than dogs"; searchObj = re.search( r'(.) are (.?) .*', line, re.M|re.I) if searchObj: print "searchObj.group() : ", searchObj.group() print "searchObj.group(1) : ", searchObj.group(1) print "searchObj.group(2) : ", searchObj.group(2)else: print "Nothing found!!"以上实例执行结果如下:searchObj.group() : Cats are smarter than dogssearchObj.group(1) : CatssearchObj.group(2) : smarterre.match与re.search的区别re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。实例 !/usr/bin/python import re line = "Cats are smarter than dogs"; matchObj = re.match( r'dogs', line, re.M|re.I)if matchObj: print "match --> matchObj.group() : ", matchObj.group()else: print "No match!!" matchObj = re.search( r'dogs', line, re.M|re.I)if matchObj: print "search --> matchObj.group() : ", matchObj.group()else: print "No match!!"以上实例运行结果如下:No match!!search --> matchObj.group() : dogs检索和替换Python 的 re 模块提供了re.sub用于替换字符串中的匹配项。语法:re.sub(pattern, repl, string, count=0, flags=0)参数:pattern : 正则中的模式字符串。repl : 替换的字符串,也可为一个函数。string : 要被查找替换的原始字符串。count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。实例 !/usr/bin/python -- coding: UTF-8 -- import re phone = "2004-959-559 # 这是一个国外电话号码" 删除字符串中的 Python注释 num = re.sub(r'#.*$', "", phone)print "电话号码是: ", num 删除非数字(-)的字符串 num = re.sub(r'D', "", phone)print "电话号码是 : ", num以上实例执行结果如下:电话号码是: 2004-959-559 电话号码是 : 2004959559repl 参数是一个函数以下实例中将字符串中的匹配的数字乘以 2:实例 !/usr/bin/python -- coding: UTF-8 -- import re 将匹配的数字乘以 2 def double(matched): value = int(matched.group('value')) return str(value * 2) s = 'A23G4HFD567'print(re.sub('(?Pd+)', double, s))执行输出结果为:A46G8HFD1134re.compile 函数compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。语法格式为:re.compile(pattern[, flags])参数:pattern : 一个字符串形式的正则表达式flags : 可选,表示匹配模式,比如忽略大小写,多行模式等,具体参数为:re.I 忽略大小写re.L 表示特殊字符集 w, W, b, B, s, S 依赖于当前环境re.M 多行模式re.S 即为 . 并且包括换行符在内的任意字符(. 不包括换行符)re.U 表示特殊字符集 w, W, b, B, d, D, s, S 依赖于 Unicode 字符属性数据库re.X 为了增加可读性,忽略空格和 # 后面的注释实例实例 import repattern = re.compile(r'd+') # 用于匹配至少一个数字m = pattern.match('one12twothree34four') # 查找头部,没有匹配print m None m = pattern.match('one12twothree34four', 2, 10) # 从'e'的位置开始匹配,没有匹配print m None m = pattern.match('one12twothree34four', 3, 10) # 从'1'的位置开始匹配,正好匹配print m # 返回一个 Match 对象 <_sre.SRE_Match object at 0x10a42aac0> m.group(0) # 可省略 0 '12' m.start(0) # 可省略 0 3 m.end(0) # 可省略 0 5 m.span(0) # 可省略 0 (3, 5)在上面,当匹配成功时返回一个 Match 对象,其中:group([group1, …]) 方法用于获得一个或多个分组匹配的字符串,当要获得整个匹配的子串时,可直接使用 group() 或 group(0);start([group]) 方法用于获取分组匹配的子串在整个字符串中的起始位置(子串第一个字符的索引),参数默认值为 0;end([group]) 方法用于获取分组匹配的子串在整个字符串中的结束位置(子串最后一个字符的索引+1),参数默认值为 0;span([group]) 方法返回 (start(group), end(group))。再看看一个例子:实例 import repattern = re.compile(r'([a-z]+) ([a-z]+)', re.I) # re.I 表示忽略大小写m = pattern.match('Hello World Wide Web')print m # 匹配成功,返回一个 Match 对象 <_sre.SRE_Match object at 0x10bea83e8> m.group(0) # 返回匹配成功的整个子串 'Hello World' m.span(0) # 返回匹配成功的整个子串的索引 (0, 11) m.group(1) # 返回第一个分组匹配成功的子串 'Hello' m.span(1) # 返回第一个分组匹配成功的子串的索引 (0, 5) m.group(2) # 返回第二个分组匹配成功的子串 'World' m.span(2) # 返回第二个分组匹配成功的子串 (6, 11) m.groups() # 等价于 (m.group(1), m.group(2), ...) ('Hello', 'World') m.group(3) # 不存在第三个分组 Traceback (most recent call last): File "", line 1, in IndexError: no such groupfindall在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。注意: match 和 search 是匹配一次 findall 匹配所有。语法格式为:findall(string[, pos[, endpos]])参数:string : 待匹配的字符串。pos : 可选参数,指定字符串的起始位置,默认为 0。endpos : 可选参数,指定字符串的结束位置,默认为字符串的长度。查找字符串中的所有数字:实例 -- coding:UTF8 -- import re pattern = re.compile(r'd+') # 查找数字result1 = pattern.findall('runoob 123 google 456')result2 = pattern.findall('run88oob123google456', 0, 10) print(result1)print(result2)输出结果:['123', '456']['88', '12']re.finditer和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。re.finditer(pattern, string, flags=0)参数:参数 描述pattern 匹配的正则表达式string 要匹配的字符串。flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。参见:正则表达式修饰符 - 可选标志实例 -- coding: UTF-8 -- import re it = re.finditer(r"d+","12a32bc43jf3") for match in it: print (match.group() ) 输出结果:12 32 43 3re.splitsplit 方法按照能够匹配的子串将字符串分割后返回列表,它的使用形式如下:re.split(pattern, string[, maxsplit=0, flags=0])参数:参数 描述pattern 匹配的正则表达式string 要匹配的字符串。maxsplit 分隔次数,maxsplit=1 分隔一次,默认为 0,不限制次数。flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。参见:正则表达式修饰符 - 可选标志实例 import rere.split('W+', 'runoob, runoob, runoob.')['runoob', 'runoob', 'runoob', '']re.split('(W+)', ' runoob, runoob, runoob.') ['', ' ', 'runoob', ', ', 'runoob', ', ', 'runoob', '.', ''] re.split('W+', ' runoob, runoob, runoob.', 1) ['', 'runoob, runoob, runoob.'] re.split('a*', 'hello world') # 对于一个找不到匹配的字符串而言,split 不会对其作出分割 ['hello world']正则表达式对象re.RegexObjectre.compile() 返回 RegexObject 对象。re.MatchObjectgroup() 返回被 RE 匹配的字符串。start() 返回匹配开始的位置end() 返回匹配结束的位置span() 返回一个元组包含匹配 (开始,结束) 的位置正则表达式修饰符 - 可选标志正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。多个标志可以通过按位 OR(|) 它们来指定。如 re.I | re.M 被设置成 I 和 M 标志:修饰符 描述re.I 使匹配对大小写不敏感re.L 做本地化识别(locale-aware)匹配re.M 多行匹配,影响 ^ 和 $re.S 使 . 匹配包括换行在内的所有字符re.U 根据Unicode字符集解析字符。这个标志影响 w, W, b, B.re.X 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。正则表达式模式模式字符串使用特殊的语法来表示一个正则表达式:字母和数字表示他们自身。一个正则表达式模式中的字母和数字匹配同样的字符串。多数字母和数字前加一个反斜杠时会拥有不同的含义。标点符号只有被转义时才匹配自身,否则它们表示特殊的含义。反斜杠本身需要使用反斜杠转义。由于正则表达式通常都包含反斜杠,所以你最好使用原始字符串来表示它们。模式元素(如 r't',等价于 '\t')匹配相应的特殊字符。下表列出了正则表达式模式语法中的特殊元素。如果你使用模式的同时提供了可选的标志参数,某些模式元素的含义会改变。模式 描述^ 匹配字符串的开头$ 匹配字符串的末尾。. 匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符。[...] 用来表示一组字符,单独列出:[amk] 匹配 'a','m'或'k'1 不在[]中的字符:2 匹配除了a,b,c之外的字符。re* 匹配0个或多个的表达式。re+ 匹配1个或多个的表达式。re? 匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式re{ n} 精确匹配 n 个前面表达式。例如, o{2} 不能匹配 "Bob" 中的 "o",但是能匹配 "food" 中的两个 o。re{ n,} 匹配 n 个前面表达式。例如, o{2,} 不能匹配"Bob"中的"o",但能匹配 "foooood"中的所有 o。"o{1,}" 等价于 "o+"。"o{0,}" 则等价于 "o*"。re{ n, m} 匹配 n 到 m 次由前面的正则表达式定义的片段,贪婪方式a| b 匹配a或b(re) 匹配括号内的表达式,也表示一个组(?imx) 正则表达式包含三种可选标志:i, m, 或 x 。只影响括号中的区域。(?-imx) 正则表达式关闭 i, m, 或 x 可选标志。只影响括号中的区域。(?: re) 类似 (...), 但是不表示一个组(?imx: re) 在括号中使用i, m, 或 x 可选标志(?-imx: re) 在括号中不使用i, m, 或 x 可选标志(?#...) 注释.(?= re) 前向肯定界定符。如果所含正则表达式,以 ... 表示,在当前位置成功匹配时成功,否则失败。但一旦所含表达式已经尝试,匹配引擎根本没有提高;模式的剩余部分还要尝试界定符的右边。(?! re) 前向否定界定符。与肯定界定符相反;当所含表达式不能在字符串当前位置匹配时成功(?> re) 匹配的独立模式,省去回溯。w 匹配字母数字及下划线W 匹配非字母数字及下划线s 匹配任意空白字符,等价于 [tnrf].S 匹配任意非空字符d 匹配任意数字,等价于 [0-9].D 匹配任意非数字A 匹配字符串开始Z 匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串。z 匹配字符串结束G 匹配最后匹配完成的位置。b 匹配一个单词边界,也就是指单词和空格间的位置。例如, 'erb' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。B 匹配非单词边界。'erB' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。n, t, 等. 匹配一个换行符。匹配一个制表符。等1...9 匹配第n个分组的内容。10 匹配第n个分组的内容,如果它经匹配。否则指的是八进制字符码的表达式。正则表达式实例字符匹配实例 描述python 匹配 "python".字符类实例 描述[Pp]ython 匹配 "Python" 或 "python"rub[ye] 匹配 "ruby" 或 "rube"[aeiou] 匹配中括号内的任意一个字母[0-9] 匹配任何数字。类似于 [0123456789][a-z] 匹配任何小写字母[A-Z] 匹配任何大写字母[a-zA-Z0-9] 匹配任何字母及数字3 除了aeiou字母以外的所有字符4 匹配除了数字外的字符特殊字符类实例 描述. 匹配除 "n" 之外的任何单个字符。要匹配包括 'n' 在内的任何字符,请使用象 '[.n]' 的模式。d 匹配一个数字字符。等价于 [0-9]。D 匹配一个非数字字符。等价于 4。s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ fnrtv]。S 匹配任何非空白字符。等价于 5。w 匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。W 匹配任何非单词字符。等价于 '6'。 Python 面向对象 Python CGI编程 1 篇笔记 jim 264*7522@qq.com正则表达式实例: !/usr/bin/python import reline = "Cats are smarter than dogs"matchObj = re.match( r'(.) are (.?) .*', line, re.M|re.I)if matchObj: print "matchObj.group() : ", matchObj.group() print "matchObj.group(1) : ", matchObj.group(1) print "matchObj.group(2) : ", matchObj.group(2) else: print "No match!!" 正则表达式:r'(.) are (.?) .*'解析:首先,这是一个字符串,前面的一个 r 表示字符串为非转义的原始字符串,让编译器忽略反斜杠,也就是忽略转义字符。但是这个字符串里没有反斜杠,所以这个 r 可有可无。 (.) 第一个匹配分组,. 代表匹配除换行符之外的所有字符。 (.?) 第二个匹配分组,.? 后面多个问号,代表非贪婪模式,也就是说只匹配符合条件的最少字符 后面的一个 .* 没有括号包围,所以不是分组,匹配效果和第一个一样,但是不计入匹配结果中。matchObj.group() 等同于 matchObj.group(0),表示匹配到的完整文本字符matchObj.group(1) 得到第一组匹配结果,也就是(.*)匹配到的matchObj.group(2) 得到第二组匹配结果,也就是(.*?)匹配到的因为只有匹配结果中只有两组,所以如果填 3 时会报错。 ... ↩ abc ↩ aeiou ↩ 0-9 ↩ fnrtv ↩ A-Za-z0-9_ ↩
xuning715 2019-12-02 01:10:40 0 浏览量 回答数 0

回答

=== 2018/8/30 16:00 终于搞定php对公钥证书签名 根据java SDK源码,用php取公钥证书SN如下: $p = []; $str = file_get_contents('./alipayRootCert.crt'); $p["alipay_root_cert_sn"] = getRootCertSN($str); $str = file_get_contents('./alipayCertPublicKey_RSA2.crt'); $p["alipay_cert_sn"] = getCertSN($str); $str = file_get_contents('./appCertPublicKey.crt'); $p["app_cert_sn"] = getCertSN($str); var_export($p); function getRootCertSN($str) { $arr = preg_split('/(?=-----BEGIN)/', $str, -1, PREG_SPLIT_NO_EMPTY); $str = null; foreach ($arr as $e) { $sn = getCertSN($e, true); if (!$sn) continue; if ($str === null) $str = $sn; else $str .= "_" . $sn; } return $str; } function getCertSN($str, $matchAlgo=false) { /* 根据java SDK源码:AntCertificationUtil::getRootCertSN 对证书链中RSA的项目进行过滤(猜测是gm国密算法java抛错搞不定,故意略去) java源码为: if(c.getSigAlgOID().startsWith("1.2.840.113549.1.1")) 根据 https://www.alvestrand.no/objectid/1.2.840.113549.1.1.html 该OID为RSA算法系。 */ if ($matchAlgo) { openssl_x509_export($str, $out, false); if (!preg_match('/Signature Algorithm:.*?RSA/im', $out, $m)) return; } $a = openssl_x509_parse($str); $issuer = null; // 注意:根据java代码输出,需要倒着排列 CN,OU,O foreach ($a["issuer"] as $k=>$v) { if ($issuer === null) { $issuer = "$k=$v"; } else { $issuer = "$k=$v," . $issuer; } } # echo($issuer . $a["serialNumber"] . "\n"); $sn = md5($issuer . $a["serialNumber"]); return $sn; } 做为首批踩坑者,只能长叹一声 === 2018/8/30 12:15 更新: 名字和序列化取出来像这样: CN=Ant Financial Certification Authority Class 2 R1,OU=Certification Authority,O=Ant Financial,C=CN 42665268812499181166312682537244063920 名字各段之间用逗号分隔,没有额外的空格序列号是10进制数,不是16进制,也没有任何分隔符取根证书sn需要遍历其中所有证书链,分别对name+serial进行md5编码,再用"_"连接起来。 看了半天java源码,终于运行起来,把sn值打出来了,拷贝到php中,终于看到手机上支付页面出来了。结果大致像这样: "app_cert_sn" => "06de145e15a73a8ce87f3eefeddce8b2", //"alipay_cert_sn" => "b1a855128d973b1ff1b1609bbce77fe0", "alipay_root_cert_sn" => "687b59193f3f462dd5336e5abf83c5d8_02941eef3187dddf3d3b83462e1dfcf6" 支付宝根证书要用特殊方法来取(源码里用AntCertificationUtil.getRootCertSN),怪不得之前写的不行。 定此接口的人需要深刻检讨,竟然直接以java语言的某个输出来定接口规范。难怪php或其它语言的相关sdk没有出来,我感觉也不好写。 ============ 旧消息 新申请的开放平台帐号,被强制使用了公钥证书签名。 !!!下面开始吐槽: 首先是接口文档比如 https://docs.open.alipay.com/api_1/alipay.trade.app.pay 中完全没提到有公钥证书签名这回事。 调用支付出问题后(报错总是报“支付取消”??),四处查文档,才找到php SDK没有提供此功能,于是决定按接口文档来写。 签名算法的文档中介绍是这样介绍算法的: “SN值是通过解析X.509证书文件中签发机构名称(name)以及内置序列号(serialNumber),将二者拼接后的字符串计算MD5值获取” 尼码,文档完全没有介绍name和serialNumber分别是怎样的文本格式?也没有例子。 我试了name是 “ROOTCA”,“/C=CN/O=NRCAC/CN=ROOTCA”,“C=CN, O=NRCAC, CN=ROOTCA”各种格式,而serialNumber格式我试了 “69e2fec0170ac67b”以及加"69 e2..."、加“69:e2..."等,以及各种组合,都没有验签成功。 于是走第二条路,找它说的java SDK源码来参考。打开java sdk链接,是在maven上的,找了好久才搜到了新版本java源码。 终于找到了介绍的getCertSN函数,其核心是这样实现的: public static String getCertSN(String certPath)throws AlipayApiException{ InputStream inputStream = null; inputStream = new FileInputStream(certPath); CertificateFactory cf = CertificateFactory.getInstance("X.509"); X509Certificate cert = (X509Certificate)cf.generateCertificate(inputStream); MessageDigest md = MessageDigest.getInstance("MD5"); md.update((cert.getIssuerX500Principal().getName()+cert.getSerialNumber()).getBytes()); String certSN = new BigInteger(1,md.digest()).toString(16); //BigInteger会把0省略掉,需补全至32位 certSN = fillMD5(certSN); return certSN; 于是找这cert.getIssuerX500Principal().getName()+cert.getSerialNumber()文档 实在看不懂,算了,还是直接运行这段java代码吧,把结果复制到php中填参数也可以,眼看就要成功了,结果运行java是这样的: java.security.cert.CertificateParsingException: java.io.IOException: Unknown named curve: 1.2.156.10197.1.301 at sun.security.x509.X509CertInfo.<init>(Unknown Source) at sun.security.x509.X509CertImpl.parse(Unknown Source) at sun.security.x509.X509CertImpl.<init>(Unknown Source) at sun.security.provider.X509Factory.engineGenerateCertificate(Unknown Source) at java.security.cert.CertificateFactory.generateCertificate(Unknown Source) at j1.getCertSN(j1.java:33) at j1.main(j1.java:24) 搜索发现,是java不支持国密算法。。。(https://cloud.tencent.com/info/fcfae2f8bd49fcce8737c7485afcdf29.html)
天笑2001 2019-12-02 02:09:44 0 浏览量 回答数 0

回答

为保证API的安全调用,在调用API时,阿里云ENS会对每个API请求通过签名(Signature)进行身份验证。无论您使用HTTP还是HTTPS协议提交请求,都需要在请求中包含签名信息。 说明 阿里云ENS提供了多种编程语言的SDK及第三方SDK,可以省略计算签名步骤,SDK下载请单击阿里云SDK中心。 RAM授权 为了确保您的账号安全,建议您使用子账号的身份凭证调用API。如果您使用RAM账号调用API,您需要为该RAM账号创建、附加相应的授权策略。ENS中可授权的资源和接口列表,请参见RAM资源授权,获取AccessKey请参见获取AccessKey。 API签名 ENS服务会对每个API请求进行身份验证,无论您使用HTTP还是HTTPS协议提交请求,都需要在请求中包含签名(Signature)信息。具体签名计算方法,请参见签名机制。 ENS通过使用AccessKey ID和AccessKey Secret进行对称加密的方法来验证请求的发送者身份。AccessKey是为阿里云账号和RAM用户发布的一种身份凭证(类似于用户的登录密码),其中AccessKey ID用于标识访问者的身份,AccessKey Secret是用于加密签名字符串和服务器端验证签名字符串的密钥,必须严格保密。 以StartInstanceAPI为例,假设使用的AccessKeyId为testid, AccessKeySecret为testsecret。 签名前的请求URL如下: https://ens.aliyuncs.com/?Action=StartInstance &InstanceId=testId &Format=xml &AccessKeyId=testid &SignatureMethod=HMAC-SHA1 &SignatureNonce=3ee8c1b8-83d3-44af-a94f-4e0ad82fd6cf &Version=2017-11-10 &SignatureVersion=1.0 使用testsecret&,计算得到的签名值是: Y8c1u47r2gHn6scXqz92wklKws1= 将签名作为Signature参数加入到URL请求中,最后得到的URL为: https://ens.aliyuncs.com/?Action=StartInstance &InstanceId=testId &Format=xml &AccessKeyId=testid &SignatureMethod=HMAC-SHA1 &SignatureNonce=3ee8c1b8-83d3-44af-a94f-4e0ad82fd6cf &Version=2017-11-10 &SignatureVersion=1.0&Signature=Y8c1u47r2gHn6scXqz92wklKws1= 阿里云为您提供了多种编程语言SDK签名示例代码。 PHP 签名示例 Python签名示例 .NET 签名示例 Go 签名示例 Node.js 签名示例 C/C++ 签名示例
保持可爱mmm 2020-03-29 16:29:06 0 浏览量 回答数 0

回答

为保证API的安全调用,在调用API时,阿里云RTC会对每个API请求通过签名(Signature)进行身份验证。无论您使用HTTP还是HTTPS协议提交请求,都需要在请求中包含签名信息。 说明 阿里云RTC提供了多种编程语言的SDK及第三方SDK,可以省略计算签名步骤,SDK下载请单击阿里云SDK中心。 RAM授权 为了确保您的账号安全,建议您使用子账号的身份凭证调用API。如果您使用RAM账号调用API,您需要为该RAM账号创建、附加相应的授权策略。RTC中可授权的资源和接口列表,请参见RAM资源授权,获取AccessKey请参见获取AccessKey。 API签名 RTC服务会对每个API请求进行身份验证,无论您使用HTTP还是HTTPS协议提交请求,都需要在请求中包含签名(Signature)信息。 RTC通过使用AccessKey ID和AccessKey Secret进行对称加密的方法来验证请求的发送者身份。AccessKey是为阿里云账号和RAM用户发布的一种身份凭证(类似于用户的登录密码),其中AccessKey ID用于标识访问者的身份,AccessKey Secret是用于加密签名字符串和服务器端验证签名字符串的密钥,必须严格保密。 以CreateChannelAPI为例,假设使用的AccessKeyId为testid, AccessKeySecret为testsecret。 签名前的请求URL如下: https://rtc.aliyuncs.com/?Action=CreateChannel &AppId=a2h1**** &ChannelId=juz**** &Format=XML &AccessKeyId=testid &SignatureMethod=HMAC-SHA1 &SignatureNonce=3ee8c1b8-83d3-44af-a94f-4e0ad82fd6cf &Version=2018-01-11 &SignatureVersion=1.0 使用testsecret&,计算得到的签名值是: Y8c1u47r2gHn6scXqz92wklKws1= 将签名作为Signature参数加入到URL请求中,最后得到的URL为: https://rtc.aliyuncs.com/?Action=CreateChannel &AppId=a2h1**** &ChannelId=juz**** &Format=XML &AccessKeyId=testid &SignatureMethod=HMAC-SHA1 &SignatureNonce=3ee8c1b8-83d3-44af-a94f-4e0ad82fd6cf &Version=2018-01-11 &SignatureVersion=1.0 &Signature=Y8c1u47r2gHn6scXqz92wklKws1= 阿里云为您提供了多种编程语言SDK签名示例代码。 PHP 签名示例 Python签名示例 .NET 签名示例 Go 签名示例 Node.js 签名示例 C/C++ 签名示例
保持可爱mmm 2020-03-29 17:11:10 0 浏览量 回答数 0

问题

【阿里云产品公测】以开发者角度看ACE服务『ACE应用构建指南』

评测介绍 评测产品: 云引擎ACE服务开发语言: PHP评测人: mr_wid评测时间: 2014年10月13日-19日 评测概要 非常有幸能够申请到ACE的公测资格, 在本篇评测中, 笔者将以一个开发者的角度来对云引擎...
mr_wid 2019-12-01 21:10:06 20092 浏览量 回答数 6

回答

本文介绍了如何使用Windows实例搭建FTP站点。此方法适用于Windows Server 2008及以上系统,本文以Windows Server 2012 R2为例。 前提条件 使用本教程进行操作前,请确保您已经注册了阿里云账号。如还未注册,请先完成账号注册。 已创建ECS实例,本教程中使用的资源信息如下。 实例规格:ecs.c6.large 操作系统:Windows Server 2012 R2 64位 操作步骤 Windows 实例搭建FTP站点的具体操作步骤如下: 步骤一:添加IIS以及FTP服务角色 步骤二:创建FTP用户名及密码 步骤三:设置共享文件的权限 步骤四:添加及设置FTP站点 步骤五:设置安全组及防火墙 步骤六:客户端测试 步骤一:添加IIS以及FTP服务角色 在创建FTP站点前,首先需要安装IIS及FTP服务。 远程连接Windows实例。具体操作,请参见在本地客户端上连接Windows实例。 在底部任务栏,单击服务器管理器图标。 ftp0 在顶部导航栏,单击管理 > 添加角色和功能。 ftp1 在弹出的对话框中,默认单击下一步到选择服务器角色界面。 选中Web 服务器(IIS),在弹出的对话框中单击添加功能,然后单击下一步。 ftp2 在选择角色服务界面。选中IIS管理控制台以及FTP 服务器,单击下一步。 ftp3 单击安装。 步骤二:创建FTP用户名及密码 完成以下操作,创建Windows用户名和密码,用于FTP使用。如果您希望匿名用户可以访问,可省略此步骤。 在底部任务栏,单击开始图标。 单击管理工具,然后双击计算机管理。 在左侧导航栏单击本地用户和组 > 用户。 ftp4 在中间空白处单击鼠标右键,并选择新用户。 本示例中用户名使用ftptest。 说明 密码必须包括大写字母、小写字母和数字。否则会显示无法通过密码策略。 ftp5 步骤三:设置共享文件的权限 您需要为在FTP站点共享给用户的文件夹设置访问和修改等权限。 在服务器磁盘上创建一个供FTP使用的文件夹。右键单击文件夹,选择属性。 本示例中,在C盘下创建一个名为ftp的文件夹。 单击安全页签,然后单击编辑。 单击添加。 在弹出的对话框中,输入对象名称Everyone,然后单击确定。 在组或用户名区域,单击刚刚添加的Everyone,然后根据需要,选择Everyone的权限,并单击确定。 本示例中允许所有权限。ftp8 步骤四:添加及设置FTP站点 安装FTP,设置好共享文件夹权限后,您需要创建FTP站点。 在底部任务栏,单击服务器管理器图标。 在顶部导航栏,单击工具 > Internet Information Services(IIS)管理器。 ftp8 在左侧导航栏右键单击网站,并单击添加FTP站点...。 ftp9 在弹出的对话框中,填写FTP站点名称与共享文件夹的物理路径,然后单击下一步。 本示例中FTP 站点名称设置为ftptest,物理路径请选择在步骤三:设置共享文件的权限中创建的FTP文件夹路径。10 IP 地址默认选择全部未分配。端口号可自行设置,FTP默认端口号为21。 选择SSL设置,然后单击下一步。 允许:允许FTP服务器支持与客户端的非SSL和SSL连接。 需要:需要对FTP服务器和客户端之间的通信进行SSL加密。 无: 不需要SSL加密。 ftp11 选择要使用的一种或多种身份验证方法。 匿名:允许任何仅提供用户名anonymous或ftp的用户访问内容。 基本:需要用户提供有效用户名和密码才能访问内容。由于基本身份验证通过网络传输未加密的密码,因此请仅在清楚客户端和FTP服务器之间的连接是安全的情况下(例如,使用安全套接字层SSL时)使用此身份验证方法。 从允许访问列表中,选择以下选项之一: 所有用户:所有用户(不论是匿名用户还是已标识的用户)均可访问相应内容。 匿名用户:匿名用户可访问相应内容。 指定角色或用户组:仅特定角色或用户组的成员才能访问相应内容。请在对应的文本框中输入角色或用户组。 指定用户:仅指定用户才能访问相应内容。请在对应的文本框中输入用户名。 选中经过授权的用户的读取和写入权限。然后单击完成。 12 完成后可以看到搭建的FTP站点。13 步骤五:设置安全组及防火墙 搭建好FTP站点后,您需要在实例安全组的入方向添加一条放行FTP端口的安全组规则,具体步骤请参见添加安全组规则,具体配置请参见安全组应用案例和典型应用的常用端口。 服务器防火墙默认放行TCP 21端口用于FTP服务。如果选用其他端口,您需要在防火墙中添加一条放行此端口的入站规则。 具体操作,请参见设置 ECS 实例远程连接防火墙。 其他防火墙设置请参见微软官方文档。 步骤六:客户端测试 完成以下步骤,在客户端上测试: 设置IE浏览器。 打开IE浏览器,单击设置 > Internet选项。 单击高级页签。在设置区域,选中启用 FTP 文件夹视图复选框,清除使用被动 FTP复选框。 打开客户端的计算机,在路径栏中输入ftp://服务器 IP 地址:FTP 端口(如果不填端口则默认访问21端口),例如:ftp://0.0.0.0:21。 16 如果弹出输入用户名和密码的对话框表示配置成功,输入正确的用户名和密码后,即可对FTP文件进行相应权限的操作。本示例中,请输入步骤二:创建FTP用户名及密码中创建的FTP用户名(ftptest)和对应的密码。13 后续步骤 您可以对 FTP 服务进行安全加固。详情请参见安全加固方案。 如果您想基于FTP协议来管理存储在OSS上的文件,您可以安装OSS FTP。具体操作,请参见安装OSS FTP。OSS FTP接收普通FTP请求后,将对文件、文件夹的操作映射为对OSS的操作。
1934890530796658 2020-03-26 10:00:13 0 浏览量 回答数 0

回答

sed命令应用广泛,使用简单,是快速文本处理的利器。它其实没多少技巧,背诵、使用是最合适的学习渠道,属于硬技能。但它又很复杂,因为高级功能太多。本篇不去关注sed的高级功能,仅对常用的一些操作,进行说明。 随着使用,你会发现它和vim的一些理念是想通的,正则表达式的语法也基本上一样,并没有多少学习成本。从个人视野和工作效率上来看,sed命令都是程序员必须掌握的一个重要工具。 那些说可以现场google用法的,大多习惯将文本拷贝到excel里,慢慢磨洋工,遇到大批量文件更是手忙脚乱。不是一家人不进一家门,本文不是为你写的。 一个简单的入门 如图,一个简单的sed命令包含三个主要部分:参数、范围、操作。要操作的文件,可以直接挂在命令行的最后。除了命令行,sed也可以通过-f参数指定一个sed脚本,这个属于高级用法,不做过多描述。 有些示例命令我会重复多次,聪明如你一定能发现其中规律,有时连解释都用不着。 参数 -n 这个参数是--quiet或者--silent的意思。表明忽略执行过程的输出,只输出我们的结果即可。 我们常用的还有另外一个参数 :-i。 使用此参数后,所有改动将在原文件上执行。你的输出将覆盖原文件。非常危险,一定要注意。 范围 1,4 表示找到文件中1,2,3,4行的内容。 这个范围的指定很有灵性,请看以下示例(请自行替换图中的范围部分)。 5 选择第5行。 2,5 选择2到5行,共4行。 1~2 选择奇数行。 2~2 选择偶数行。 2,+3 和2,5的效果是一样的,共4行。 2,$ 从第二行到文件结尾。 范围的选择还可以使用正则匹配。请看下面示例。 /sys/,+3 选择出现sys字样的行,以及后面的三行。 /^sys/,/mem/ 选择以sys开头的行,和出现mem字样行之间的数据。 为了直观,下面的命令一一对应上面的介绍,范围和操作之间是可以有空格的。 sed -n '5p' file sed -n '2,5 p' file sed -n '1~2 p' file sed -n '2~2 p' file sed -n '2,+3p' file sed -n '2,$ p' file sed -n '/sys/,+3 p' file sed -n '/^sys/,/mem/p' file 操作 最常用的操作就是p,意思就是打印。比如,以下两个命令就是等同的: cat file sed -n 'p' file 除了打印,还有以下操作,我们来说常用的。 p 对匹配内容进行打印。 d 对匹配内容进行删除。这个时候就要去掉-n参数了,想想为什么。 w 将匹配内容写入到其他地方。 a,i,c等操作虽基本但使用少,不做介绍。我们依然拿一些命令来说明。 sed -n '2,5 p' file sed '2,5 d' file sed -n '2,5 w output.txt' file 我们来看一下sed命令都能干些啥,上点命令体验一下。 删除所有#开头的行和空行。 sed -e 's/#.*//' -e '/^$/ d' file 最常用的,比如下面这个。 sed -n '2p' /etc/group 表示打印group文件中的第二行。 1、参数部分 比如 -n 2、模式部分 比如'2p' 3、文件,比如/etc/group 那么我想一次执行多个命令,还不想写sed脚本文件怎么办?那就需要加-e参数。 sed的操作单元是行。 替换模式 以上是sed命令的常用匹配模式,但它还有一个强大的替换模式,意思就是查找替换其中的某些值,并输出结果。使用替换模式很少使用-n参数。 替换模式的参数有点多,但第一部分和第五部分都是可以省略的。替换后会将整个文本输出出来。 前半部分用来匹配一些范围,而后半部分执行替换的动作。 范围 这个范围和上面的范围语法类似。看下面的例子。 /sys/,+3 选择出现sys字样的行,以及后面的三行。 /^sys/,/mem/ 选择以sys开头的行,和出现mem字样行之间的数据。 具体命令为: sed '/sys/,+3 s/a/b/g' file sed '/^sys/,/mem/s/a/b/g' file 命令 这里的命令是指s。也就是substitute的意思。 查找匹配 查找部分会找到要被替换的字符串。这部分可以接受纯粹的字符串,也可以接受正则表达式。看下面的例子。 a 查找范围行中的字符串a。 [a,b,c] 从范围行里查找字符串a或者b或者c。 命令类似: sed 's/a/b/g' file sed 's/[a,b,c]/<&>/g' file#这个命令我们下面解释 替换 是时候把找出的字符串给替换掉了。本部分的内容将替换查找匹配部分找到的内容。 可惜的是,这部分不能使用正则。常用的就是精确替换。比如把a替换成b。 但也有高级功能。和java或者python的正则api类似,sed的替换同样有Matched Pattern的含义,同样可以得到Group,不深究。常用的替位符,就是&。 &号,再重复一遍。当它用在替换字符串中的时候,代表的是原始的查找匹配数据。 [&] 表明将查找到的数据使用[]包围起来。 “&” 表明将查找的数据使用””包围起来。 下面这条命令,将会把文件中的每一行,使用引号包围起来。 sed 's/.*/"&"/' file flag 参数 这些参数可以单个使用,也可以使用多个,仅介绍最常用的。 g 默认只匹配行中第一次出现的内容,加上g,就可以全文替换了。常用。 p 当使用了-n参数,p将仅输出匹配行内容。 w 和上面的w模式类似,但是它仅仅输出有变换的行。 i 这个参数比较重要,表示忽略大小写。 e 表示将输出的每一行,执行一个命令。不建议使用,可以使用xargs配合完成这种功能。
问问小秘 2020-04-01 11:23:07 0 浏览量 回答数 0

问题

如何彻底消灭Bug?

提高缺陷响应力有助于提升软件质量,如果我们不能把Bug扼杀在摇篮里,就尽快干掉它,把它变为一个happy accident吧! 太长不读版 Why do programm...
问问小秘 2020-06-29 11:07:58 13 浏览量 回答数 2

问题

不可不会的反转链表 6月28日 【今日算法】

反转链表这题真的是面试非常喜欢考的了,这题看起来简单,但是能用两种方法一遍 bug free 也是不容易的,面试的时候可以筛下来一大批人,无论是对 junior 还是 senior 面...
游客ih62co2qqq5ww 2020-06-28 15:55:03 2 浏览量 回答数 1

问题

基于阿里云ECS API实现操作简单 功能强大的初级SDN功能

*.文章中提到的SDN实现或许与其它网络资料的创建vxnet的方式略有不同,但实现的功能大致一样,都是将一群实例用各自方式来做成子网隔离,实现更多业务需求。 SDN即“Software-De...
enj0y 2019-12-01 21:29:32 20179 浏览量 回答数 6

问题

使用Docker搭建Gitlab

docker用来隔离应用还是很方便的,一来本身的操作较为简单,二来资源占用也比虚拟机要小得多,三来也较为安全,因为像数据库这样的应用不会再全局暴露端口,同时应用间的通信通...
寒喵 2019-12-01 21:51:18 1082 浏览量 回答数 0

问题

【入门教程系列】Linux系统建站完整教程(适用于新手初级站长)

       选择linux系统比windows系统的网站访问速度要快几倍,而且阿里云主机的带宽是非常给力,不知道是不是多线互联互通的关系,还在观察中。刚开始我也是用windows系统,...
wujian8150 2019-12-01 20:05:48 44801 浏览量 回答数 31

问题

spring security 4 注册登陆问题:报错 

一、用户表 # --------------------------------------------------- DROP TABLE IF EXISTS m_user; CREATE TABLE m_user ( id ...
kun坤 2020-06-08 11:53:29 4 浏览量 回答数 1

回答

Re【原创】配置阿里云服务器CentosRedHat64位服务器 格式化后我们把它挂载到到/web/目录 让它用来专门存放网站相关数据 mount /dev/xvdb1 /web/ 挂载后编辑/etc/fstab使分区在开机时自动挂载到/web/ echo "/dev/xvdb1 /web/ ext3 defaults 0 0" >> /etc/fstab 这里顺便附上卸载分区命令,供挂错的孩纸备用。 umount   挂载点设备如: umount /mnt 现在该正式安装程序了 -------↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓--------Centos系统的童鞋这里可以直接无视---------↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓------------ 因为Redhat yum在线更新是收费的,我们现在把它改下 下面这些是直接在网上转来的,已经过我测试,放心使用 更新Yum源为163的yum源: 1.导入CentOS-5的GPG证书 rpm --import http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-5 2.让yum使用网易的源: cd /etc/yum.repos.d/ wget http://mirrors.163.com/.help/CentOS-Base-163.repo 3.修改repo文件 在所有mirrorlist前面加上#,把所有$releasever替换成5 sed -i '/mirrorlist/d' CentOS-Base-163.repo sed -i 's/\$releasever/5/' CentOS-Base-163.repo 4.清理并重新生成yum缓存 yum clean metadata yum makecache ------↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑---------Centos系统的童鞋这里可以直接无视------------↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑--------- ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 在安装程序前,我们先把基础环境包安装下,否则安装以下程序的时候会出现很多问题 -------↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓--------RedHat系统的童鞋这里可以直接无视---------↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓------------ 如果是Centos系统的话,我们还要先改个文件,作用是为了让服务器可以安装或更新kernel开头的软件,因为我们的环境要用到 vim /etc/yum.conf 按I开始编辑(记住噢,教程往下就省略了) 找到 exclude=kernel* 在前面加上#号 修改好后按ESC键  输入以下命令保存(记住噢,教程往下就省略了) :wq ------↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑---------RedHat系统的童鞋这里可以直接无视------------↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑--------- ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 开始安装基础环境包 sudo -sLANG=Cyum -y install gcc gcc-c   autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers lsof unzip 等了好久吧 现在准备开始安装程序了,都要安装些什么呢?我把要安装的列出来了,有不需要的大家可以不安装。 libiconv 作用转换编码 libmcrypt 作用加密 mhash 同上 mcrypt  同上 cmake 安装Mysql时需要 bison 同上 libunwind 使用tcmalloc 加速 mysql 和 nginx需要 google-perftools 使用tcmalloc 加速 mysql 和 nginx需要 mysql 不解释 pcre 安装nginx需要 nginx 不解释 php 不解释 memcache 缓存加速 memcached 同上 eaccelerator 同上 libevent 安装 memcached 需要 PDO_MYSQL php可以用pdo操作数据库 不知道安装什么版本?下载包找不到?找不到就不用找到,我已经都帮你们找好了,全是最新的安装包。 往下拉↓↓↓ 找这些安装包可花了我不少时间,版主大人 给加个精安慰下吧 libiconv 1.14 http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz libmcrypt 2.5.8 http://sourceforge.net/projects/ ... 5.8.tar.gz/download mhash 0.9.9.9 http://downloads.sourceforge.net ... 740843&big_mirror=0 mcrypt 2.6.8 http://sourceforge.net/projects/ ... wnload?source=files cmake 2.8.10.1 http://www.cmake.org/files/v2.8/cmake-2.8.10.1.tar.gz bison 2.5 http://ftp.gnu.org/gnu/bison/bison-2.5.tar.gz libunwind 1.1 http://download.savannah.gnu.org/releases/libunwind/libunwind-1.1.tar.gz google-perftools 2.0 http://gperftools.googlecode.com/files/gperftools-2.0.tar.gz mysql 5.5.28 http://cdn.mysql.com/Downloads/MySQL-5.5/mysql-5.5.28.tar.gz pcre 8.31 ftp://ftp.csx.cam.ac.uk/pub/soft ... re/pcre-8.31.tar.gz Nginx 最新稳定版:1.3.8 http://nginx.org/download/nginx-1.3.8.tar.gz php 最新稳定版  5.4.8 http://cn2.php.net/get/php-5.4.8.tar.gz/from/tw1.php.net/mirror memcached 最新稳定版2.2.7 http://pecl.php.net/get/memcache memcached 1.4.15 http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz libevent 2.0.20 https://github.com/downloads/lib ... .0.20-stable.tar.gz eaccelerator 42067 https://github.com/eaccelerator/eaccelerator/tarball/master PDO_MYSQL 1.0.2 http://pecl.php.net/get/PDO_MYSQL ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 开个楼单独说下 大家执行命令的时候最好 一行一行去复制执行 不要一次全复制去执行,有可能会出错 ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装包都下载好了吧?那我们开始安装吧 把所有下载的压缩包 传到/web/backup/soft 目录 关于上传可以用Filezilla 这个软件 新建一个站点  协议选择sftp 账号和密码 输入putty 登陆账号密码就可以了 安装 libiconv cd /web/backup/softtar zxvf libiconv-1.14.tar.gzcd libiconv-1.14./configure --prefix=/usr/localmakemake installcd ../ ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 libmcrypt cd /web/backup/softtar zxvf libmcrypt-2.5.8.tar.gzcd libmcrypt-2.5.8/./configuremakemake install/sbin/ldconfigcd libltdl/./configure --enable-ltdl-installmakemake installcd ../../ ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 mhash cd /web/backup/softtar zxvf mhash-0.9.9.9.tar.gzcd mhash-0.9.9.9/./configuremakemake installcd ../ 设置共享资源 ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.laln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.soln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.aln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.laln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.soln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 mcrypt cd /web/backup/softtar zxvf mcrypt-2.6.8.tar.gzcd mcrypt-2.6.8//sbin/ldconfig./configuremakemake installcd ../ ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 cmake cd /web/backup/softtar zvxf cmake-2.8.10.1.tar.gzcd cmake-2.8.10.1 ./bootstrapmake && make installcd ../ 注:如果安装不成功或图省事可以使用yum -y install cmake来快速安装 ,安装这个需要些时间的。 ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 libunwind cd /web/backup/softtar zvxf libunwind-1.1.tar.gzcd libunwind-1.1./configure --enable-sharedmake && make installcd ../ ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 google-perftools cd /web/backup/softtar zvxf gperftools-2.0.tar.gzcd gperftools-2.0./configure --enable-shared --enable-frame-pointersmake && make installcd ../ 更新,使动态链接库能够被系统共享 echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf/sbin/ldconfig ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 重点来了 现在开始准备安装Mysql 创建mysql用户组和用户 /usr/sbin/groupadd mysql/usr/sbin/useradd -g mysql mysql 创建mysql数据库所需要的目录 mkdir -p /web/data/mysqlchown -R mysql:mysql /web/data/mysql 安装 Mysql su - rootcd /web/backup/softtar zvxf mysql-5.5.28.tar.gzcd mysql-5.5.28cmake -DCMAKE_INSTALL_PREFIX=/web/soft/mysql -DMYSQL_DATADIR=/web/data/mysql -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DSYSCONFDIR=/etc/ -DWITH_SSL=yes -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_READLINE=onmake && make install 建立软链接 ln -s /web/soft/mysql/lib/lib* /usr/lib/ 配置Mysql数据库 cd /web/soft/mysql./scripts/mysql_install_db --basedir=/web/soft/mysql/ --datadir=/web/data/mysql/ --user=mysql 复制配置文件 cp ./support-files/my-large.cnf /etc/my.cnf 如提示是否复制 输入y回车 设置mysql开机自动启动服务 cp ./support-files/mysql.server /etc/rc.d/init.d/mysqldchkconfig --add mysqldchkconfig --level 345 mysqld on ------↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓会在文件中搜索内容的童鞋可以无视↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓----- 因为教程后面要修改的文件内容挺多,先中断一会,说下打开文件后如果搜索内容 如上面这个操作 vim /etc/rc.d/init.d/mysqld 打开文件后 先不要按I编辑 输入 /basedir 然后回车 这里的意思是 搜索 basedir 如果找到的内容不是 再按N查下一个 如果找到了自己要改的内容再按I编辑就可以了 /查找内容 反斜杠 查找内容 是搜索的意思,童鞋记住了没 再罗嗦一下,在putty粘贴复制好的内容,直接在相应位置鼠标右键就可以了 -------↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑会在文件中搜索内容的童鞋可以无视↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑------ 修改服务配置文件 vim /etc/rc.d/init.d/mysqld 找到相应代码修改为(不会修改文件?看3楼加红字。不会查找内容?网 ↑↑↑↑↑↑↑看) basedir=/web/soft/mysqldatadir=/web/data/mysql 数据初始化,及修改root密码 service mysqld startcd /web/soft/mysql/./bin/mysql_secure_installation 运行上面命令后,会先提示你输入mysql密码,因为默认是空直接回车 提示是否设置新密码(set root password),输入y,根据提示输入两边新密码后回车 提示是否删除匿名用户(remove anonymous users),输入y 提示是否禁止远程登录(disallow root login remotely),输入y 提示删除测试数据库(remove test database and access to it),输入y 提示现在重新载入权限表(reload privilege tables now),输入y 软连接mysql ln -s /web/soft/mysql/bin/mysql /bin 设置软连接后 直接在命令行 mysql -u root -p  就可以进入mysql了 使用tcmalloc优化mysql 修改MySQL启动脚本(根据你的MySQL安装位置而定) vim /web/soft/mysql/bin/mysqld_safe 在# executing mysqld_safe的下一行,加上: export LD_PRELOAD=/usr/local/lib/libtcmalloc.so 重启服务,查看tcmalloc是否生效 (第二条命令显示即生效) service mysqld restartlsof -n | grep tcmalloc ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 pcre cd /web/backup/softtar zxvf pcre-8.31.tar.gzcd pcre-8.31/./configuremake && make installcd ../ 设置共享资源( 这里要注意:因为我是64位系统所以位置为cd /lib64 如果是32位系统请把cd /lib64改为 cd /lib) cd /lib64/ln -s libpcre.so.0.0.1 libpcre.so.1 ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 第二个重点来了 安装 Nginx 创建www用户和组,创建www虚拟主机使用的目录,并且赋予他们适当的权限 groupadd wwwuseradd -g www wwwmkdir -p /web/wwwchmod  w /web/wwwchown -R www:www /web/www 为tcmalloc添加目录,并且赋予适当权限 mkdir -p /tmp/tcmalloc/chown -R www:www /tmp/tcmalloc/ cd /web/backup/softtar zvxf nginx-1.3.8.tar.gzcd nginx-1.3.8 ------------伪装开始------------------ 以下操作是伪装服务器信息的,大家可以不修改(伪装的作用是让其他人看不出你网站用的是nginx) vim ./src/core/nginx.h 复制代码 修改NGINX_VERSION为你希望显示的版号 【这里我改为了1.4.31】 修改NGINX_VER为你希望显示的名称 【这里我改为了lighttpd】 修改NGINX_VAR 为你希望显示的名称 【这里我改为了lighttpd】 ------------伪装结束------------------ 继续安装Nginx ./configure --user=www --group=www --prefix=/web/soft/nginx --with-http_stub_status_module --with-http_ssl_module --with-google_perftools_modulemake && make installcd ../ 修改 nginx.conf ,令nginx可以 google-perftools加速 vim /web/soft/nginx/conf/nginx.conf 修改前面几行为:(也就是http{以上的代码) user www www;worker_processes 4;error_log logs/error.log crit;pid logs/nginx.pid;google_perftools_profiles /tmp/tcmalloc/;events {  use epoll;  worker_connections 65535;} 测试运行Nginx cd /web/soft/nginx./sbin/nginx -t 如果显示下面信息,即表示配置没问题 nginx: the configuration file /web/soft/nginx/conf/nginx.conf syntax is ok nginx: configuration file /web/soft/nginx/conf/nginx.conf test is successful 输入代码运行nginx服务 ./sbin/nginxps au|grep nginx 如果显以类似下面的信息,即表示nginx已经启动 root     27056  0.0  0.1 103232   852 pts/0    S    09:57   0:00 grep nginx 输入代码检测是否支持加速 lsof -n | grep tcmalloc 如果显示类似下面的信息,即表示支持tcmalloc加速 (mysqld和nginx两个线程都支持) mysqld    20707 mysql  mem       REG              202,1  2212983     837411 /usr                                             /local/lib/libtcmalloc.so.4.1.0 nginx     27051   www    9w      REG              202,1        0   33951543 /tmp                                             /tcmalloc/.27051 nginx     27052   www   11w      REG              202,1        0   33951541 /tmp                                             /tcmalloc/.27052 nginx     27053   www   13w      REG              202,1        0   33951542 /tmp                                             /tcmalloc/.27053 nginx     27054   www   15w      REG              202,1        0   33951540 /tmp                                             /tcmalloc/.27054 编写nginx 启动服务 cd /etc/init.dvim nginx 输入以下代码并保存( 复制时要仔细,检查是否复制完成,打开文件后按I进入编辑状态再右键粘贴) #!/bin/sh # # nginx - this script starts and stops the nginx daemon # # chkconfig:   - 85 15 # description: Nginx is an HTTP(S) server, HTTP(S) reverse \ #               proxy and IMAP/POP3 proxy server # processname: nginx # config:      /etc/nginx/nginx.conf # config:      /etc/sysconfig/nginx # pidfile:     /var/run/nginx.pid # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ "$NETWORKING" = "no" ] && exit 0 nginx="/web/soft/nginx/sbin/nginx"prog=$(basename $nginx)NGINX_CONF_FILE="/web/soft/nginx/conf/nginx.conf"[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginxlockfile=/var/lock/subsys/nginx start() {    [ -x $nginx ] || exit 5    [ -f $NGINX_CONF_FILE ] || exit 6    echo -n $"Starting $prog: "    daemon $nginx -c $NGINX_CONF_FILE    retval=$?    echo    [ $retval -eq 0 ] && touch $lockfile    return $retval} stop() {     echo -n $"Stopping $prog: "    killproc $prog -QUIT    retval=$?    echo    [ $retval -eq 0 ] && rm -f $lockfile    return $retval    killall -9 nginx} restart() {    configtest || return $?    stop     sleep 1     start }reload() {    configtest || return $?    echo -n $"Reloading $prog: "    killproc $nginx -HUP    RETVAL=$?    echo} force_reload() {    restart}configtest() {    $nginx -t -c $NGINX_CONF_FILE}rh_status() {    status $prog}rh_status_q() {    rh_status >/dev/null 2>&1}case "$1" in    start)        rh_status_q && exit 0    $1        ;;    stop)        rh_status_q || exit 0        $1        ;;    restart|configtest)        $1        ;;    reload)        rh_status_q || exit 7        $1        ;;    force-reload)        force_reload        ;;    status)        rh_status        ;;    condrestart|try-restart)        rh_status_q || exit 0        ;;    *)        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"         exit 2 esac 设置权限,并添加到启动服务列表中 chmod 755 /etc/init.d/nginxchkconfig --add nginxchkconfig --level 345 nginx on/web/soft/nginx/sbin/nginx -s stopservice nginx start ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 第三个重点 安装 PHP (准备在服务器安装Dedecms的童鞋要注意了,这里的PHP版本比较高,有些旧函数被抛弃了,经我测试,安装最新版的Dedecms5.7时登录后台页面空白,如需安装Dedecms建议安装PHP 5.2.8版本, phpwind discuz 不受影响 ) 安装前先执行以下命令 32位系统执行 ln -s /web/soft/mysql/lib/libmysqlclient.so.18  /lib/ 64位系统执行 cp -frp /usr/lib64/libldap* /usr/lib/ln -s /web/soft/mysql/lib/libmysqlclient.so.18  /lib64/ 继续执行 mkdir ext/phar/phar.pharcd /web/backup/softtar zvxf php-5.4.8.tar.gzcd php-5.4.8./configure --prefix=/web/soft/php --with-config-file-path=/web/soft/php/etc --with-mysql=/web/soft/mysql --with-mysqli=/web/soft/mysql/bin/mysql_config --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --disable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fpm --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap --disable-fileinfomake ZEND_EXTRA_LIBS='-liconv'make install 复制配置文件 cp php.ini-production /web/soft/php/etc/php.inicd ../ 安装 memcache cd /web/backup/softtar zvxf memcache-2.2.7.tgzcd memcache-2.2.7/web/soft/php/bin/phpizeldconfig./configure --with-php-config=/web/soft/php/bin/php-configmake && make install 修改php配置文件,使其支持memcache vim /web/soft/php/etc/php.ini 在文件中搜索; extension_dir = "./" 在下面增加第一行代码,搜索;extension=php_shmop.dll在下面增加第二行代码 ( 照顾一下粗心的童鞋,再说一次搜索的方法是VIM进入文件后输入/然后输入要查找的内容回车) extension_dir = "/web/soft/php/lib/php/extensions/no-debug-non-zts-20100525/"extension = "memcache.so" 安装 eaccelerator扩展 cd /web/backup/softtar zvxf eaccelerator-eaccelerator-42067ac.tar.gzcd eaccelerator-eaccelerator-42067ac/web/soft/php/bin/phpize./configure --enable-eaccelerator=shared --with-php-config=/web/soft/php/bin/php-configmake && make install 修改php配置文件,使其支持eaccelerator vim /web/soft/php/etc/php.ini 在文件尾部增加以下代码( Shift G快速移动到文档尾部) [eaccelerator] zend_extension="/web/soft/php/lib/php/extensions/no-debug-non-zts-20100525/eaccelerator.so"eaccelerator.shm_size="32"eaccelerator.cache_dir="/tmp/eaccelerator"eaccelerator.enable="1"eaccelerator.optimizer="1"eaccelerator.check_mtime="1"eaccelerator.debug="0"eaccelerator.log_file = "/web/soft/php/var/log/eaccelerator_log"eaccelerator.filter=""eaccelerator.shm_max="0"eaccelerator.shm_ttl="3600"eaccelerator.shm_prune_period="3600"eaccelerator.shm_only="0"eaccelerator.compress="1"eaccelerator.compress_level="9" 增加eaccelerator目录 mkdir -p /tmp/eaccelerator ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 libevent cd /web/backup/softtar zvxf libevent-2.0.20-stable.tar.gzcd libevent-2.0.20-stable./configuremakemake installcd ../ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib64/libevent-2.0.so.5 ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 memcached cd /web/backup/softtar zvxf memcached-1.4.15.tar.gzcd memcached-1.4.15./configuremakemake installcd ../ 启动 memcached /usr/local/bin/memcached -d -m 100  -p 11211 -u root 内存小童鞋要注意了:这会以守护程序的形式启动 memcached(-d),为其分配 100m 内存(-m 100),并指定监听 localhost,即端口 11211 让 memcached 自动启动 vim /etc/rc.d/rc.local 在页尾加入以下代码 以www用户启动 /usr/local/bin/memcached -d -m 100  -p 11211 -u www 附上常用命令 -d 选项是启动一个守护进程, -m 是分配给Memcache使用的内存数量,单位是MB,这里是10MB -u 是运行Memcache的用户,这里是root -l 是监听的服务器IP地址,如果有多个地址的话,这里指定了服务器的IP地址192.168.0.122 -p 是设置Memcache监听的端口,这里设置了12000,最好是1024以上的端口 -c 选项是最大运行的并发连接数,默认是1024,这里设置了256,按照你服务器的负载量来设定 -P 是设置保存Memcache的pid文件 ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 PDO_MYSQL ln -s /web/soft/mysql/include/* /usr/local/include/cd /web/backup/softtar zxvf PDO_MYSQL-1.0.2.tgzcd PDO_MYSQL-1.0.2//web/soft/php/bin/phpize./configure --with-php-config=/web/soft/php/bin/php-config --with-pdo-mysql=/web/soft/mysqlmakemake installcd ../ 修改php配置文件,使其支持pdo vim /web/soft/php/etc/php.ini 在文件中搜索extension = "memcache.so"(刚才添加的代码) ,在下面增加 extension="pdo_mysql.so" 运行 /web/soft/php/bin/php -m 查看是否含有pdo_mysql 含有则成功 安装 php-fpm cp /web/soft/php/etc/php-fpm.conf.default /web/soft/php/etc/php-fpm.confvim /web/soft/php/etc/php-fpm.conf 修改以下地方   注意:以下代码每行所在的位置均不同,如果找到的代码前面有;要去除,后面的数字不一样也要修改,这个要注意 如何边编辑边查找? 找到对应行编辑后按下ESC再输入 /查找内容 查找就行了 [global]pid = run/php-fpm.pid-perror_log = log/php-fpm.logemergency_restart_threshold = 10emergency_restart_interval = 1mprocess_control_timeout = 5spm.start_servers = 20pm.min_spare_servers = 5pm.max_spare_servers = 20pm.max_children = 20 修改nginx,使其支持php vim /web/soft/nginx/conf/nginx.conf 找到并修改以下代码把前面#号去除 location ~ \.php$ {    root           html;    fastcgi_pass   127.0.0.1:9000;    fastcgi_index  index.php;    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;    include        fastcgi_params;} 将php-fpm 作为服务运行 cp /web/backup/soft/php-5.4.8/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpmchmod 700 /etc/init.d/php-fpm chkconfig --add php-fpm chkconfig --level 345 php-fpm on 服务方式启动php-fpm service php-fpm restart 现在我们来重启下服务器 reboot 重启成功后运行ps aux查看正在运行的进程 是否有nginx php-pfm mysql 有的话就说明成功了 ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 装好了服务器,有些童鞋可能要迫不及待想架设网站了今天太累了,明天继续更新怎么在服务器架设网站 (将以phpmyadmin、phpwind8.7、phpwind9.0、discuz2.5安装举例) ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 架设网站前先创建两个文件夹 config  用来存放nginx网站配置文件 logs  用来存放日志 mkdir /web/data/configmkdir /web/data/logs 再把 nginx 配置下 vim /web/soft/nginx/conf/nginx.conf 在文件尾部} 上面增加 include /web/data/config/*.conf; 此作用是设置nginx网站配置文件路径,以后新增网站就不要来编辑nginx.conf文件了,网站多时也方便管理 平滑重启nginx(以后每增加或修改nginx配置文件时都要重启) service nginx reload ------------------------- Re【原创】配置阿里云服务器CentosRedHat64位服务器 安装 phpMyadmin 先把用来访问phpMyadmin的域名解析到服务器 下载个最新的 3.5.3版本 下载地址 http://sourceforge.net/projects/ ... 1f2263b6722fa88ca82 备用地址 http://jaist.dl.sourceforge.net/ ... ll-languages.tar.gz 下载后把它传到/web/backup/code 此文件夹是用来放源码的 cd /web/backup/codetar zxvf phpMyAdmin-3.5.3-all-languages.tar.gz -C /web/www/ cd /web/wwwmv phpMyAdmin-3.5.3-all-languages/ phpmyadmin创建nginx配置文件 vim /web/data/config/phpmyadmin.conf输入以下内容( 代码里的www.phpmyadmin.com 改为自己要绑定的网址) server {    listen 80;    client_max_body_size 10M;    server_name www.phpmyadmin.com;    index index.php index.html index.htm;    root /web/www/phpmyadmin;    autoindex off;    location ~ .*\.(php|php5|php4|shtml|xhtml|phtml)?$ {        fastcgi_pass   127.0.0.1:9000;        include fastcgi.conf;    }        location ~ .*\.(ico|gif|jpg|jpeg|png|bmp|swf|js|css)$        {               expires 5d;          access_log off;        }    access_log  /web/data/logs/phpmyadmin.log;} 重启下Nginx service nginx reload 访问看看是否成功了
svaaa 2019-12-02 00:26:00 0 浏览量 回答数 0

云产品推荐

上海奇点人才服务相关的云产品 小程序定制 上海微企信息技术相关的云产品 国内短信套餐包 ECS云服务器安全配置相关的云产品 开发者问答 阿里云建站 自然场景识别相关的云产品 万网 小程序开发制作 视频内容分析 视频集锦 代理记账服务 阿里云AIoT