# pi

## 更换软件源
```
sudo nano /etc/apt/sources.list
deb http://mirrors.aliyun.com/raspbian/raspbian/ stretch main contrib non-free rpi
sudo nano /etc/apt/sources.list.d/raspi.list
deb http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/ stretch main ui
sudo apt-get update
sudo apt-get upgrade
```

## 安装git

安装git
`sudo apt-get install wget git-core`

创建新用户和用户组
`adduser --system --shell /bin/bash --gecos 'git version control by pi' --group --home /home/git git`

改密码
`passwd git`

切用户
`su git`

进文件夹
`cd /home/git`

初始化
```
mkdir test.git
cd test.git
git --bare init
```

用户：添加远程
`git remote add pi git@[your IP]:/home/git/test.git`

## 关机
sudo shutdown -h now
sudo halt
sudo poweroff
sudo init 0

## 重启
sudo reboot
shutdown -r now
shutdown -r 18:23:52 #定时重启在18点23分52秒关闭

## ngrok
下载
`wget 'hls.ctopus.com/sunny/linux_arm.zip?v=2'`

重命名
mv linux_arm.zip?v=2 linux_arm.zip

解压缩
`unzip linux_arm.zip`

切文件夹
`cd linux_arm`

启动！
` ./sunny clientid 213330227041`

后台运行
`setsid ./sunny clientid 213330227041 &`

移动到 /use/local/bin 目录下并给予可执行权限
```
sudo mv sunny /usr/local/bin/sunny
sudo chmod +x /usr/local/bin/sunny
```

编写启动脚本
`sudo vim /etc/init.d/sunny`

内容
```
#!/bin/sh -e
### BEGIN INIT INFO
# Provides:          ngrok.cc
# Required-Start:    $network $remote_fs $local_fs
# Required-Stop:     $network $remote_fs $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: autostartup of ngrok for Linux
### END INIT INFO

NAME=sunny
DAEMON=/usr/local/bin/$NAME
PIDFILE=/var/run/$NAME.pid

[ -x "$DAEMON" ] || exit 0

case "$1" in
  start)
      if [ -f $PIDFILE ]; then
        echo "$NAME already running..."
        echo -e "\033[1;35mStart Fail\033[0m"
      else
        echo "Starting $NAME..."
        start-stop-daemon -S -p $PIDFILE -m -b -o -q -x $DAEMON -- clientid 213330227041 || return 2
        echo -e "\033[1;32mStart Success\033[0m"
    fi
    ;;
  stop)
        echo "Stoping $NAME..."
        start-stop-daemon -K -p $PIDFILE -s TERM -o -q || return 2
        rm -rf $PIDFILE
        echo -e "\033[1;32mStop Success\033[0m"
    ;;
  restart)
    $0 stop && sleep 2 && $0 start
    ;;
  *)
    echo "Usage: $0 {start|stop|restart}"
    exit 1
    ;;
esac
exit 0
```

测试
```
sudo chmod 755 /etc/init.d/sunny
sudo /etc/init.d/sunny start
sudo /etc/init.d/sunny start    #启动
sudo /etc/init.d/sunny stop     #停止
sudo /etc/init.d/sunny restart  #重启
```

开机启动
```
cd /etc/init.d
sudo update-rc.d sunny defaults 90    #加入开机启动
sudo update-rc.d -f sunny remove  #取消开机启动
```




### 安装gogs

创建新用户git 如果不创建会导致主账号登陆不了ssh
```js
//切换为root用户为了获取创建用户的权限
sudo su

//给root创建一个新的密码
sudo passwd root

//添加一个新用户（如用户名为csdn）
useradd csdn

//为该用户设定登录密码
passwd csdn

//为该用户指定命令解释程序（通常为/bin/bash）
usermod -s /bin/bash csdn

//为该用户指定用户主目录
usermod -d /home/csdn csdn

//查看用户的属性
cat /etc/passwd

// 切换到用户csdn
su csdn

// 再次切换到root用户（不要用sudo su, 而用su root）
su root

// 执行visudo命令
visudo

// 该命令实际上打开的是/etc/sudoers文件，修改该文件，在“root ALL=(ALL:ALL) ALL”这一行下面加入一行：
csdn ALL=(ALL:ALL) ALL

//ctrl+o（然后再按enter）保存，ctrl+c取消，ctrl+x退出
```

下载
`wget 'https://github.com/gogs/gogs/releases/download/v0.11.91/raspi_armv7.zip'`

解压
`unzip raspi_armv7.zip`

进文件夹
`cd gogs`

开启web服务
`./gogs web`

去3000端口进行设置，数据库设置成sqlite就行

在`/etc/systemd/system/gogs.service`新建文件
```
[Unit]
Description=Gogs (Go Git Service)
After=syslog.target
After=network.target
#After=mysqld.service
#After=postgresql.service
#After=memcached.service
#After=redis.service

[Service]
# Modify these two values and uncomment them if you have
# repos with lots of files and get an HTTP error 500 because
# of that
###
#LimitMEMLOCK=infinity
#LimitNOFILE=65535
Type=simple
User=git
Group=git
WorkingDirectory=/home/git/gogs
ExecStart=/home/git/gogs/gogs web
Restart=always
Environment=USER=git HOME=/home/git

[Install]
WantedBy=multi-user.target
```

更新 User、Group、WorkingDirectory、ExecStart 和 Environment 为相对应的值。其中 WorkingDirectory 为您的 Gogs 实际安装路径根目录。

[可选] 如果您 Gogs 安装示例使用 MySQL/MariaDB、PostgreSQL、Redis 或 memcached，请去掉相应 After 属性的注释。

然后通过 `sudo systemctl enable gogs` 命令激活，最后执行 `sudo systemd start gogs`，就可以做到开机启动了。

官方文件解释[docs]('https://gogs.io/docs/advanced/configuration_cheat_sheet')

重启 `sudo systemctl restart gogs`

### 安装nginx

安装
`sudo apt-get install nginx`

启动
`sudo /etc/init.d/nginx start`

修改配置
`sudo nano /etc/nginx/sites-available/default`

重启
`sudo /etc/init.d/nginx reload`

修改文件夹权限
`sudo chmod o+rw /etc/nginx`

```
server {
    #SSL 访问端口号为 443
    listen 443 ssl http2; #填写绑定证书的域名
    server_name pi.powerrain.cn;
    #证书文件名称
    ssl_certificate 1_pi.powerrain.cn_bundle.crt;
    #私钥文件名称
    ssl_certificate_key 2_pi.powerrain.cn.key;
    ssl_session_timeout 5m;
    #请按照这个协议配置
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    #请按照这个套件配置，配置加密套件，写法遵循 openssl 标准。
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    location / {
      proxy_pass http://127.0.0.1:3000;
    }
    location /html {
      root /var/www/html;
      index index.html index.htm index.nginx-debian.html;
      try_files $uri $uri/ =404;
    }
}

server {
    listen 80;
    server_name pi.powerrain.cn;

    location / {
      proxy_pass http://127.0.0.1:3000;
    }
    location /html {
      root /var/www/html;
      index index.html index.htm index.nginx-debian.html;
      try_files $uri $uri/ =404;
    }
}
```

# flask自启

* 写文件
  ```sh
  #!/bin/sh
  cd /home/pi/data/ccb/backEnd
  . venv/bin/activate
  gunicorn ccb:app -c gunicorn.conf.py
  ```
* 给权限`sudo chmod 777 /home/pi/data/ccb/backEnd/start.sh`
* 编辑开机自启`sudo nano /etc/rc.local`
* 添加`/home/pi/data/ccb/backEnd/start.sh start`


sudo chmod -R g+rwx /home/pi/data/owncloud

sudo -u www-data ls -la /home/pi/data/owncloud
sudo chown -R www-data:www-data /home/pi/data/owncloud
sudo chown -R www-data:www-data /home/pi/data/owncloud/data/canary/files/Photos/animation/0

wget https://download.owncloud.org/community/owncloud-10.3.2.tar.bz2

sudo tar -xvf owncloud-10.3.2.tar.bz2

sudo rm -rf /home/pi/data/owncloud

wget https://canary.moe/favicon.ico