安装一台服务器
- 安装服务器
- MacOS下使用证书登陆SSH腾讯云
- 安装配置rsync
- 安装Nginx和PHP7+MySQL
- 安装node.js 和 npm
- 安装 VUE
- 安装Laravel 5.8
- Rsync命令参数详解
- 通过指令从腾讯云SSL的CRT文件生成PEM文件
- ubuntu 下 安装 Let’s Encrypt 自动更新SSL证书
- 白痴也会写Cron定时器表达式
安装服务器
MacOS下使用证书登陆SSH腾讯云
cd ~/.ssh
腾讯云证书复制进来
ssh-keygen -t rsa
看看config,里面应该是:
Host aliasname1
HostName 10.10.10.10
Port 22
User ubuntu
IdentityFile ~/.ssh/zhengshumingzi
Host aliasname2
HostName 11.11.11.11
Port 22
User ubuntu
IdentityFile ~/.ssh/zhengshumingzi
如果出错:
Permissions 0755 for ‘zhengshu’ are too open.
则:chmod 400 *
Warning: Permanently added '8.8.8.8 (ECDSA) to the list of known hosts.
则:ssh-keygen -R 8.8.8.8
然后直接 ssh aliasname1
就可以登陆服务器了。
安装配置rsync
ubuntu 16.04默认已安装rsync,rsync服务默认不是启动的,我们要修改rsync文件。
sudo vim /etc/default/rsync
修改配置项:
RSYNC_ENABLE=true #false改true
创建配置文件,将rsyncd.conf 复制到 /etc目录下
sudo cp /usr/share/doc/rsync/examples/rsyncd.conf /etc
sudo vi /etc/rsyncd.conf
其中 path 是需要同步的路径,你可以暂时只对此项配置,然后即可测试。
启动 rsync
sudo /etc/init.d/rsync start
[ ok ] Starting rsync (via systemctl): rsync.service.
设置密码:
sudo vi /etc/rsyncd.conf
修改:
auth users = zhao
secrets file = /etc/rsyncd.secrets
然后创建 密码文件:
sudo vi /etc/rsyncd.secrets
内容为:
zhao:password
保存后记得修改权限:
sudo chmod 600 /etc/rsyncd.secrets
然后重启Rsync
sudo /etc/init.d/rsync restart
客户端如果是MacOS,直接打开命令行
rsync -vzrtopag --progress --password-file=./rsync.pwd . zhao@8.8.8.8::ftp
本地的 ./rsync.pwd 的内容只需要密码即可。
要注意,如果有权限问题,可能是rsync.conf文件里的uid和gid与实际不符。
安装Nginx和PHP7+MySQL
sudo apt-get install nginx
然后
sudo apt-get install php7.0-fpm
如果需要安装php 7.3(Laravel 高版本需求)则需要更新下库,然后安装php7.3
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install -y php7.3
安装MySQL
sudo apt-get install mysql-server-5.7
中途会输入root密码
然后
安装PHP7.0的各种模块:
sudo apt-get install php7.0-intl php7.0-mysql php7.0-pspell php7.0-sqlite3 php7.0-xsl php7.0-bcmath php7.0-curl php7.0-gd php7.0-json php7.0-odbc php7.0-readline php7.0-sybase php7.0-zip php7.0-bz2 php7.0-dba php7.0-gmp php7.0-ldap php7.0-opcache php7.0-recode php7.0-tidy php7.0-cgi php7.0-dev php7.0-imap php7.0-mbstring php7.0-pgsql php7.0-snmp php7.0-xml php7.0-cli php7.0-enchant php7.0-interbase php7.0-mcrypt php7.0-phpdbg php7.0-soap php7.0-xmlrpc
如果要安装的PHP7.3
则可以搜一下有哪些模块:
sudo apt-cache search php7*
然后按需要或者全部安装php7.3模块:
sudo apt install php7.3-common php7.3-fpm php7.3-intl php7.3-odbc php7.3-readline php7.3-sybase php7.3-zip php7.3-bcmath php7.3-curl php7.3-gd php7.3-json php7.3-opcache php7.3-recode php7.3-tidy php7.3-bz2 php7.3-dba php7.3-gmp php7.3-ldap php7.3-pgsql php7.3-snmp php7.3-xml php7.3-cgi php7.3-dev php7.3-imap php7.3-mbstring php7.3-phpdbg php7.3-soap php7.3-xmlrpc php7.3-cli php7.3-enchant php7.3-interbase php7.3-mysql php7.3-pspell php7.3-sqlite3 php7.3-xsl
然后设置 php.ini
sudo vi /etc/php/7.0/fpm/php.ini
//找到 ;cgi.fix_pathinfo=1
//改成 cgi.fix_pathinfo=0
修改nginx的配置:
sudo vi /etc/nginx/conf.d/my.conf
参照sites-available下的default写就好了。
关于PHP7.3+nginx的设置,范例如下:
server {
listen 80;
listen [::]:80;
server_name api.xxx.cn;
root /var/www/zhao/html_xxx;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php7.0-cgi alone:
#fastcgi_pass 127.0.0.1:9000;
# With php7.0-fpm:
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
}
}
snippets/fastcgi-php.conf里面的内容如下,原来的不需要改:
# regex to split $uri to $fastcgi_script_name and $fastcgi_path
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# Check that the PHP script exists before passing it
try_files $fastcgi_script_name =404;
# Bypass the fact that try_files resets $fastcgi_path_info
# see: http://trac.nginx.org/nginx/ticket/321?
fastcgi_param PATH_INFO $path_info;
fastcgi_index index.php;
include fastcgi.conf;
安装node.js 和 npm
sudo apt-get update
下
首先需要安装依赖包python-software-properties。
sudo apt-get install python-software-properties
安装ppa
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
如果提示没有安装curl,需要先安装curl。
接下来安装nodejs,安装完成之后npm也自动安装好了。
sudo apt-get install nodejs
安装完成之后我们查看一下nodejs和npm的版本
node -v
npm -v
因为国内的网络环境,直接从npm官方源安装软件包速度会比较慢,甚至导致安装不成功。我们可以安装nrm工具,用于管理软件源。
sudo npm install -g nrm
安装完成之后,列出可用的软件源:
sudo nrm ls
在国内,我们可以使用taobao的源,速度还相对不错。
sudo nrm use taobao
初始化一下 npm,创建 package.json
sudo npm init -y
安装 VUE
由于安装vue 是会出现提示, 更新一下package.json的内容:
npm warn package.json @1.0.0 no repository field.
{
...
"repository": {
"type": "git",
"url": "http://baidu.com"
},
...
}
或者声明私有化
{
...
"private": true,
...
}
然后安装VUE
sudo npm install vue
Vue.js 提供一个官方命令行工具,可用于快速搭建大型单页应用。该工具提供开箱即用的构建工具配置,带来现代化的前端开发流程。只需一分钟即可启动带热重载、保存时静态检查以及可用于生产环境的构建配置的项目:
# 全局安装 vue-cli 脚手架
$ sudo npm install --global vue-cli
#如果输入vue,出现说明,说明正常了。
# 创建一个基于 webpack 模板的新项目
$ sudo vue init webpack my-project
# 按提示回车和输入就好了。。。。
$ cd my-project
$ sudo npm install
$ sudo npm run dev
#或者
$sudo npm run build
注意,npm run 后的 dist目录才是web访问的主目录。
如果出现空白页面,则查看config目录下面的config.js里面的路径是否配置正确。
重要: Github 仓库的 /dist 文件夹只有在新版本发布时才会更新。如果想要使用 Github 上 Vue 最新的源码,你需要自己构建。
sudo git clone https://github.com/vuejs/vue.git node_modules/vue
cd node_modules/vue
sudo npm install
sudo npm run build
然后访问网站吧~~
安装Laravel 5.8
首先安装 Composer
sudo curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/bin/composer
运行 composer
出现版本号和说明就可以了。
然后安装Laravel ,注意,不能在root和super user账号下安装。
可以新建一个账号:
useradd -m zhao
passwd zhao
su - zhao
然后再安装。
composer global require laravel/installer
如果安装报错,composer 报错:proc_open(): fork failed
解决方法:
/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
/sbin/mkswap /var/swap.1
/sbin/swapon /var/swap.1
安装完了laravel ,创建一个项目:
~/.config/composer/vendor/bin/laravel new myproject
laravel找不到的话,就看一下安装上一步时候提示的路径。
Changed current directory to /home/用户名/.config/composer
创建完成提示:
…
Package manifest generated successfully.
Application ready! Build something amazing.
如果之前已经安装过旧版本的 Laravel 安装器,需要更新后才能安装基于 Laravel 5.8 框架的新应用:
composer global update
安装完成后, myproject 目录就是项目目录。可以复制到指定地方,注意权限。
访问 目录中的 public/index.php 就是入口
Rsync命令参数详解
Rsync 的几种指令格式:
rsync [OPTION]... SRC DEST
#拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号”:”分隔符时就启动这种工作模式。如:rsync -a /data /backup
rsync [OPTION]... SRC [USER@]HOST:DEST
#使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号”:”分隔符时启动该模式。如:rsync -avz *.c foo:src
rsync [OPTION]... [USER@]HOST:SRC DEST
#使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号”:”分隔符时启动该模式。如:rsync -avz foo:src/bar /data
rsync [OPTION]... [USER@]HOST::SRC DEST
#从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含”::”分隔符时启动该模式。如:rsync -av root@8.8.8.8::www /databack
rsync [OPTION]... SRC [USER@]HOST::DEST
#从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含”::”分隔符时启动该模式。如:rsync -av /databack root@8.8.8.8::www
rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
#列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsync -v rsync://8.8.8.8/www
rsync参数的具体解释如下:
-v, --verbose 详细模式输出
-q, --quiet 精简输出模式
-c, --checksum 打开校验开关,强制对文件传输进行校验
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-r, --recursive 对子目录以递归模式处理
-R, --relative 使用相对路径信息
-b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用–suffix选项来指定不同的备份文件前缀。
–backup-dir 将备份文件(如~filename)存放在在目录下。
-suffix=SUFFIX 定义备份文件前缀
-u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)
-l, --links 保留软链结
-L, --copy-links 想对待常规文件一样处理软链结
–copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结
–safe-links 忽略指向SRC路径目录树以外的链结
-H, --hard-links 保留硬链结
-p, --perms 保持文件权限
-o, --owner 保持文件属主信息
-g, --group 保持文件属组信息
-D, --devices 保持设备文件信息
-t, --times 保持文件时间信息
-S, --sparse 对稀疏文件进行特殊处理以节省DST的空间
-n, --dry-run现实哪些文件将被传输
-W, --whole-file 拷贝文件,不进行增量检测
-x, --one-file-system 不要跨越文件系统边界
-B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节
-e, --rsh=COMMAND 指定使用rsh、ssh方式进行数据同步
–rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息
-C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件
–existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件
–delete 删除那些DST中SRC没有的文件
–delete-excluded 同样删除接收端那些被该选项指定排除的文件
–delete-after 传输结束以后再删除
–ignore-errors 及时出现IO错误也进行删除
–max-delete=NUM 最多删除NUM个文件
–partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输
–force 强制删除目录,即使不为空
–numeric-ids 不将数字的用户和组ID匹配为用户名和组名
–timeout=TIME IP超时时间,单位为秒
-I, --ignore-times 不跳过那些有同样的时间和长度的文件
–size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间
–modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0
-T --temp-dir=DIR 在DIR中创建临时文件
–compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份
-P 等同于 --partial
–progress 显示备份过程
-z, --compress 对备份的文件在传输时进行压缩处理
–exclude=PATTERN 指定排除不需要传输的文件模式
–include=PATTERN 指定不排除而需要传输的文件模式
–exclude-from=FILE 排除FILE中指定模式的文件
–include-from=FILE 不排除FILE指定模式匹配的文件
–version 打印版本信息
–address 绑定到特定的地址
–config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件
–port=PORT 指定其他的rsync服务端口
–blocking-io 对远程shell使用阻塞IO
-stats 给出某些文件的传输状态
–progress 在传输时现实传输过程
–log-format=formAT 指定日志文件格式
–password-file=FILE 从FILE中得到密码
–bwlimit=KBPS 限制I/O带宽,KBytes per second
-h, --help 显示帮助信息
通过指令从腾讯云SSL的CRT文件生成PEM文件
openssl x509 -in mycert.crt -out mycert.pem -outform PEM
ubuntu 下 安装 Let’s Encrypt 自动更新SSL证书
安装 letsencrypt
sudo apt-get install letsencrypt
生成证书
sudo letsencrypt certonly --webroot -w /var/www/html -d www.domain.com -d domain.com
注意:
********* 很重要 *******必须先配置 80端口可以访问该域名,才能够生成证书!!!!!
certonly 表示只颁发证书
–webroot 表示自动验证域名
-w 表示网站目录 (所以后面的路径,必须是该域名的主目录,需要验证域名有效性,要保证此目录可以通过http访问到。 )
-d 表示颁发证书的域名,可以配置该目录下的多个域名。
配置 nginx 服务器
#如果需要自动重生成证书,记得要有80端口访问,否则验证域名会失败。
server {
listen 80;
listen [::]:80;
server_name www.domain.com domain.com;
root ...... 省略
}
server {
listen 443;
listen [::]:443;
server_name www.domain.com domain.com;
ssl_certificate /etc/letsencrypt/live/www.a.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.a.com/privkey.pem;
ssl on;
... 下面省略
}
然后重启动 Nginx
sudo service nginx restart
证书每三个月会失效,所以还要重新申请,重新申请很简单,一条指令即可:
sudo certbot renew
或者
sudo certbot renew --quiet --force-renewal
如果不想每三个月登陆服务器输入一次,那就配置一下 crontab ,每两个月自动执行一次。
sudo vi /etc/crontab
在开头加上:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
# 下面的是 ubuntu 自带。
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
0 0 1 */2 * root certbot renew --quiet --force-renewal
... 后面原有的不变
白痴也会写Cron定时器表达式
到现在都记不住 cron定时器表达式怎么写,终于不用再动脑子了。
直接在线生成表达式吧~