# git仓库裸板本javascript
git clone --bare git://oldgithub.com/username/oldproject.gitphp
cd oldproject.git css
git push --mirror git@newgithub.com/username/newproject.githtml
内存java
ps -aux|head -n 1;ps -aux|grep -v "PID"|sort -nr -k +4|head -n 1 python
-- shellmysql
http://www.javashuo.com/article/p-xntjmgny-hc.htmllinux
-- limitnginx
ulimit -HSn 65535 cat /etc/security/limits.conf root soft nofile 65535 root hard nofile 65535
-- python3c++
cd /usr/local/src wget hhttps://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel lib-devel ncurses-devel tk-devel gcc make tar -xf Python-3.6.4.tgz cd Python-3.6.4 ./configure --prefix=/usr/local/python-3.6.4 make make install ln -s /usr/local/python-3.6.4/bin/python3 /usr/bin/python3
-- nginx
yum install -y wget gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel cd /usr/local/src wget http://nginx.org/download/nginx-1.14.2.tar.gz tar -zxvf nginx-1.14.2.tar.gz cd nginx-1.14.2 ./configure --prefix=/usr/local/nginx make && make install export PATH=$PATH:/usr/local/nginx/sbin/ echo "export PATH=$PATH:/usr/local/nginx/sbin/" >> /etc/profile cat >> /usr/lib/systemd/system/nginx.service < EOF [Unit] Description=nginx After=network.target [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx [Install] WantedBy=multi-user.target EOF
简要
简要优化 server_tokens off; # 响应头避免版本信息 sendfile on; # 文件描述符之间的数据拷贝函数 tcp_nopush on; # 减小网络报文段的数量 worker_rlimit_nofile # 65535; 标准proxy location ~ ^(/online_svr/room/members) { proxy_pass ip:9990$request_uri; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; } 301 永久跳转 rewrite ^/(.*)$ http://www.ipaylinks.com/$1 permanent; 302 redirect 不记录Lb location / { if ($request_method = HEAD) { access_log off; } }
location
location测试/test和/的优先级,匹配得越多,优先级越高 location / { return 200; } location /test { return 401; } 正则location的优先级状况,正则优先级高于普通的通配 location / { return 200; } location /test { return 401; } location ~ ^/test { return 402; } 两个正则同时匹配到的优先级+忽略大小写的正则说明 location / { return 200; } location /test { return 401; } location ~ ^/test { return 402; } location ~* ^/test/test { return 403; } 精准匹配的优先级最高,高于正则,高于普统统配 location / { return 200; } location /test { return 401; } location ~ ^/test { return 402; } location ~* ^/test/test { return 403; } location = /test/test { return 404; } 若是须要挂维护页面的话,只要保留一个location,由于这个默认的location优先级最低 location / { return 200; }
负载压缩反向代理https
返回字符串 location / { default_type application/json; return 200 '{"status":"success","result":"nginx json"}'; } https conf文件 upstream harbor { server 127.0.0.1:180; } server { listen 443; server_name joker.fish-test.com; access_log /var/log/nginx/access.log; ssl on; ssl_certificate ssl_key/server.crt; ssl_certificate_key ssl_key/server.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; client_max_body_size 1000m; location / { proxy_pass http://harbor; proxy_set_header Host $http_host; include proxy_params; } } server { listen 80; server_name joker.fish-test.com; rewrite (.*) https://$server_name$request_uri; } proxy_params 文件 proxy_redirect default; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Custom nidaye; proxy_connect_timeout 30; proxy_send_timeout 60; proxy_read_timeout 60; proxy_buffer_size 32k; proxy_buffering on; proxy_buffers 4 128k; proxy_busy_buffers_size 256k; proxy_max_temp_file_size 256k; 压缩 文件 gzip on; gzip_min_length 1024; gzip_comp_level 6; zip_types text/plain application/x-javascript text/css text/html application/html; gzip_vary on; gzip_disable "MSIE [1-6]\.";
-- mysql
yum install -y gcc gcc-c++ make tar openssl openssl-devel cmake ncurses ncurses-devel useradd -s /sbin/nologin mysql cd /usr/local/src wget https://www.mysql.com/Downloads/MySQL-5.6/mysql-5.6.39.tar.gz tar -zxvf mysql-5.6.39.tar.gz cd mysql-5.6.39 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=all -DWITH_DEBUG=0 -DWITH_SSL=yes -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 make && make install cp support-files/mysql.server /etc/init.d/mysqld chmod a+x /etc/init.d/mysqld export PATH=$PATH:/usr/local/mysql/bin/ echo "export PATH=$PATH:/usr/local/mysql/bin/" >> /etc/profile # 经过cat >> > 追加仍是清空追加 cat > /etc/my.cnf << EOF [mysqld] bind-address=0.0.0.0 port=3306 datadir=/data/mysql user=mysql skip-name-resolve long_query_time=2 slow_query_log_file=/data/mysql/mysql-slow.log expire_logs_days=2 innodb-file-per-table=1 innodb_flush_log_at_trx_commit = 2 log_warnings = 1 max_allowed_packet = 512M connect_timeout = 60 net_read_timeout = 120 [mysqld_safe] log-error=/data/mysql/mysqld.log pid-file=/data/mysql/mysqld.pid EOF mkdir -pv /data/mysql chown -R mysql:mysql /usr/local/mysql /data/mysql/ yum install -y perl-Module-Install /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --user=mysql --datadir=/data/mysql/ cat >> /usr/lib/systemd/system/mysqld.service < EOF [Unit] Description=mysqld After=network.target [Service] Type=forking ExecStart=/etc/init.d/mysqld start [Install] WantedBy=multi-user.target EOF
mysql操做
初始设置密码 mysqladmin -uroot -p123456 password 123 受权 GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'127.0.0.1' IDENTIFIED BY 'zabbixpwd' WITH GRANT OPTION; flush privileges; 删除用户 delete from mysql.user where user='‘gogs’'; 跳过密码 [mysqld] skip-grant-tables 修改用户密码 update user set password=password('123') where user='root' and host='localhost'; flush privileges;
-- php
yum -y install epel-release gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel libxml2 libxml2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel openldap openldap-devel libmcrypt libmcrypt-devel cd /usr/local/src/ wget http://hk1.php.net/distributions/php-5.6.40.tar.gz tar -zxf php-5.6.40.tar.gz cd php-5.6.40 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-ctype --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap --with-gettext --enable-fpm --with-pdo_mysql make && make install cp php.ini-production /usr/local/php/etc/php.ini export PATH=$PATH:/usr/local/php/sbin/:/usr/local/php/bin/ echo "export PATH=$PATH:/usr/local/php/sbin/:/usr/local/php/bin/" >> /etc/profile mv /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf cat >> /usr/lib/systemd/system/php-fpm.service < EOF [Unit] Description=php-fpm After=network.target [Service] Type=forking ExecStart=/usr/local/php/sbin/php-fpm [Install] WantedBy=multi-user.target EOF
test_mysql.php
[root@Poppy blog]# cat test_mysql.php <?php $link_id=mysql_connect('localhost','root','123456') or mysql_error(); if($link_id){ echo "mysql successful by root"; }else{ echo mysql_error(); } // 这是单行注释 /* 这是多行注释 */ ?> 客户端访问 [root@joker ~]# curl blog.joker.com/test_mysql.php mysql successful by root
-- jdk
cd /usr/local/src # 下载地址 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html wget https://download.oracle.com/otn/java/jdk/8u212-b10/59066701cf1a433da9770636fbc4c9aa/jdk-8u212-linux-x64.tar.gz tar -zxf jdk-8u212-linux-x64.tar.gz mv jdk1.8.0_212 /usr/local/ export JAVA_HOME=/usr/local/jdk1.8.0_212/ export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH
-- redis
yum install -y wget net-tools gcc gcc-c++ make tar openssl openssl-devel cmake cd /usr/local/src wget http://download.redis.io/releases/redis-4.0.9.tar.gz tar -zxf redis-4.0.9.tar.gz cd redis-4.0.9 make mkdir -pv /usr/local/redis/conf /usr/local/redis/bin cp src/redis* /usr/local/redis/bin/ cp redis.conf /usr/local/redis/conf export REDIS_HOME=/usr/local/redis/ export PATH=$PATH:$REDIS_HOME/bin /usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
-- logrotate
ls -lh /etc/logrotate.d/ /var/log/nginx/*log { create 0644 nginx nginx # 建立新的日志文件
su root root # 切用户执行 daily # 天天 rotate 20 # 保留份数 missingok # 日志丢失,不报错继续滚动下一个日志 notifempty # 当日志文件为空时,不进行轮转 compress # gzip压缩 dateext # 切割后的日志文件以当前日期为格式结尾 sharedscripts # 运行postrotate脚本,做用是在全部日志都轮转后统一执行一次脚本。若是没有配置这个,那么每一个日志轮转后都会执行一次脚本 postrotate # 在logrotate转储以后须要执行的指令 /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true endscript # 命令结束 } logrotate -v -f /etc/logrotate.d/nginx tail -f /var/lib/logrotate/logrotate.status
-- systemd
在/usr/lib/systemd/system目录添加一个配置文件zabbix_agentd.service [Unit] #描述 Description=zabbix_agent #表示服务信息 [Service] Type=forking #注意:须要和conf配置文件中的信息一致 PIDFile=/tmp/zabbix_agentd.pid #启动服务的命令 ExecStart=/usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/etc/zabbix_agentd.conf #从新加载命令 ExecReload=/bin/kill -s HUP $MAINPID #中止服务的命令 ExecStop=/bin/kill -s QUIT $MAINPID #意外的失败,就将重启 Restart=on-failure #重启服务以前,须要等待的秒数 RestartSec=1s #安装相关信息 [Install] #multi-user.target代表当系统以多用户方式启动时,这个服务须要被自动运行 WantedBy=multi-user.target #重载配置 systemctl daemon-reload 启动命令 systemctl start zabbix_agentd.service systemctl stop zabbix_agentd.service systemctl restart zabbix_agentd.service 开机启动 systemctl enable zabbix_agentd.service systemctl disable zabbix_agentd.service systemctl list-unit-files|grep zabbix
DCOKER ORDER
------- 运行容器 docker run -d -it --name joker1centos --mount source=my-vol2,target=/data centos:7.6.1810 /bin/bash -it -t 让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i 则让容器的标准输入保持打开。即为交互模式。 当利用docker run来建立容器时,Docker在后台运行的标准操做包括: ------- 查看日志 docker logs id HOLD日志 docker logs -f id ------- 建立数据卷 docker volume create my-vol docker volume ls docker volume inspect my-vol 挂载数据卷 docker run -d -P --name web3 --mount type=volume,source=my-vol,target=/opt/webapp training/webapp python app.py docker run -d -p --name web3 -v my-vol:/opt/webapp:ro training/webapp python app.py 挂载目录 docker run -d -P --name web4 --mount type=bind,source=/data,target=/opt/webapp,readonly training/webapp python app.py docker run -d -p --name web4 -v /data:/opt/webapp:ro training/webapp python app.py
DOCKER REGISTRY
私有仓库 docker pull registry docker run -d -p 5000:5000 -v /data/registry:/var/lib/registry --name local --restart=always registry docker tag centos:7.6.1810 127.0.0.1:5000/centos:1.0.1 docker push 127.0.0.1:5000/centos:1.0.1 curl 127.0.0.1:5000/v2/_catalog {"repositories":["centos"]} docker tag registry 127.0.0.1:5000/registry:1.0.1 docker push 127.0.0.1:5000/registry:1.0.1 curl 127.0.0.1:5000/v2/_catalog {"repositories":["centos","registry"]} docker image ls 127.0.0.1/centos 1.0.1 f1cb7c7d58b7 3 months ago 202MB 127.0.0.1:5000/registry 1.0.1 f32a97de94e1 4 months ago 25.8MB 另外一台 curl 192.168.27.129:5000/v2/_catalog {"repositories":["centos","registry"]} PULL错误 docker pull 192.168.27.129:5000/centos Using default tag: latest Error response from daemon: Get https://192.168.27.129:5000/v2/: http: server gave HTTP response to HTTPS client 国内加速 支持HTTPS [root@localhost ~]# cat /etc/docker/daemon.json { "registry-mirrors":[ "https://registry.docker-cn.com" ], "insecure-registries": [ "192.168.27.129:5000" ] } 重载启动 systemctl daemon-reload systemctl restart docker 从新PULL docker pull 192.168.27.129:5000/centos:1.0.1 docker pull 192.168.27.129:5000/registry:1.0.1 推送 docker tag nginx:v1 192.168.27.129:5000/nginx:1.0.1 docker push 192.168.27.129:5000/nginx:1.0.1 curl 192.168.27.129:5000/v2/_catalog {"repositories":["centos","nginx","registry"]} 镜像查看 docker image ls 192.168.27.129:5000/centos 1.0.1 f1cb7c7d58b7 3 months ago 202MB 192.168.27.129:5000/registry 1.0.1 f32a97de94e1 4 months ago 25.8MB
DOCKERFILE基本用法
[root@localhost docker]# cat file1 # This docker file # VERSION 1 # Author: joker # Base images FROM centos:7.6.1810 # Maintainer MAINTAINER joker.li xxx@qq.com # Commands RUN yum install -y nginx # Copy COPY ["",""] # Add ADD ["",""] # Cmd Shell CMD ["sh","-c","echo $HOME"] # Entrypoint ENTRYPOINT ["","",""] # Volume VOLUME /data # Expose EXPOSE 80 # Workdir WORKDIR /data # User RUN groupadd -r redis && useradd -r -g redis redis USER redis RUN [ "redis-server" ] # Env ENV NODE_VERSION=7.2.0 JAVA_VERSION=1.8 # Healthcheck HEALTHCHECK --interval=30s --timeout=30s --retries=3 \ CMD curl -fs http://localhost/ || exit 1
HEALTHCHECK
[root@localhost docker]# cat healthcheck # This docker file # VERSION 1 # Author: joker # Base images FROM nginx # Maintainer MAINTAINER joker.li xxx@qq.com # Commands RUN apt-get update && apt-get install -y curl && rm -fr /var/lib/apt/lists/* HEALTHCHECK --interval=3s --timeout=3s --retries=3 CMD curl -fs http://localhost/ || exit 1
REDIS
[root@localhost docker]# cat redis # This docker file # VERSION 1 # Author: joker # Base images FROM centos:7.6.1810 # Maintainer MAINTAINER joker.li xxx@qq.com # Commands RUN buildDeps='gcc libc6-dev make wget' \ && yum install -y $buildDeps \ && wget -O redis.tar.gz "http://download-ops.tuji.com/download/redis/redis-4.0.9.tar.gz" \ && mkdir -p /usr/local/src \ && tar -zxf redis.tar.gz -C /usr/local/src \ && make -C /usr/local/src/redis-4.0.9 \ && make -C /usr/local/src/redis-4.0.9 install \ && mkdir -pv /usr/local/redis/conf /usr/local/redis/bin \ && cp /usr/local/src/redis-4.0.9/src/redis* /usr/local/redis/bin/ \ && cp /usr/local/src/redis-4.0.9/redis.conf /usr/local/redis/conf \ && rm -f redis.tar.gz \ && rm -fr /usr/local/src/redis-4.0.9 \ && yum remove -y $buildDeps EXPOSE 6379 CMD ["/usr/local/redis/bin/redis-server","usr/local/redis/conf/redis.conf"]
ZABBIX
[root@localhost docker]# cat zabbix # This docker file # VERSION 1 # Author: joker # Base images FROM centos:7.6.1810 # Maintainer MAINTAINER joker.li xxx@qq.com # Workdir WORKDIR /usr/local/src # Commands RUN groupadd -r zabbix && useradd -r -g zabbix zabbix RUN buildDeps='gcc gcc-c++ make pcre-devel wget' \ && yum install -y $buildDeps \ && wget "http://download-ops.tuji.com/download/zabbix/zabbix-4.0.3.tar.gz" \ && tar -zxf zabbix-4.0.3.tar.gz # Change Workdir WORKDIR /usr/local/src/zabbix-4.0.3 RUN ./configure --prefix=/usr/local/zabbix --enable-agent \ && make \ && make install RUN chown zabbix:zabbix -R /usr/local/zabbix/ # User USER zabbix # Change Workdir WORKDIR /usr/local/zabbix # Volume VOLUME ["/usr/local/zabbix"] # Port EXPOSE 10050 10051 # Cmd CMD ["/usr/local/zabbix/sbin/zabbix_agentd","-c","/usr/local/zabbix/etc/zabbix_agentd.conf","-f"]
NGINX
# This docker file # VERSION 1 # Author: joker # Base images FROM centos:7.6.1810 # Maintainer MAINTAINER joker.li xxx@qq.com # Commands RUN rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm \ && yum install -y nginx \ && echo "daemon off;" >> /etc/nginx/nginx.conf # Add ADD index.html /usr/share/nginx/html/index.html # Expose EXPOSE 80 # Cmd CMD ["nginx"]
https://docs.docker.com/compose/overview/
https://hub.docker.com/search?q=&type=image
EXAMPLE
[root@localhost compose]# cat docker-compose.yml.bak version: '3' services: test11: image: busybox:latest entrypoint: - top container_name: test1 networks: - backend test12: image: busybox:latest entrypoint: - top container_name: test2 networks: - backend networks: backend:
WORDPRESS
[root@localhost compose]# cat docker-compose.yml version: '3' services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql ports: - "3306:3306" restart: always environment: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depends_on: - db image: wordpress:latest ports: - "8000:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress volumes: db_data: