Welcome, Guest |
You have to register before you can post on our site.
|
Online Users |
There are currently 68 online users. » 1 Member(s) | 66 Guest(s) Google, Edwinliape
|
Latest Threads |
救砖救鸡方式三:克隆引导卷救机/甲骨文实例引导卷分...
Forum: VPS
Last Post: adahrzgj
08-11-2025, 07:01 AM
» Replies: 0
» Views: 583
|
PVE虚拟机更新软件包错误:command ‘ap...
Forum: WEB
Last Post: adahrzgj
08-06-2025, 08:18 AM
» Replies: 0
» Views: 221
|
iKuai 爱快软路由企业版 3.7.14 开心版...
Forum: WEB
Last Post: adahrzgj
07-29-2025, 11:45 AM
» Replies: 0
» Views: 379
|
nginx简单配置多个php服务实例教程
Forum: WEB
Last Post: adahrzgj
11-10-2023, 08:38 AM
» Replies: 0
» Views: 9,071
|
php修改上传附件大小限制
Forum: WEB
Last Post: adahrzgj
10-19-2023, 02:37 PM
» Replies: 0
» Views: 9,616
|
Ubuntu 自建安装Nginx+MySQL+PH...
Forum: WEB
Last Post: adahrzgj
10-19-2023, 02:35 PM
» Replies: 0
» Views: 8,847
|
傻瓜教程: Orac1e的实例如何进入救援模式
Forum: VPS
Last Post: adahrzgj
10-12-2023, 03:46 PM
» Replies: 0
» Views: 10,060
|
利用 GAE 扩展谷歌永久免费机的月流量
Forum: VPS
Last Post: adahrzgj
10-06-2023, 04:44 PM
» Replies: 0
» Views: 10,280
|
搞了个DNS解锁,发出来分享一下
Forum: VPS
Last Post: adahrzgj
09-17-2023, 02:44 PM
» Replies: 0
» Views: 10,522
|
设置itunel连接后自动备份
Forum: 生活
Last Post: adahrzgj
07-10-2023, 07:02 AM
» Replies: 0
» Views: 952
|
|
|
上传自己的docker |
Posted by: adahrzgj - 08-28-2022, 08:19 AM - Forum: WEB
- No Replies
|
 |
下载docker:
docker pull bitwardenrs/server:latest
修改tag:
docker tag bitwardenrs/server:latest adahrljp/bitwardenrs:latest
上传docker:
docker push adahrljp/bitwardenrs:latest
|
|
|
民间“48个不传之秘”,强烈建议收藏起来 |
Posted by: adahrzgj - 08-21-2022, 08:16 AM - Forum: 生活
- No Replies
|
 |
1、头痛(各种头痛均可):生白萝卜汁,每次滴鼻孔两滴(两鼻孔都滴),一日两次,连用4-5天,可除根。忌吃花椒、胡椒。
2、头晕(头昏眼花、晕眩):鸭蛋一个、赤豆20粒,搅匀蒸熟,早晨空服,每日一次,连用7天有特效。忌吃酒、辣。
3、失眠、多梦:睡前用半脸盆热水,加一两醋双脚浸泡20分钟,并生吃葱白1-2根。
4、干咳(感冒或其他原因引起均可):生黑芝麻3钱(约一调羹),冰糖适量,共捣碎开水冲早晨空服,3天痊愈,少吃鱼类。
5、高血压、高血脂:芹菜籽*一两,用纱布包好,放10斤水煎汤,早、中、晚饮1杯。不怕辣者,可,早中晚食生蒜2头,有降血压、血脂特效。
6、消化不良(儿童消化不良同):鸡盹皮4两炒黄研成粉,饭前用白糖水冲服、一日二次,一次2钱(约半调羹)、儿童减半、一剂服完即可,忌吃田螺。
7、糖尿病:猪胰一条,冬瓜皮1两,加水煮熟(生吃亦佳),少加些油、盐和调料(勿加酒、糖)吃下,一日一剂,连吃20天。
8、记忆力差:鹅蛋一只,打入碗内加适量白糖搅匀,蒸熟早晨空服,连吃5天,有清脑益智功能,对增强记忆有特效,忌吃海带、花椒、动物血、酒、绿豆.
9、小便失禁(尿急、控制不住):鸡肠一付,洗净晒干,炒黄研成粉,用黄酒送服,每次1钱,一日三次,服完即愈。忌姜、辣。
10、便秘(大便燥结、排便困难):用煮熟的南瓜一碗,加入猪油5钱和适量的盐吃下,一日一次,一次见效,3日可愈。
11、打鼾:花椒5-10粒,睡前用开水泡一杯水,待水凉后服下(花椒不服下),连服5天,以后再也不打鼾。
12、中风:每日喝1两生芹菜只汁,病轻者服半月,病重者服一月可愈,忌吃羊肉、鸭血。
13、腹痛(成人腹痛同):用一片桔皮敷在肚脐上。再用半斤盐炒热(不要太烫),敷在桔皮上,可立即止痛。
14、误食杂物:韭菜半斤,不要切碎,炒熟多加些猪油,一次吃光,杂物可随大便排出。
15、磨牙:每晚睡前吃一块生桔皮,连吃2-3天,可治小儿及成人睡觉磨牙。
16、流口水(成人、老人睡觉流口水方法同):泥鳅半斤,去内脏晒干,炒黄研成粉,用黄酒冲服,一次二钱,一日一次,服完即可。
17、颈椎痛:羊骨头(生的,煮过均可)二两,砸碎炒黄,浸白酒1斤,三日后擦颈部,一日三次,一般不过15天,可以根治。
18、腿抽筋:桑树果*一两,煎一碗汤一次喝下,一日二次,5天痊愈。
19、落枕(睡觉时由于枕头或姿势不适,而引起的颈痛):韭菜汁加热擦颈部,日擦七八次。2-3天可治好。
20、戒烟:干南瓜藤*一两,煎一碗汤加适量红糖一次服,一日三次,7天后永不想抽烟。
21、戒酒:活黄鳝一条,放一瓶白酒内浸二天后此酒,1次1-2两,一日三次,将酒服完后永远不想再喝一滴酒。
22、喝酒不醉:葛根*1钱,在喝酒前泡一杯开水喝下再喝酒,酒精可解,所以人不会醉。
23、手气、脚气:生大蒜头两只,去皮放入半斤醋内泡3天,再用大蒜头擦患处,每日3次。连用7-10日,有消炎和杀死细菌之特效。
24、手汗、脚汗太多:明矾*5钱、热水2斤,一起溶化浸手脚、一次10分钟、浸后让其自然凉干,一日一次,5天后手脚汗正常。
25、手足开裂、粗糙:生猪油二两,加白糖1钱。捣匀擦手脚,一日2-3次。一般7天克愈,再擦几天以后永不复发。
26、烫伤:可选用蛋清、白糖水、醋、蜂蜜、在烫伤时马上涂伤处,就不会起泡又易好。
27、蚊虫咬伤(红肿、痒):用醋、牙膏、盐水、香烟灰加水调匀涂,均可立即见效止痒、解毒消肿。
28、牙痛(神经性、过敏性、蛀牙痛均可):花椒10粒,白酒一两,将花椒浸在酒内,十分钟后用酒口含,几分钟即见效,一日2次每次10分钟,3-4 天痊愈。
29、牙周炎、牙龈炎:用一只鸡蛋清加等量白酒搅匀喝一口,含口中,5分钟后吐掉,一日二次(一日一只蛋),2-3天消炎止痛。
30、牙出血(经常出血或刷牙引起):花椒10粒,醋三两,浸2天后口含,一次3分钟,一日2次,连用5天有特效。
31、视力衰退(老光、老花、视物不清):白菊花*2钱,枸杞子*2钱,每日用开水泡饮(一剂可泡三遍),连饮半至一月,有清水明目之功效。忌吃辣物、海带。
32、白内障(晶状浑浊、使视力下降):白蒺藜*250克,羊肝250克,白糖200克,研为末,每次服15克,日服2次,8周见效。
33、咽喉痛(咽部干燥疼痛、有异物感,急、慢性均可):用绿茶叶泡浓茶约2两水量,加入半两蜂蜜搅匀,每日分几次漱喉并慢咽下,每日一剂,连用3-5天,消炎镇痛,湿润咽喉,治急、慢性咽喉炎。忌吃烟、酒,一切有刺激性食物。
34、扁桃体炎(嗓子二侧发起红肿、痛、一般多发于着凉后):黑木耳一两,炒干研成粉,每次用半调羹粉与蜂蜜调匀口服,一日二次连服5天永不再发(此方在扁桃体炎正在发作时用)。
35、声音哑(咳嗽、讲话太多、唱歌、内火大等原因引起的音哑):鸡蛋一只、打入碗内,加醋一条羹、搅匀蒸熟食用,一日一剂,连吃2-3天,声音响亮。忌辣。
36、口臭:芦根(鲜、干均可)一两,煎汤一碗加冰糖适量内服,一日一次,早晨空服,连服一星期。清火解毒,治内热胃火。
37、鱼刺卡喉:较轻者用好醋喝一口即可。如果不行,可用鸭口水一调羹喝下,鱼刺可自动化掉。(取鸭口水法:用一片生姜,放入鸭嘴内,再将鸭倒吊,鸭即流口水)。
38、流鼻血:藕节*、芦根*等量,一起切碎,煎一碗水一次喝下,一日二次,连用5日,清热止血,永不复发。
39、除面部皱纹:鲜黄瓜汁二调羹,加入等量鸡蛋清(约一只蛋)搅匀,每晚睡前先洗脸,再涂抹面部皱纹处,次日晨用温水洗净,连用半至一月,能使皮肤逐渐收缩,消除皱纹有特效.
40、皮肤粗黑:靠化妆品增白皮肤,只能一时掩饰,治表不治本,现向你介绍一种治表治本能使皮肤增白而真白的妙方,既简单又有特效:用白醋甘油按 5:1混合,常擦皮肤(一日二三次)能使皮肤湿润,减少黑色素沉积,一月后皮肤即细腻白嫩,洁净光滑富有弹性,充满美感。(此方对遗传黑皮肤均有效).
41、除面部色素斑:鲜西红柿汁蜂蜜,按5:1混合,涂面部,过10分钟后洗净,连用10-15日,能使黑色素分解,皮肤变白红润.
42、脱发头屑头痒:每次用桑树根皮*4钱,水二斤,烧开洗头,一日一次,洗后勿用清水过头连用5天,能促进头皮血液循环,有固发作用,并治头屑头痒,可再生发.
43、斑秃秃顶:用老姜片每日擦头皮3-5次,与42条同用半月,以后不出一两月便会重新长出一头浓发.
44、头发增亮:啤酒醋按2:1混合.每日用毛巾吸湿再涂头发一次,连用半月.
45、白发变黑:何首乌*黑芝麻各三两,一起炒干研碎,用白糖水调服,每次3钱,一日一次,连服半月,可补肾健发.忌蚕豆.
46、减肥:干荷叶*干冬瓜皮*按1:2配好,每日用一两泡一斤 左右热水喝,有去厚腻刮油手之功效,忌肥肉.
47、牙变白:用食盐小苏打等量,加入调成牙膏状,每日刷牙一次,3-4天可除牙齿表层所有色斑,使牙齿洁白.
48、长期咳嗽(肺气肿及气管炎等引起咳嗽):明矾一两,研成粉用醋调成糊状,每晚睡前取黄豆大一团敷足心(涌泉穴,两足都敷),用布包好、次日晨揭去,连用7天有特效
|
|
|
Linux 导入、导出 MySQL 数据库命令 |
Posted by: adahrzgj - 08-21-2022, 08:15 AM - Forum: WEB
- No Replies
|
 |
一、导出数据库
1、导出完整数据:表结构+数据
Linux 下可以使用 mysqldump 命令来导出数据库,语法格式如下:
mysqldump -u用户名 -p 数据库名 > 数据库名.sql
以下命令可以导出 abc 数据库的数据和表结构:
# /usr/local/mysql/bin/mysqldump -uroot -p abc > abc.sql
按下回车键后会提示输入密码,输入即可。
注意:mysqldump 命令路径是根据你 MySQL 安装路径决定的。
2、只导出表结构
如果你只需要导出 MySQL 的数据表结构,可以使用 -d 选项,格式如下:
mysqldump -u用户名 -p -d 数据库名 > 数据库名.sql
以下命令可以导出 abc 数据库的表结构:
#/usr/local/mysql/bin/mysqldump -uroot -p -d abc > abc.sql
二、导入数据库
使用 mysql 命令导入
使用 mysql 命令导入数据库格式如下:
mysql -u用户名 -p 数据库名 < 数据库名.sql
以下实例将备份的数据库 abc.sql 导入到数据库中:
# mysql -uroot -p123456 < abc.sql
使用 source 命令导入
使用 source 命令需要我们先登录到 mysql 中,并创建一个空的数据库:
mysql> create database abc; # 创建数据库
mysql> use abc; # 使用已创建的数据库
mysql> set names utf8; # 设置编码
mysql> source /home/abc/abc.sql # 导入备份数据库
注意你备份的 sql 文件路径。
|
|
|
Docker 备份、恢复及迁移 |
Posted by: adahrzgj - 08-21-2022, 08:15 AM - Forum: WEB
- No Replies
|
 |
Docker—备份、恢复及迁移
用容器生成镜像
[root@git docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e950a988d058 twang2218/gitlab-ce-zh "/assets/wrapper" 2 hours ago Up 2 hours (healthy) 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:2222->22/tcp gitlab-wahaha
[root@git docker]# docker commit e950a988d058 gitalb-zh
sha256:dd61a1ec3cdc782d6076e47afc10a35e19700a9ad56df6630a8c1de1c1c105c3
[root@git docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
gitalb-zh latest dd61a1ec3cdc 6 seconds ago 1.72 GB
docker.io/twang2218/gitlab-ce-zh latest 1f71f185271a 9 days ago 1.63 GB
备份:
查看镜像
[root@git docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/twang2218/gitlab-ce-zh latest 1f71f185271a 9 days ago 1.63 GB
docker save -o [tar包真实路径] [镜像名 ](ID也可以)
ocker save -o /opt/docker-gitlab-ce-zh.tar docker.io/twang2218/gitlab-ce-zh
恢复:
docker load -i [tar包真实路径]
docker load -i /opt/docker-gitlab-ce-zh.tar
导出:是根据容器的 ID 进行导出镜像
[root@git docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e950a988d058 twang2218/gitlab-ce-zh "/assets/wrapper" 3 hours ago Up 3 hours (healthy) 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:2222->22/tcp gitlab-wahaha
[root@git docker]# docker export e950a988d058 > /opt/gitlab-zh.tar
[root@git docker]# ls -lh /opt/
total 3.1G
-rw------- 1 root root 1.7G Mar 20 02:16 docker-gitlab-ce-zh.tar
-rw-r--r-- 1 root root 1.5G Mar 20 02:38 gitlab-zh.tar
可以看出导出的镜像比备份的镜像小很多,是因为导出的镜像没历史数据,不能回滚
导入:
[root@git docker]# docker import - git-mast < /opt/gitlab-zh.tar
git-mast镜像名(注意中间的 - )
[root@git docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
git-mast latest 6dfab05161f9 14 seconds ago 1.49 GB
docker/gitlab-zh latest aebe317ba2a3 16 minutes ago 1.72 GB
gitalb-zh latest dd61a1ec3cdc 25 minutes ago 1.72 GB
docker.io/twang2218/gitlab-ce-zh latest 1f71f185271a 9 days ago 1.63 GB
注:导出 export 与 保存 save 的区别
(1).export导出的镜像文件大小 小于 save保存的镜像
(2).export 导出(import导入)是根据容器拿到的镜像,再导入时会丢失镜像所有的历史,所以无法进行回滚操作(docker tag <LAYER ID> <IMAGE NAME>);而save保存(load加载)的镜像,没有丢失镜像的历史,可以回滚到之前的层(layer)。(查看方式:docker images --tree)
|
|
|
acme.sh 更换CA |
Posted by: adahrzgj - 08-21-2022, 08:12 AM - Forum: WEB
- No Replies
|
 |
acme.sh --issue -d mjjjd.eu.org -d *.mjjjd.eu.org -w /usr/local/ServerStatus/web
acme.sh --installcert -d mjjjd.eu.org -d *.mjjjd.eu.org --key-file /etc/nginx/ssl/mjjjd.eu.org.key --fullchain-file /etc/nginx/ssl/mjjjd.eu.org.cer --reloadcmd "service nginx reload" --reloadcmd "chown -R www-data /etc/nginx/ssl/"
*******************************************************************************************************************
安装 acme.sh
安装很简单, 一个命令:
curl https://get.acme.sh | sh
普通用户和 root 用户都可以安装使用.
安装过程进行了以下几步:
1) 把 acme.sh 安装到你的 home 目录下:
1
~/.acme.sh/
并创建 一个 bash 的 alias, 方便你的使用: alias acme.sh=~/.acme.sh/acme.sh
2). 自动为你创建 cronjob, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书.
更高级的安装选项请参考: https://github.com/Neilpang/acme.sh/wiki/How-to-install
安装过程不会污染已有的系统任何功能和文件 , 所有的修改都限制在安装目录中: ~/.acme.sh/
*********************************************************************************************************************
1. 切换CA
当前acme.sh使用的默认CA机构为zeroSSL,通过--set-default-ca命令,可以修改默认的CA机构,该命令使用--server参数来指定CA机构名称。
切换默认CA为Let's Encrypt:
acme.sh --set-default-ca --server letsencrypt
更换默认CA为ZeroSSL:
acme.sh --set-default-ca --server zerossl
2. webroot模式
webroot模式要求在服务器上已经运行了http服务,并且可以通过公网访问,该模式的好处是,你无需在申请证书的过程中停止web服务,因此,该模式也是推荐使用的模式。
使用webroot模式申请证书时,acme.sh会在网站对应域名的webroot目录下生成域名验证文件, 然后通过公网访问之,以验证对域名的所有权。验证完毕后,acme.sh会清除这些临时生成的文件。
申请证书使用--issue命令:
acme.sh --issue -d example.com -d test.com -w /home/webroot
-d参数指定域名,多个域名使用多个-d参数,第一个-d参数指定的域名即证书的主体名称,其它-d参数指定的域名为证书的可选主体名称。
-w参数指定的是域名的webroot目录,以example.com为例,-w参数的值即是http://example.com对应的webroot目录。如果使用多个-d参数同时指定了多个域名,则所有这些域名必须对应同一个webroot目录;另外,当前系统用户必须具有webroot目录的写入权限。
● 常见错误:
a. -w参数指定的路径有误
b. 域名对应的站点无法通过公网访问(防火墙阻断、http服务没有运行等)
出现以上错误,则acme.sh指定的CA将无法下载到acme.sh生成的域名验证文件,并在重试30次之后报出Timeout错误:
Processing, The CA is processing your order, please just wait. (29/30)
example.com:Timeout
c. 另外,如果当前系统用户没有-w参数指定的webroot目录的写入权限,将导致acme.sh无法创建域名验证文件。
● -w参数进阶:
需要进一步说明的时,对于-w参数,其实有着更加准确的解释。
在验证域名的所有权时,具体来说,acme.sh会在网站的webroot目录下创建.well-known目录,然后再在其中生成验证文件。因此,-w参数指定的路径实际为域名之下,/.well-known位置对应的路径。
例如,对于站点:
Example Domain
-w对应的路径为以下链接对应的目录:
http://example.com/.well-known
即acme.sh域名验证的原理是:acme.sh在-w参数指定的路径下创建.well-known文件夹,并在其中生成域名验证文件;然后,acme.sh对应的CA通过访问http://example.com/.well-known链接,到-w参数指定的路径下去寻找域名验证文件。
以下面的nginx配置为例:
server {
listen 80;
server_name example.com;
root /home/site/example;
location /.well-known {
root /home/site/dancen;
}
location ~* .(gif|jpg|jpeg|png|bmp)$ {
expires 90d;
}
}
example.com站点的webroot目录为:
/home/site/example
而location定义的/.well-known位置对应的webroot目录为:
/home/site/dancen
那么,通过webroot模式为站点申请证书时,-w参数指定的路径不是server配置段指定的webroot目录:/home/site/example,而应该是location配置段定义的/.well-known位置对应的webroot目录:/home/site/dancen。
最终,为站点example.com申请证书的命令为:
acme.sh --issue -d example.com -w /home/site/dancen
● 利用.well-known为多个域名同时申请证书
正如前文所述,当使用多个-d参数同时为多个域名申请证书时,要求这些域名必须对应相同的webroot目录。此处再结合.well-known的特性可知,这些域名实际上没有必要对应相同的webroot目录,只需要这些域名之下的/.well-known位置对应的路径相同就可以了。
因此,在同时为多个域名申请证书时,我们可以合理配置使用同一个证书的各个站点的/.well-known位置,令其指向同一目录即可,而不必去修改每个站点的webroot目录为同一路径,从而可以降低这一要求对业务配置的影响。
以下面的nginx配置为例:
server {
listen 80;
server_name example.com;
root /home/site/example;
location /.well-known {
root /home/site/dancen;
}
location ~* .(gif|jpg|jpeg|png|bmp)$ {
expires 90d;
}
}
server {
listen 80;
server_name test.com;
root /home/site/test;
location /.well-known {
root /home/site/dancen;
}
location ~* .(gif|jpg|jpeg|png|bmp)$ {
expires 90d;
}
}
当同时为域名example.com和test.com申请证书时,它们可以使用不同的webroot目录,只需要域名之下的/.well-known位置对应相同的路径即可,为它们申请证书的命令为:
acme.sh --issue -d example.com -d test.com -w /home/site/dancen
3. nginx webroot模式
如果服务器上运行的http服务为nginx,并且当前系统用户具有修改nginx配置的权限,则可以通过nginx模式生成证书。
通过--nginx参数使用nginx模式:
acme.sh --issue --nginx -d example.com -d www.example.com
该命令相比于webroot模式增加了--nginx参数,同时省略了-w参数。该命令会自动修改nginx配置并重新加载之以适配域名的验证要求,所以无需-w参数。另外,acme.sh会在域名验证完毕后自动将nginx配置还原,因此,nginx配置最终并没有被修改。
特殊的情况是acme.sh可能无法识别nginx配置文件所在位置,此时,可以明确指定:
acme.sh --issue -d example.com --nginx /etc/nginx/nginx.conf
4. standalone模式
如果服务器的tcp 80端口空闲可用,则可通过standalone模式生成证书。该模式下,acme.sh 自己运行一个webserver, 临时监听在80 端口, 完成验证:
acme.sh --issue --standalone -d example.com -d www.example.com
如果服务器已经占用了80端口,可以通过--httpport参数使用80以外的端口:
acme.sh --issue --standalone -d example.com -d www.example.com --httpport 88
需要指出的是,standalone模式下,acme.sh会自己运行一个webserver,依赖的是socat,需要提前安装:
yum install socat
5. standalone ssl模式
这是另一个standalone模式,使用了ssl,要求服务器的tcp 443端口空闲可用:
acme.sh --issue --alpn -d example.com -d www.example.com
可以通过--tlsport参数使用443以外的端口:
acme.sh --issue --alpn -d example.com -d www.example.com --tlsport 8443
6. DNS手动模式
webroot模式和standalone模式可以统称为http模式,即证书验证服务器通过http协议下载acme.sh客户端在域名指向的服务器上生成的验证文件来验证域名所有权。
在某些情况下,我们可能无法使用http模式,例如:
> 没有域名所指向的服务器的管理权限。
> 域名使用了CDN并设置了多个源站:由于验证文件只会在其中一个源站上生成,验证服务器将不能确保能够下载到验证文件。
此时,我们可以使用更加传统的DNS模式来生成证书,DNS模式要求用户在指定域名上设置指定的TXT记录值,已验证其对域名的所有权。
使用DNS模式生成证书需要3个步骤:
1). 指定dns模式,并声明已了解如何使用,生成TXT记录值。
acme.sh --issue --dns -d example.com -d www.example.com \
--yes-I-know-dns-manual-mode-enough-go-ahead-please
使用DNS手动模式时,需通过--yes-I-know…参数声明已了解该模式的用法,否则,命令将会提示该模式的参考链接,不会实际执行。
执行命令后,将会获得以下输出:
Add the following txt record:
Domain:_acme-challenge.example.com
Txt value:9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c
Add the following txt record:
Domain:_acme-challenge.www.example.com
Txt value:9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Please add those txt records to the domains. Waiting for the dns to take effect.
2). 配置DNS记录。
按照上一个步骤中的提示,到DNS服务提供商的控制台,为指定的域名添加指定的TXT记录,并等待一段时间,令DNS修改生效。
3). 生成证书。
回到acme.sh,使用--renew命令生成证书。
acme.sh --renew -d example.com -d www.example.com
需要指出的是,DNS手动模式中生成的域名TXT记录值是一次性的,因此,acme.sh无法在该模式下自动更新证书,当证书过期时,你必须手动重新生成证书。
7. DNS自动模式
DNS自动模式可以使用域名解析商提供的api自动为域名添加txt记录以完成域名所有权验证,不同于DNS手动模式,DNS自动模式支持自动更新证书。
acme.sh目前支持cloudflare,dnspod,aliyun,cloudxns,godaddy以及ovh等数十种解析商的自动集成。
以阿里云为例,DNS自动模式使用步骤如下:
1). 登录DNS提供商控制台,获取账户的api授权ID和密码。
阿里云地址:
https://ram.console.aliyun.com/manage/ak
获取AccessKeyId和AccessKeySecret。
2). 为acme.sh配置系统变量,存储api授权ID和密码。
export Ali_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export Ali_Secret="jlsdflanljkljlfdsaklkjflsa"
3). 生成证书。
acme.sh --issue --dns dns_ali -d example.com -d www.example.com
该命令从系统变量中读取aliyun的api授权ID和密码,并通过dns_ali参数指定DNS提供商为阿里云。该命令将通过api自动为指定域名添加txt记录,并在验证完毕后自动移除txt记录。
aliyun的api授权ID和密码将被保存在.acme.sh的账户配置文件中,以供将来自动更新证书时使用,存储位置为:
~/.acme.sh/account.conf
更多DNS提供商的DNS自动模式使用方法请参考:
dnsapi · acmesh-official/acme.sh Wiki · GitHub
8. 生成ECC证书
目前大部分的证书都是使用RSA非对称加密算法,但一些CA,例如letsencryption、zerossl等,已经支持颁发性能更加优良的ECC非对称加密算法证书。
通过—keylength参数申请ECC证书:
acme.sh --issue -w /home/webroot -d example.com -d example1.com --keylength ec-256
--keylength参数指定算法,ec-256表示256位的ecc非对称加密算法,可选的值有:
> ec-256 (prime256v1, "ECDSA P-256")
> ec-384 (secp384r1, "ECDSA P-384")
> ec-521 (secp521r1, "ECDSA P-521", which is not supported by Let's Encrypt yet.)
9. 生成泛域名证书
泛域名证书的生成只适用于DNS验证的方式:
acme.sh --issue -d example.com -d '*.example.com' --dns dns_cf
10. 强制生成证书
如果想在当前证书剩余有效期在30天以上时重新生成证书,需要使用--force参数。
acme.sh --issue --nginx -d example.com -d www.example.com --force
三. 更新证书
默认情况下acme.sh会自动更新即将过期的证书,手动执行更新的方式如下:
acme.sh --renew -d example.com
如果是ecc证书:
acme.sh --renew -d example.com --ecc
acme.sh只会更新有效期不足30天的证书,如果想强制更新,则增加—force参数:
acme.sh --renew -d example.com --force --ecc
停止更新证书:
acme.sh --remove -d example.com [--ecc]
该命令执行之后,指定的证书不会再自动更新,但对应的证书文件并不会被从硬盘上删除。
四. 部署证书
当acme.sh生成证书后,不宜直接将web服务器的证书路径指向证书的生成路径:
~/.acme.sh/[domain]
因为该目录仅供acme.sh内部使用,有可能被修改。正确的做法是将证书文件拷贝至另外的目录。
1. 直接拷贝
可以直接通过拷贝命令直接拷贝证书文件,对应修改web服务器配置即可。
2. 也可以通过--install-cert命令部署
通过acme.sh的--install-cert命令来拷贝证书,并令web服务重新加载配置,需要注意的是,--install-cert命令并不会去修改web服务器的配置,因此,需要提前修改web服务器配置,将证书以及私钥路径指向部署路径,以nginx为例:
acme.sh --install-cert -d example.com \
--key-file /path/to/keyfile/in/nginx/key.pem \
--fullchain-file /path/to/fullchain/nginx/cert.pem \
--reloadcmd "service nginx force-reload"
--reloadcmd参数用于重新加载nginx配置。一个小提醒,这里用的是service nginx force-reload,不是service nginx reload。据测试,nginx的reload信号能够重新加载配置,但并不会重新加载证书,所以需要使用force-reload。nginx实际上没有force-reload这一信号,force-reload的实质为stop,然后start,即重启nginx。
示例:
acme.sh --install-cert -d example.com \
--key-file /etc/nginx/ssl/example.com.key \
--fullchain-file /etc/nginx/ssl/example.com.fullchain.cer \
--reloadcmd "/usr/sbin/nginx -s stop && /usr/sbin/nginx"
在示例中,由于nginx没有注册为service,因此直接使用了nginx的停止和启动命令来重启nginx。
需要补充的是,这里指定的参数,包括证书拷贝的目的地,web服务器的重启命令等,都会被acme.sh自动记录下来,存储到对应证书的配置文件中。以证书example.com为例,存储路径为:
~/.acme.sh/example.com/example.com.conf
并且,在将来证书自动更新以后, --install-cert命令将被再次自动调用,以免去手动拷贝证书,以及重导web服务器配置的操作。
五. 查看证书列表
查看已经生成的证书:
acme.sh --list
六. 更新acme.sh
手动更新:
acme.sh --upgrade
开启自动更新:
acme.sh --upgrade --auto-upgrade
关闭自动更新:
acme.sh --upgrade --auto-upgrade 0
七. 查看acme.sh报错
如果运行acme.sh出错,可开启debug或者log。
查看debug:
acme.sh --issue ..... --debug
查看error:
acme.sh --issue ..... --debug 2
生成日志:
acme.sh --issue ..... --log
日志文件路径为:
~/.acme.sh/acme.sh.log
————————————————
版权声明:本文为CSDN博主「Dancen」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Dancen/article/details/121044863
|
|
|
Nginx配置虚拟主机(多网站) |
Posted by: adahrzgj - 08-21-2022, 08:12 AM - Forum: WEB
- No Replies
|
 |
假要你所在的公司由于预算问题,现在只能提供一台服务器,但是有以下几个网站:www.yourmall.com, m.yourmall.com,www.yourcrm.com需要部署,并且你已经根据我们上一篇文章中安装配置了,实现以下需求。
www.yourmall.com是公司的电子商务平台。
m.yourmall.com 是公司的电子商务平台子站,用于移动端用户的访问。
www.yourcrm.com 是公司的用户关系管理系统。
现在为以上网站在服务器上规划目录,创建一个目录:/var/sites,为上面三个站点分别创建一个目录:
www.yourmall.com对应创建的目录为: /var/sites/yourmall
m.yourmall.com 对应创建的目录为: /var/sites/m_yourmall
www.yourcrm.com 对应创建的目录为: /var/sites/yourcrm
如下图所示 -
[root@localhost sites]# mkdir /var/sites/yourmall
[root@localhost sites]# mkdir /var/sites/m_yourmall
[root@localhost sites]# mkdir /var/sites/yourcrm
[root@localhost sites]# pwd
/var/sites
[root@localhost sites]# ll
total 0
drwxr-xr-x. 2 root root 6 Apr 28 04:23 m_yourmall
drwxr-xr-x. 2 root root 6 Apr 28 04:23 yourcrm
drwxr-xr-x. 2 root root 6 Apr 28 04:23 yourmall
[root@localhost sites]#
1. 第一个域名/网站配置
打开Nginx的配置文件:/usr/local/nginx/conf/nginx.conf ,并在 http 块下加入以下子块server,如下配置内容所示 -
# vhost for yourmall.com configure.
server {
listen 80;
server_name www.yourmall.com yourmall.com;
#charset koi8-r;
#access_log logs/yourmall.access.log main;
location / {
root /var/sites/yourmall;
index index.html index.html;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/sites/yourmall;
}
location ~ \.php$ {
root /var/sites/yourmall;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name;
include fastcgi_params;
}
}
现在,完整的Nginx配置文件:/usr/local/nginx/conf/nginx.conf的内容如下所示 -
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.html;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.html;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.html;
# }
#}
# vhost for yourmall.com configure.
server {
listen 80;
server_name www.yourmall.com yourmall.com;
#charset koi8-r;
#access_log logs/yourmall.access.log main;
location / {
root /var/sites/yourmall;
index index.html index.html;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/sites/yourmall;
}
location ~ \.php$ {
root /var/sites/yourmall;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name;
include fastcgi_params;
}
}
}
在目录 /var/sites/yourmall 下创建一个文件:index.html用于测试网站的配置情况,其代码如下 -
<!DOCTYPE html>
<html>
<head>
<title>Welcome To Yourmall.com</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>欢迎您访问:Yourmall.com </h1>
<p>这是 Yourmall.com 的首页,仅用于Nginx的虚拟机配置测试演示。</p>
<p>
<a href="http://www.yiibai.com/">yourmall.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
现在,重新加载Nginx配置文件,在加载配置文件之前,最好先测试一下配置文件语法是否正确,使用以下命令来测试 -
[root@localhost sites]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost sites]#
然后执行重新加载Nginx配置文件 -
[root@localhost sites]# /usr/local/nginx/sbin/nginx -s reload
[root@localhost sites]#
到了这一步,我们来看看网站 www.yourmall.com 是否配置成功,接下来我们要访问这个域名,看能不能看到我们在上面写入的 index.html 文件中的内容。在测试访问www.yourmall.com 域名之前,我们还要对这个域名进行映射(外网称为解析)。在局域网内的一台Windows计算机上打开文件 C:\Windows\System32\drivers\hosts,在这个文件的最后一行加入以下内容 -
192.168.0.134 www.yourmall.com
192.168.0.134 yourmall.com
注意:在这里,192.168.0.134 是配置Nginx服务器的IP,如果你的服务器不是这个IP,请写上对应的服务器IP。
现在,打开浏览器,访问以下网站域名: www.yourmall.com 或 yourmall.com ,没有错误,应该会看到以下界面 -
就这样,第一个网站的配置完成了!
2. 第二个域名/网站配置
现在,我们来配置第二个网站:m.yourmall.com, 假设 m.yourmall.com 这个网站它是 www.yourmall.com 的二级域名网站,主要用于服务主站 www.yourmall.com 的移动端访问用户。
打开Nginx的配置文件:/usr/local/nginx/conf/nginx.conf ,并在 http 块下加入以下子块server,如下配置内容所示 -
# 手机/移动端网站 vhost for m.yourmall.com configure.
server {
listen 80;
server_name m.yourmall.com;
#charset koi8-r;
#access_log logs/m_yourmall.access.log main;
location / {
root /var/sites/m_yourmall;
index index.html index.html;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/sites/m_yourmall;
}
location ~ \.php$ {
root /var/sites/m_yourmall;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name;
include fastcgi_params;
}
}
现在,完整的Nginx配置文件:/usr/local/nginx/conf/nginx.conf的内容如下所示 -
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.html;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name;
include fastcgi_params;
}
}
# vhost for yourmall.com configure.
server {
listen 80;
server_name www.yourmall.com yourmall.com;
#charset koi8-r;
#access_log logs/yourmall.access.log main;
location / {
root /var/sites/yourmall;
index index.html index.html;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/sites/yourmall;
}
location ~ \.php$ {
root /var/sites/yourmall;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name;
include fastcgi_params;
}
}
# 手机/移动端网站 vhost for m.yourmall.com configure.
server {
listen 80;
server_name m.yourmall.com;
#charset koi8-r;
#access_log logs/m_yourmall.access.log main;
location / {
root /var/sites/m_yourmall;
index index.html index.html;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/sites/m_yourmall;
}
location ~ \.php$ {
root /var/sites/m_yourmall;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name;
include fastcgi_params;
}
}
}
在目录 /var/sites/m_yourmall 下创建一个文件:index.html用于测试网站的配置情况,其代码如下 -
<!DOCTYPE html>
<html>
<head>
<title>Welcome To Yourmall.com</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>欢迎您访问:m.yourmall.com </h1>
<p>这是 Yourmall.com 主站的子域名:<a href="http://www.yiibai.com/">m.yourmall.com</a> ,仅用于Nginx的虚拟机配置测试演示。</p>
<p>
<a href="http://www.yiibai.com/">m.yourmall.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
现在,重新加载Nginx配置文件,在加载配置文件之前,最好先测试一下配置文件语法是否正确,使用以下命令来测试 -
[root@localhost sites]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost sites]#
然后执行重新加载Nginx配置文件 -
[root@localhost sites]# /usr/local/nginx/sbin/nginx -s reload
[root@localhost sites]#
到了这一步,我们来看看网站 m.yourmall.com 是否配置成功,接下来我们要访问这个域名,看能不能看到我们在上面写入的 index.html 文件中的内容。在测试访问m.yourmall.com 域名之前,我们还要对这个域名进行映射(外网称为解析)。在局域网内的一台Windows计算机上打开文件 C:\Windows\System32\drivers\hosts,在这个文件的最后一行加入以下内容 -
192.168.0.134 m.yourmall.com
注意:在这里,192.168.0.134 是配置Nginx服务器的IP,如果你的服务器不是这个IP,请写上对应的服务器IP。
现在,打开浏览器,访问以下网站域名: m.yourmall.com 没有错误,应该会看到以下界面 -
就这样,第二个网站(子域名)的配置完成了!
3. 第三个域名/网站配置
接下来,我们来配置第三个网站:www.yourcrm.com, 假设 www.yourcrm.com 这个网站它是一个客户管理系统,主要记录客户信息的管理网站。
注意:配置这个网站与第一个网站类似,只是指定/使用文件目录不太一样。
打开Nginx的配置文件:/usr/local/nginx/conf/nginx.conf ,并在 http 块下加入以下子块server,如下配置内容所示 -
# 客户管理系统 vhost for yourcrm.com configure.
server {
listen 80;
server_name www.yourcrm.com yourcrm.com;
#charset koi8-r;
#access_log logs/yourcrm.access.log main;
location / {
root /var/sites/yourcrm;
index index.html index.html;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/sites/yourcrm;
}
location ~ \.php$ {
root /var/sites/yourcrm;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name;
include fastcgi_params;
}
}
现在,完整的Nginx配置文件:/usr/local/nginx/conf/nginx.conf的内容如下所示 -
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.html;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name;
include fastcgi_params;
}
}
# vhost for yourmall.com configure.
server {
listen 80;
server_name www.yourmall.com yourmall.com;
#charset koi8-r;
#access_log logs/yourmall.access.log main;
location / {
root /var/sites/yourmall;
index index.html index.html;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/sites/yourmall;
}
location ~ \.php$ {
root /var/sites/yourmall;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name;
include fastcgi_params;
}
}
# 手机/移动端网站 vhost for m.yourmall.com configure.
server {
listen 80;
server_name m.yourmall.com;
#charset koi8-r;
#access_log logs/m_yourmall.access.log main;
location / {
root /var/sites/m_yourmall;
index index.html index.html;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/sites/m_yourmall;
}
location ~ \.php$ {
root /var/sites/m_yourmall;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name;
include fastcgi_params;
}
}
# 客户管理系统 vhost for yourcrm.com configure.
server {
listen 80;
server_name www.yourcrm.com yourcrm.com;
#charset koi8-r;
#access_log logs/yourcrm.access.log main;
location / {
root /var/sites/yourcrm;
index index.html index.html;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/sites/yourcrm;
}
location ~ \.php$ {
root /var/sites/yourcrm;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name;
include fastcgi_params;
}
}
}
在目录 /var/sites/yourcrm 下创建一个文件:index.html用于测试网站的配置情况,其代码如下 -
<!DOCTYPE html>
<html>
<head>
<title>Welcome To YourCrm.com</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>欢迎您访问:yourcrm.com </h1>
<p>这是 yourcrm.com 网站的首页 ,仅用于Nginx的虚拟机配置测试演示。</p>
<p>
<a href="http://www.yiibai.com/">yourcrm.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
现在,重新加载Nginx配置文件,在加载配置文件之前,最好先测试一下配置文件语法是否正确,使用以下命令来测试 -
[root@localhost sites]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost sites]#
然后执行重新加载Nginx配置文件 -
[root@localhost sites]# /usr/local/nginx/sbin/nginx -s reload
[root@localhost sites]#
到了这一步,我们来看看网站 www.yourcrm.com 是否配置成功,接下来我们要访问这个域名,看能不能看到我们在上面写入的 index.html 文件中的内容。在测试访问www.yourcrm.com 域名之前,我们还要对这个域名进行映射(外网称为解析)。在局域网内的一台Windows计算机上打开文件 C:\Windows\System32\drivers\hosts,在这个文件的最后一行加入以下内容 -
192.168.0.134 www.yourcrm.com
192.168.0.134 yourcrm.com
注意:在这里,192.168.0.134 是配置Nginx服务器的IP,如果你的服务器不是这个IP,请写上对应的服务器IP。
现在,打开浏览器,访问以下网站域名: www.yourcrm.com 或 yourcrm.com ,没有错误,应该会看到以下界面 -
就这样,第三个网站的配置完成了!
4. 优化配置
经过了上面三个网站的配置,相信你可能觉得 Nginx 的配置文件:/usr/local/nginx/conf/nginx.conf 内容有点多了,这还只是最简单的配置(还未包函重写,日志记录等规则),从头看到尾多少有点不太方便,能不能有更好的办法解决这个问题? 当然可以。我们可以把每个网站的配置独立成一个配置文件,然后在主配置文件中使用 include 指令包函进来。
现在来看看怎么修改配置,首先分别创建三个网站的配置文件:
www.yourmall.com -> /usr/local/nginx/conf/vhosts/yourmall.conf
m.yourmall.com -> /usr/local/nginx/conf/vhosts/m_yourmall.conf
www.yourcrm.com -> /usr/local/nginx/conf/vhosts/yourcrm.conf
再将上面配置中对应每个网站的文件包括放入主配置文件。例如,对于文件 /usr/local/nginx/conf/vhosts/yourmall.conf 放置的文件内容如下:
# vhost for yourmall.com configure.
server {
listen 80;
server_name www.yourmall.com yourmall.com;
#charset koi8-r;
#access_log logs/yourmall.access.log main;
location / {
root /var/sites/yourmall;
index index.html index.html;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/sites/yourmall;
}
location ~ \.php$ {
root /var/sites/yourmall;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name;
include fastcgi_params;
}
}
其它两个网站也同样放入对应配置。
在主配置文件:/usr/local/nginx/conf/nginx.conf 中,包函上述三个文件即可。现在文件:/usr/local/nginx/conf/nginx.conf的内容如下所示 -
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.html;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name;
include fastcgi_params;
}
}
# 网站配置
include /usr/local/nginx/conf/vhosts/yourmall.conf;
include /usr/local/nginx/conf/vhosts/m_yourmall.conf;
include /usr/local/nginx/conf/vhosts/yourcrm.conf;
}
重新加载Nginx配置文件,在加载配置文件之前,最好先测试一下配置文件语法是否正确,使用以下命令来测试 -
[root@localhost sites]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost sites]#
然后执行重新加载Nginx配置文件 -
[root@localhost sites]# /usr/local/nginx/sbin/nginx -s reload
[root@localhost sites]#
到此,在Nginx上配置虚拟机演示实例就完了。
11人点赞
Nginx
作者:易百教程
链接:https://www.jianshu.com/p/8a4f37198589
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
|
|
|
表达式 |
Posted by: adahrzgj - 08-21-2022, 08:10 AM - Forum: WEB
- No Replies
|
 |
一、校验数字的表达式
数字:^[0-9]*$
n位的数字:^\d{n}$
至少n位的数字:^\d{n,}$
m-n位的数字:^\d{m,n}$
零和非零开头的数字:^(0|[1-9][0-9]*)$
非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(\.[0-9]{1,2})?$
带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})$
正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$
有两位小数的正实数:^[0-9]+(\.[0-9]{2})?$
有1~3位小数的正实数:^[0-9]+(\.[0-9]{1,3})?$
非零的正整数:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$
非零的负整数:^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$
非负整数:^\d+$ 或 ^[1-9]\d*|0$
非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
非负浮点数:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
非正浮点数:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
正浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
负浮点数:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
浮点数:^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
校验字符的表达式
汉字:^[\u4e00-\u9fa5]{0,}$
英文和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$
长度为3-20的所有字符:^.{3,20}$
由26个英文字母组成的字符串:^[A-Za-z]+$
由26个大写英文字母组成的字符串:^[A-Z]+$
由26个小写英文字母组成的字符串:^[a-z]+$
由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
由数字、26个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$
中文、英文、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$
中文、英文、数字但不包括下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
可以输入含有^%&',;=?$\"等字符:[^%&',;=?$\x22]+
禁止输入含有~的字符:[^~]+
三、特殊需求表达式
Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?
InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
手机号码:^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$
电话号码("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$
国内电话号码(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}
电话号码正则表达式(支持手机号码,3-4位区号,7-8位直播号码,1-4位分机号): ((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$)
身份证号(15位、18位数字),最后一位是校验位,可能为数字或字符X:(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)
帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]\w{5,17}$
强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在 8-10 之间):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,10}$
强密码(必须包含大小写字母和数字的组合,可以使用特殊字符,长度在8-10之间):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
日期格式:^\d{4}-\d{1,2}-\d{1,2}
一年的12个月(01~09和1~12):^(0?[1-9]|1[0-2])$
一个月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$
钱的输入格式:
有四种钱的表示形式我们可以接受:"10000.00" 和 "10,000.00", 和没有 "分" 的 "10000" 和 "10,000":^[1-9][0-9]*$
这表示任意一个不以0开头的数字,但是,这也意味着一个字符"0"不通过,所以我们采用下面的形式:^(0|[1-9][0-9]*)$
一个0或者一个不以0开头的数字.我们还可以允许开头有一个负号:^(0|-?[1-9][0-9]*)$
这表示一个0或者一个可能为负的开头不为0的数字.让用户以0开头好了.把负号的也去掉,因为钱总不能是负的吧。下面我们要加的是说明可能的小数部分:^[0-9]+(.[0-9]+)?$
必须说明的是,小数点后面至少应该有1位数,所以"10."是不通过的,但是 "10" 和 "10.2" 是通过的:^[0-9]+(.[0-9]{2})?$
这样我们规定小数点后面必须有两位,如果你认为太苛刻了,可以这样:^[0-9]+(.[0-9]{1,2})?$
这样就允许用户只写一位小数.下面我们该考虑数字中的逗号了,我们可以这样:^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$
1到3个数字,后面跟着任意个 逗号+3个数字,逗号成为可选,而不是必须:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$
备注:这就是最终结果了,别忘了"+"可以用"*"替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在用函数时去掉去掉那个反斜杠,一般的错误都在这里
xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$
中文字符的正则表达式:[\u4e00-\u9fa5]
双字节字符:[^\x00-\xff] (包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))
空白行的正则表达式:\n\s*\r (可以用来删除空白行)
HTML标记的正则表达式:<(\S*?)[^>]*>.*?|<.*? /> ( 首尾空白字符的正则表达式:^\s*|\s*$或(^\s*)|(\s*$) (可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式)
腾讯QQ号:[1-9][0-9]{4,} (腾讯QQ号从10000开始)
中国邮政编码:[1-9]\d{5}(?!\d) (中国邮政编码为6位数字)
IPv4地址:((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}
|
|
|
轻论坛:Flarum 程序安装指南 |
Posted by: adahrzgj - 08-21-2022, 08:09 AM - Forum: WEB
- No Replies
|
 |
前言
一直以来,我与 justjavac 共同维护着 Flarum 的中文版本发行。但几年来一直没有写过一篇完整的 Flarum 的安装教程,以至于群里的朋友们遇到安装问题时没有解决方案供参考,给各位带来了不少麻烦,请见谅。
Flarum 英文站: http://flarum.org/Flarum 中文站: http://flarum.org.cn/GitHub: https://github.com/Flarum-Chinese
介绍
环境要求
PHP 5.6+ (mbstring, pdo_mysql, openssl, json, gd, dom, fileinfo)MySQL 5.5+
安装方式
Flarum beta 版本将以 Composer 的方式进行安装,无法通过上传 PHP 代码的传统方式,故安装过程需要登录 SSH 终端。
本文将以 Ubuntu 16.04.3 x64 为例进行。
安装
创建非 root 用户
由于安全原因,不推荐直接在 root 用户下操作,故需先创建一个非 root 用户,并赋予 sudo 权限。
adduser username # 添加用户,替换 username 为你的用户名
# 完成两次密码输入向导
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
# 输入用户信息(允许为空)
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n]
usermod -aG sudo username # 加入 sudo 用户组,替换 username 为你的用户名
su - username # 切换到 username 用户 *
* 提示:切换到 sudo 用户后,命令前加 sudo 将以管理员权限执行。
安装环境准备
sudo apt-get update && sudo apt-get upgrade # 更新包源及系统依赖
sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/nginx # 添加 NGINX 源
sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php # 添加 PHP 源
sudo apt-get update # 更新源
sudo apt-get install nginx # 安装 NGINX
sudo apt-get install php7.0-fpm php7.0-mysql php7.0-gd php7.0-dom php7.0-mbstring php7.0-curl php7.0-xml # 安装 PHP 7.0 及所需拓展库
sudo apt-get install mysql-server-5.6 # 安装 MySQL 5.6 并设定 root 用户密码
创建 MySQL 用户及数据库
mysql -u root -p # 登录数据库 root 用户
create user 'username'@'localhost'; # 创建数据库用户,替换 username 为你的用户名
set password for 'username'@'localhost' = password('123456'); # 为用户设置密码
create database flarum; # 创建数据库
grant all privileges on flarum.* to 'username'@'localhost'; # 为用户赋予数据库操作权限
flush privileges; # 刷新配置使权限生效
安装 Composer
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
composer config -g repo.packagist composer https://packagist.phpcomposer.com # 替换中国镜像源 *
* 可选:如果服务器在中国大陆,可使用 Composer 中国全量镜像 为其加速。
安装 Flarum
mkdir -p /var/www/flarum # 创建网站目录
cd /var/www/flarum # 进入目录
composer create-project flarum/flarum . --stability=beta # 安装 Flarum beta 版本
安装目录必须为空目录,请根据提示完成安装,如遇安装失败可根据报错信息重试。
配置 NGINX
vim /etc/nginx/sites-available/default
配置示例:
server {
listen 80;
server_name example.com;
root /var/www/flarum;
index index.php index.html index.htm;
# security config
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
fastcgi_hide_header X-Powered-By;
server_tokens off;
# gizp config
gzip on;
gzip_http_version 1.1;
gzip_vary on;
gzip_comp_level 6;
gzip_proxied any;
gzip_types application/atom+xml
application/javascript
application/json
application/vnd.ms-fontobject
application/x-font-ttf
application/x-web-app-manifest+json
application/xhtml+xml
application/xml
font/opentype
image/svg+xml
image/x-icon
text/css
#text/html -- text/html is gzipped by default by nginx
text/plain
text/xml;
gzip_buffers 16 8k;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
# php config
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_param HTTP_MOD_REWRITE On;
}
# url rewrite
location / { try_files $uri $uri/ /index.php?$query_string; }
location /api { try_files $uri $uri/ /api.php?$query_string; }
location /admin { try_files $uri $uri/ /admin.php?$query_string; }
# expires config
location ~* \.html$ {
expires -1;
}
location ~* \.(?:ico|css|js|gif|bmp|jpe?g|mp4|pdf|mp3|png|svg|ttf|woff|woff2|otf|eot)$ {
access_log off;
expires 30d;
add_header Pragma public;
add_header Cache-Control "public, mustrevalidate, proxy-revalidate";
}
# deny control
location /flarum {
deny all;
return 404;
}
location ~ /assets/.*\.(php)?$ {
deny all;
}
}
* 有关 URL Rewriting 部分参考了 Flarum Documentation
目录权限
此时访问你的网站首页,可以看到安装程序已经正常运行。
但会提示部分目录需要写入权限,否则无法继续完成安装。
可参考以下操作方案:
cd /var/www # 进入网站目录
sudo chown -R username:www-data /var/www/flarum # 更改目录的所有者及所有组 *
* username 为最初创建的非 root 用户,www-data 为 NGINX 及 PHP 进程的默认用户组。
sudo chmod -R g+w,o-rwx flarum/ flarum/assets/ flarum/storage/ # 指定目录权限 *
* g+w: 目录的所有组 (Group) 增加写入权限,o-rwx: 其他用户 (Other) 移除所有权限。
目录权限配置完成后,刷新网页重新进入安装引导。
按照流程填入数据库及管理员信息,即可完成安装。
安装中文语言包
cd /var/www/flarum # 进入网站目录
composer require jsthon/flarum-ext-simplified-chinese # 安装中文语言包拓展
composer dump-autoload --optimize # 优化 Composer 自动加载
* 安装其他 Flarum 拓展插件的操作方法类似。
文末
如果遇到其他问题,可在官方支持论坛发帖。
有关简体中文支持可在 GitHub 中发起 Issue:
https://github.com/Flarum-Chinese/flarum...ed-chinese
|
|
|
|