首页 文章 精选 留言 我的

精选列表

搜索[LNMP],共347篇文章
优秀的个人博客,低调大师

Docker部署WordPress LNMP(Nginx PHP MySQL)环境实践

Docker基于LXC实现了把软件封装到一个完整的文件系统,可以在docker容器中运行所需的一切代码,运行环境,系统工具和系统库。由于docker使用独立于主机的文件系统,可以确保软件在不同的主机环境中仍然保持运行环境不变。docker与主机共用一个操作系统内核,使用docker容器具有轻量级的特点,能占用更少的内存快速启动容器。 下面我们学习使用docker来部署目前非常流行的博客系统wordpress的运行环境nginxphpmysql(作者wordpress博客www.centos.bz正是运行在docker容器中)。那么docker部署wordpress的运行环境与我们传统上直接在主机配置环境有什么区别?我们从开发和运维人员角度来说明。运维使用docker制作好wordpress容器,分发给开发人员,开发人员随即只需一个命令就可以部署好完全一样的运行环境,从此只需要关注代码本身,而不再需要把时间浪费在配置环境上。而同时,docker容器确保了开发环境与生产环境的一致性,极大减少由于开发环境与生产环境不一致出现的各种问题。而由于docker容器可以快速部署的特点,运维人员可以很轻松的对服务进行伸缩和扩展。 那么如何使用docker部署wordpress的运行环境?大概步骤是分别编写nginxphpmysql的Dockerfile文件,从这些Dockerfile文件中生成各自的镜像,然后使用docker-compose工具来统一管理nginx php mysql。为了能只使用docker-compose.yml一个文件就能快速部署wordpress环境,我们把Dockerfile及环境的相关配置保存到阿里云的Kelude(git代码托管code.aliyun.com),然后使用阿里云的Docker镜像仓库(cr.console.aliyun.com)从Kelude拉取Dockerfile自动构建镜像。国外此类服务有hub.docker.com和github.com,使用阿里云的是因为可以免费设置私有git仓库和私有镜像,因为我们可能需要保存一些不便公开的私密信息(如网站证书,密码)。当然你也可以不使用这类服务,直接把镜像保存到本地环境中。下面开始一步步介绍(如需帮助,请联系QQ 452336092)。 准备工作 使用阿里云Kelude 到https://code.aliyun.com/创建一个项目,如Dockerfile。之后我们把wordpress环境的所有相关Dockerfile及配置文件放置到centosbz目录。 使用阿里云镜像仓库 阿里云docker镜像仓库地址为https://cr.console.aliyun.com,用来存放docker镜像,可以在本地push镜像上去,也可以从Kelude拉取Dockerfile自动构建镜像。我们先登录,然后新建一个namespace,如centos-bz,之后所有的nginx,php,mysql镜像将存放在这个namespace下。 安装docker-compose 需要在运行docker容器的主机上安装docker-compose,可以参照官方文档手动安装,也可以使用ezhttp的一键安装工具(推荐)安装。如: wget centos.bz/ezhttp.zip unzip ezhttp.zip cd ezhttp-master ./start.sh 之后会弹出一个菜单,输入2选择Some Useful Tools,然后输入18选择安装docker和compose。 编写Dockerfile clone以上在阿里云Kelude创建的Dockerfile镜像到本地,在此项目中创建centos.bz,然后在centos.bz目录分别创建mysql,nginx,php目录,用于存放它们各自Dockerfile及配置文件。 这里我们还约定以下目录: /home/docker/nginx/logs/centos.bz:存放www.centos.bz网站的日志 /home/docker/nginx/www/centos.bz: 存放www.centos.bz网站的文件 /home/docker/php: 存放 php-fpm的日志 /home/docker/mysql:mysql data目录 nginx Dockerfile 在nginx目录创建Dockerfile文件,写入如下内容: # 从debian:jessie镜像基础上安装nginx FROM debian:jessie # 声明此Dockerfile维护者的邮箱,有什么问题可以发到此邮件寻问 LABEL maintainer "admin@centos.bz" # 定义软件版本及编译工具变量 ENV NGINX_VERSION 1.10.3 ENV OPENSSL_VERSION 1.0.2h ENV ZLIB_VERSION 1.2.11 ENV PCRE_VERSION 8.40 ENV CONCAT_VERSION 1.2.2 ENV BUILD_TOOLS wget gcc make g++ ENV SRC_DIR /opt/nginx # 切换到工作目录 WORKDIR ${SRC_DIR} # 开始编译nginx,我们这里使用编译安装nginx而不是使用官方提供的nginx镜像是因为这里使用到了第三方的concat模块,只能编译了。 # 把所有的安装命令都写在一个RUN指令中是因为这样可以减小镜像层数,缩减镜像大小。推荐使用反斜杠和&&把所有的安装命令放置到一行中。 RUN apt-get update \ && apt-get -y --no-install-recommends install ca-certificates ${BUILD_TOOLS} \ && wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz \ && wget https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz \ && wget http://www.zlib.net/zlib-${ZLIB_VERSION}.tar.gz \ && wget https://ftp.pcre.org/pub/pcre/pcre-${PCRE_VERSION}.tar.gz \ && wget https://github.com/alibaba/nginx-http-concat/archive/${CONCAT_VERSION}.tar.gz -O nginx-http-concat-${CONCAT_VERSION}.tar.gz \ && tar xf nginx-${NGINX_VERSION}.tar.gz \ && tar xf openssl-${OPENSSL_VERSION}.tar.gz \ && tar xf zlib-${ZLIB_VERSION}.tar.gz \ && tar xf pcre-${PCRE_VERSION}.tar.gz \ && tar xf nginx-http-concat-${CONCAT_VERSION}.tar.gz \ && cd nginx-${NGINX_VERSION} \ && ./configure --prefix=/usr/local/nginx --with-pcre=../pcre-${PCRE_VERSION} \ --with-zlib=../zlib-${ZLIB_VERSION} \ --with-http_ssl_module \ --with-openssl=../openssl-${OPENSSL_VERSION} \ --add-module=../nginx-http-concat-${CONCAT_VERSION} \ && make -j$(nproc) \ && make install \ && rm -rf ${SRC_DIR} \ && apt-get purge -y --auto-remove ${BUILD_TOOLS} \ && rm -rf /var/lib/apt/lists/* # 把构建上下文目录conf,即Dockerfile/centos.bz/nginx/conf目录下的文件复制到容器的/usr/local/nginx/conf目录。 COPY conf/ /usr/local/nginx/conf/ # 定义启动容器时运行的命令 ENTRYPOINT ["/usr/local/nginx/sbin/nginx"] EXPOSE 80 443 对于conf目录下的nginx配置文件,需要把日志,网站目录更改为以下约定的目录位置。 php-fpm Dockerfile 创建Dockerfile/centos.bz/php-fpm目录,在此目录下创建Dockerfile文件,内容如下: FROM debian:jessie LABEL maintainer "admin@centos.bz" # 定义软件版本,编译工具,依赖等变量 ENV PHP_VERSION 5.6.30 ENV BUILD_TOOLS m4 \ autoconf \ autoconf2.13 \ openssl \ wget \ gcc \ make ENV BUILD_DEPS libcurl4-gnutls-dev \ libxml2-dev \ zlib1g-dev \ libpcre3-dev \ libjpeg-dev \ libpng12-dev \ libfreetype6-dev \ libmhash-dev \ libmcrypt-dev \ libssl-dev \ libtool ENV PHP_LOCATION /usr/local/php ENV BUILD_ARG --prefix=${PHP_LOCATION} \ --with-config-file-path=${PHP_LOCATION}/etc \ --enable-fpm \ --enable-bcmath \ --with-pdo_sqlite \ --with-gettext \ --with-iconv \ --enable-ftp \ --with-sqlite3 \ --enable-mbstring \ --enable-sockets \ --enable-zip \ --enable-soap \ --with-openssl \ --with-zlib \ --with-curl \ --with-gd \ --with-jpeg-dir \ --with-png-dir \ --with-freetype-dir \ --with-mcrypt \ --with-mhash \ --with-mysql=mysqlnd \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd \ --without-pear \ --with-libdir=lib64 \ --enable-opcache \ --disable-cgi ENV SRC_DIR /opt/php WORKDIR ${SRC_DIR} # 开始编译安装php RUN apt-get update \ && apt-get -y --no-install-recommends install ${BUILD_DEPS} ${BUILD_TOOLS} \ && wget http://php.net/distributions/php-${PHP_VERSION}.tar.gz \ && tar xf php-${PHP_VERSION}.tar.gz \ && cd php-${PHP_VERSION} \ && ln -s /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib/libssl.so \ && ln -s /usr/lib /usr/lib64 \ && ./configure ${BUILD_ARG} \ && make -j$(nproc) \ && make install \ && cp php.ini-production ${PHP_LOCATION}/etc/php.ini \ && cp ${PHP_LOCATION}/etc/php-fpm.conf.default ${PHP_LOCATION}/etc/php-fpm.conf \ && rm -rf ${SRC_DIR} \ && apt-get purge -y --auto-remove ${BUILD_TOOLS} \ && rm -rf /var/lib/apt/lists/* WORKDIR ${PHP_LOCATION}/etc/ # 配置php-fpm,即使用sed工具编辑php-fpm.conf和php.ini文件,这里的php-fpm相关配置命令不与上面的编译命令合在一起来减小层数是因为 # 配置文件可能会改动比较多,这样分开当配置文件更改时可以直接使用缓存跳过编译步骤,加快构建速度。 RUN set_php_variable(){ \ local key=$1; \ local value=$2; \ if grep -q -E "^$key\s*=" php.ini;then \ sed -i -r "s#^$key\s*=.*#$key=$value#" php.ini; \ else \ sed -i -r "s#;\s*$key\s*=.*#$key=$value#" php.ini; \ fi; \ if ! grep -q -E "^$key\s*=" php.ini;then \ echo "$key=$value" >> php.ini; \ fi; \ } \ && BASE_DIR=/home/docker/php \ && set_php_variable disable_functions "dl,eval,assert,exec,popen,system,passthru,shell_exec,escapeshellarg,escapeshellcmd,proc_close,proc_open" \ && set_php_variable expose_php Off \ && set_php_variable error_log ${BASE_DIR}/php_errors.log \ && set_php_variable request_order "CGP" \ && set_php_variable cgi.fix_pathinfo 0 \ && set_php_variable short_open_tag on \ && set_php_variable date.timezone Asia/Chongqing \ && sed -i 's/^user =.*/user = www-data/' php-fpm.conf \ && sed -i 's/^group =.*/group = www-data/' php-fpm.conf \ && sed -i "s#;slowlog = log/\$pool.log.slow#slowlog = ${BASE_DIR}/\$pool.log.slow#" php-fpm.conf \ && sed -i 's/;request_slowlog_timeout = 0/request_slowlog_timeout = 5/' php-fpm.conf \ && sed -i 's/^pm.max_children.*/pm.max_children =20/' php-fpm.conf \ && sed -i 's/^pm.start_servers.*/pm.start_servers =5/' php-fpm.conf \ && sed -i 's/^pm.min_spare_servers.*/pm.min_spare_servers =3/' php-fpm.conf \ && sed -i 's/^pm.max_spare_servers.*/pm.max_spare_servers =8/' php-fpm.conf \ && sed -i '/\[global\]/a\daemonize =no' php-fpm.conf \ && sed -i 's/^listen.*/listen =0.0.0.0:9000/' php-fpm.conf \ && echo "[opcache]\n \ zend_extension=opcache.so\n \ opcache.memory_consumption=128\n \ opcache.interned_strings_buffer=8\n \ opcache.max_accelerated_files=4000\n \ opcache.revalidate_freq=60\n \ opcache.fast_shutdown=1 \n" >> php.ini ENTRYPOINT ["/usr/local/php/sbin/php-fpm"] EXPOSE 9000 mysql Dockerfile 创建Dockerfile/centos.bz/mysql/Dockerfile文件,内容如下: FROM mysql:5.6 LABEL maintainer "admin@centos.bz" COPY my.cnf /etc/mysql/my.cnf 这个Dockerfile非常简单,直接使用了官方的mysql镜像,唯一区别是我们使用自己定义的my.cnf配置文件。 对于my.cnf配置文件,需要把日志,data目录指向/home/docker/mysql,一个my.cnf示例文件如下: # Generated by EZHTTP at 2016-02-03 01:05:29 [mysql] # CLIENT # port = 3306 socket = /home/docker/mysql/mysql.sock [mysqld] # GENERAL # port = 3306 user = mysql default-storage-engine = InnoDB socket = /home/docker/mysql/mysql.sock pid-file = /home/docker/mysql/mysql.pid skip-name-resolve # MyISAM # key-buffer-size = 32M # INNODB # #innodb-flush-method = O_DIRECT innodb-log-files-in-group = 2 innodb-log-file-size = 64M innodb-flush-log-at-trx-commit = 2 innodb-file-per-table = 1 innodb-buffer-pool-size = 1G # CACHES AND LIMITS # tmp-table-size = 32M max-heap-table-size = 32M query-cache-type = 0 query-cache-size = 0 max-connections = 300 thread-cache-size = 50 open-files-limit = 1024 table-definition-cache = 100 table-open-cache = 400 # SAFETY # max-allowed-packet = 16M max-connect-errors = 1000000 # DATA STORAGE # datadir = /home/docker/mysql # LOGGING # log-error = /home/docker/mysql/mysql-error.log log-queries-not-using-indexes = 1 slow-query-log = 1 slow-query-log-file = /home/docker/mysql/mysql-slow.log # BINARY LOGGING # log-bin = /home/docker/mysql/mysql-bin server-id = 1 expire-logs-days = 14 sync-binlog = 1 构建镜像 把上一步创建的文件推送到阿里云的Kelude。然后我们登录阿里云的docker镜像仓库cr.console.aliyun.com。这里以设置自动构建nginx镜像为例,php和mysql镜像构建设置类似。 1.点击左侧“镜像列表”,在右侧点击仓库镜像,如图: 2.在仓库镜像创建对话框中,说明如下: 地域:选择离部署docker主机最近的位置,国内的话选择华东1或华东2。 Namespace和仓库名称:这里选择centos-bz,nginx。 设置代码源:我们这里选择阿里云code。 构建设置:勾选代码变更时自动构建镜像,海外机器构建(因为国内主机apt-get安装软件时较慢),Dockerfile路径填/centos.bz/nginx 完成后点击创建仓库按钮。 如图: 3.回到镜像列表,找到nginx镜像,点击管理。 4.左侧点击“构建”,右侧点击“立即构建”开始首次构建,之后我们更改Dockerfile及配置文件到Kelude之后就会自动构建了。 5.查看日志,查看构建进程。 然后继续完成php,mysql的镜像构建设置。 启动环境 为了方便统一管理nginx,php,mysql的启动,我们使用docker-compose工具。我们只需要编写一个docker-compose.yml文件,然后使用docker-compose工具就可以快速启动docker容器了。之后把docker-compose.yml传输到任意一台支持docker环境的主机中就可以快速配置wordpress的运行环境。 docker-compose.yml 把docker-compose.yml文件放置在/home/docker目录下。 version: '3' # 定义三个服务nginx,php,mysql services: nginx: # 依赖php服务,意味着在启动nginx之前先启动php depends_on: - php # nginx镜像的路径 image: registry.cn-hangzhou.aliyuncs.com/centos-bz/nginx # 容器的/home/docker/nginx目录挂载主机中的/home/docker/nginx目录, # 这样使nginx容器把网站文件和目录存放到主机目录中,持久化和方便管理 volumes: - /home/docker/nginx:/home/docker/nginx # nginx意外退出时自动重启 restart: always # 映射80和443端口 ports: - "80:80" - "443:443" # 容器名称 container_name: nginx php: depends_on: - mysql image: registry.cn-hangzhou.aliyuncs.com/centos-bz/php-fpm restart: always volumes: - /home/docker/nginx/www:/home/docker/nginx/www - /home/docker/php:/home/docker/php container_name: php mysql: image: registry.cn-hangzhou.aliyuncs.com/centos-bz/mysql volumes: - /home/docker/mysql:/home/docker/mysql restart: always # 设置MYSQL_ROOT_PASSWORD环境变量,这里是设置mysql的root密码。这里为root。 environment: MYSQL_ROOT_PASSWORD: root container_name: mysql 启动环境 在/home/docker目录执行: docker-compose up 查看nginx,php,mysql是否正常启动,如果正常,ctrl-c停止,再执行: docker-compose up -d 这里compose命令就在后台启动了。 执行docker ps查看容器运行状态。 连接问题 容器之间可以通过容器名称来连接,如nginx配置文件中连接php的代码fastcgi_pass php:9000,网站数据库配置文件使用mysql:3306。 日常运维 迁移 比如A主机迁移到B主机。只需要三步。 1.打包A主机的/home/docker目录,传输到B主机相同位置 2.配置B主机docker环境 3.在B主机的/home/docker目录下执行docker-compose up -d 导出导入数据库 把centos.sql.gz数据库文件导入到centos数据库: gunzip < centos.sql.gz | docker exec -i mysql mysql -uroot -proot centos 把centos数据库导出到centos.sql.gz docker exec -i mysql mysqldump -uroot -proot centos | gzip > centos.sql.gz 备份 推荐使用ezhttp一键备份设置: wget centos.bz/ezhttp.zip unzip ezhttp.zip cd ezhttp-master ./start.sh 之后会弹出一个菜单,输入2选择Some Useful Tools,然后输入14选择备份设置。需要注意的是在设置mysql使用mysqldump备份时,在提示输入mysql bin directory时,输入docker exec /usr/bin/。

优秀的个人博客,低调大师

Zabbix 服务端安装与配置LNMP(学习笔记一)

1、关闭SELINUX和防火墙: sed -i 's/SELINUX=enabled/SELINUX=disabled/g' /etc/selinux/config getenforce 0 service iptables stop service firewalld stop 2、安装相关组件: yum -y install wget libtool expat-devel pcre-devel zlib-devel openssl openssl-devel pcre yum -y install gcc gcc-c++ glibc automake autoconf libtool make yum -y install libmcrypt-devel mhash-devel libxslt-devel yum -yinstalllibjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel yum -yinstallzlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel yum -yinstallncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel yum -yinstallkrb5 krb5-devel libidn libidn-devel openssl openssl-devel 3、安装pcre: cd /usr/local/src wget http://sourceforge.net/projects/pcre/files/pcre/8.39/pcre-8.39.tar.gz/download -O pcre-8.39.tar.gz--no-check-certificate tar -zxvf pcre-8.39.tar.gz cd pcre-8.39 ./configure make && make install 4、安装zlib: cd /usr/local/src wget http://zlib.net/zlib-1.2.11.tar.gz tar -zxvf zlib-1.2.11.tar.gz cd zlib-1.2.11 ./configure make && make install 5、安装openssl: cd /usr/local/src wget https://www.openssl.org/source/openssl-1.1.0b.tar.gz tar -zxvf openssl-1.1.0b.tar.gz cd openssl-1.1.0b ./config make && make install 6、安装nginx: cd /usr/local/src wget http://nginx.org/download/nginx-1.10.2.tar.gz tar -zxvf nginx-1.10.2.tar.gz cd nginx-1.10.2 groupadd -r nginx useradd -r -g nginx nginx ./configure \ --prefix=/usr/local/nginx \ --sbin-path=/usr/local/nginx/sbin/nginx \ --conf-path=/usr/local/nginx/nginx.conf \ --pid-path=/usr/local/nginx/nginx.pid \ --user=nginx \ --group=nginx \ --with-http_ssl_module \ --with-http_flv_module \ --with-http_mp4_module \ --with-http_stub_status_module \ --with-http_gzip_static_module \ --http-client-body-temp-path=/var/tmp/nginx/client/ \ --http-proxy-temp-path=/var/tmp/nginx/proxy/ \ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \ --http-scgi-temp-path=/var/tmp/nginx/scgi \ --with-pcre=/usr/local/src/pcre-8.39 \ --with-zlib=/usr/local/src/zlib-1.2.11 \ --with-openssl=/usr/local/src/openssl-1.1.0b \ ; make && make install netstat -ano|grep 80 mkdir -p /var/tmp/nginx/client /usr/local/nginx/sbin/nginx 7、搭建MYSQL: useradd -s /sbin/nologin -M mysql cd /usr/local/src wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz tar -zxvf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz mv mysql-5.7.17-linux-glibc2.5-x86_64 /usr/local/mysql-5.7.17 ln -s /usr/local/mysql-5.7.17 /usr/local/mysql 8、配置MYSQL: #创建数据库文件目录 mkdir -p /data/mysql chown -R mysql.mysql /data/ #配置启动脚本文件,并加入系统服务,自启动 cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld chmod +x /etc/init.d/mysqld chkconfig --add mysqld chkconfig mysqld on #配置mysql配置文件 cat > /etc/my.cnf << EOF [client] port = 3306 socket = /tmp/mysql.sock default-character-set = utf8 [mysqld] port = 3306 socket = /tmp/mysql.sock basedir = /usr/local/mysql datadir = /data/mysql pid-file = /data/mysql/mysql.pid user = mysql bind-address = 0.0.0.0 server-id = 1 init-connect = 'SET NAMES utf8' character-set-server = utf8 #skip-name-resolve #skip-networking back_log = 300 max_connections = 1000 max_connect_errors = 6000 open_files_limit = 65535 table_open_cache = 128 max_allowed_packet = 4M binlog_cache_size = 1M max_heap_table_size = 8M tmp_table_size = 16M read_buffer_size = 2M read_rnd_buffer_size = 8M sort_buffer_size = 8M join_buffer_size = 8M key_buffer_size = 4M thread_cache_size = 8 query_cache_type = 1 query_cache_size = 8M query_cache_limit = 2M ft_min_word_len = 4 log_bin = mysql-bin binlog_format = mixed expire_logs_days = 30 log_error = /data/mysql/mysql-error.log slow_query_log = 1 long_query_time = 1 slow_query_log_file = /data/mysql/mysql-slow.log performance_schema = 0 explicit_defaults_for_timestamp #lower_case_table_names = 1 skip-external-locking default_storage_engine = InnoDB #default-storage-engine = MyISAM innodb_file_per_table = 1 innodb_open_files = 500 innodb_buffer_pool_size = 64M innodb_write_io_threads = 4 innodb_read_io_threads = 4 innodb_thread_concurrency = 0 innodb_purge_threads = 1 innodb_flush_log_at_trx_commit = 2 innodb_log_buffer_size = 2M innodb_log_file_size = 32M innodb_log_files_in_group = 3 innodb_max_dirty_pages_pct = 90 innodb_lock_wait_timeout = 120 bulk_insert_buffer_size = 8M myisam_sort_buffer_size = 8M myisam_max_sort_file_size = 10G myisam_repair_threads = 1 interactive_timeout = 28800 wait_timeout = 28800 [mysqldump] quick max_allowed_packet = 16M [myisamchk] key_buffer_size = 8M sort_buffer_size = 8M read_buffer = 4M write_buffer = 4M EOF 9、初始化MYSQL数据库: #初始化数据库: /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql #配合环境变量 echo "export PATH=$PATH:/usr/local/mysql/bin" >>/etc/profile . /etc/profile #启动MySQL服务 /etc/init.d/mysqld start #修改root密码 mysql -uroot #mysql -uroot -pk8008.com -e "use mysql;update user set authentication_string=password('新密码') where user='root';" update mysql.user set authentication_string=password("123456") where user='root'; 10、PHP安装: #安装第三方yum源 wget http://www.atomicorp.com/installers/atomic sh ./atomic #使用yum命令安装 yum -y install zlib libxml libjpeg freetype libpng gd curl libiconv zlib-devel gd-devel curl-devel openssl-devel libxslt-devel* php-mcrypt libmcrypt libmcrypt-devel mhash mhash-devel libevent libevent-devel libxml2 libxml2-devel bzip2-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel wget http://mirrors.sohu.com/php/php-5.6.30.tar.gz tar zxvf php-5.6.30.tar.gz cd php-5.6.30 ./configure \ --prefix=/usr/local/php \ --with-config-file-path=/usr/local/php/etc \ --enable-inline-optimization \ --enable-fpm \ --with-mysql=/usr/local/mysql \ --with-mysqli=/usr/local/mysql/bin/mysql_config \ --with-pdo-mysql=/usr/local/mysql \ --with-gettext \ --enable-mbstring \ --with-iconv=/usr/local/libiconv \ --with-mcrypt \ --with-mhash \ --enable-bcmath \ --enable-soap \ --with-libxml-dir \ --enable-sockets \ --with-curl \ --with-zlib \ --enable-zip \ --with-bz2 \ --with-gd \ --with-freetype-dir \ --with-jpeg-dir \ --with-iconv \ --with-png-dir make make install cp php.ini-production /usr/local/php/etc/php.ini 11、安装zabbix: #安装ZABBIX wget https://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.0.4/zabbix-3.0.4.tar.gz yum install net-snmp-devel tar zxvf zabbix-3.0.4.tar.gz cd zabbix-3.0.4 ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 make && make install echo $? 12、导入zabbix数据库: mysql create database zabbix grant all on zabbix.* to 'zabbixuser'@'localhost' identified by '123456'; flush privileges; use zabbix; source /usr/local/src/zabbix-3.0.4/database/mysql/schema.sql source /usr/local/src/zabbix-3.0.4/database/mysql/images.sql source /usr/local/src/zabbix-3.0.4/database/mysql/data.sql 13、修改zabbix配置文件: #配置zabbix_server配置文件修改如下: LogFile=/usr/local/zabbix/logs/zabbix_server.log DBHost=127.0.0.1 DBName=zabbix DBUser=zabbixuser DBPassword=123456 #zabbixuser的密码 LogSlowQueries=3000 cp misc/init.d/fedora/core/* /etc/init.d/ chmod +x /etc/init.d/zabbix_server chmod +x /etc/init.d/zabbix_agentd sed -i 's#BASEDIR=/usr/local#BASEDIR=/usr/local/zabbix#g' /etc/init.d/zabbix_agentd sed -i 's#BASEDIR=/usr/local#BASEDIR=/usr/local/zabbix#g' /etc/init.d/zabbix_server useradd -s /sbin/nologin -M zabbix mkdir /usr/local/zabbix/logs chown -R zabbix.zabbix /usr/local/zabbix/ /etc/init.d/zabbix_agentd start /etc/init.d/zabbix_server start #######配置脚本存放目录 mkdir /usr/local/zabbix/alertscripts vi /usr/local/zabbix/etc/zabbix_server.conf AlertScriptsPath=/usr/local/zabbix/alertscripts 14、修改PHP.INI: sed -i 's#;date.timezone =#date.timezone = Asia/Shanghai#g' /usr/local/php/etc/php.ini sed -i 's#post_max_size = 8M#post_max_size = 16M#g' /usr/local/php/etc/php.ini sed -i 's#max_execution_time = 30#max_execution_time = 300#g' /usr/local/php/etc/php.ini sed -i 's#max_input_time = 60#max_input_time = 300#g' /usr/local/php/etc/php.ini sed -i 's#;always_populate_raw_post_data = -1#always_populate_raw_post_data = -1#g' /usr/local/php/etc/php.ini 15、配置nginx: user www www; pid /usr/local/nginx/nginx.pid; worker_processes auto; worker_rlimit_nofile 100000; events { use epoll; multi_accept on; worker_connections 51200; } http { server_tokens off; sendfile on; tcp_nopush on; tcp_nodelay on; access_log off; error_log /var/log/nginx/error.log crit; keepalive_timeout 10; client_header_timeout 10; client_body_timeout 10; reset_timedout_connection on; send_timeout 10; limit_conn_zone $binary_remote_addr zone=addr:5m; limit_conn addr 100; include /usr/local/nginx/mime.types; default_type text/html; charset UTF-8; gzip on; gzip_disable "msie6"; gzip_proxied any; gzip_min_length 1000; gzip_comp_level 6; gzip_disable <93>MSIE [1-6].(?!.*SV1)<94>; open_file_cache max=100000 inactive=20s; open_file_cache_valid 30s; open_file_cache_min_uses 2; open_file_cache_errors on; include /usr/local/nginx/conf.d/*.conf; server { listen 9001; location ~ /nginx_status { stub_status on; access_log off; allow all; #deny all; } } server { listen 80; server_name zabbix.com; server_name 你的本机IP; root /usr/local/nginx/html; location /zabbix{ index index.php index.html index.htm; } location ~ \.php$ { include fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name; } } } } 16、启动登录: cd /usr/local/php/etc cp php-fpm.conf.default php-fpm.conf /usr/local/php/sbin/php-fpm cd /usr/local/src/zabbix-3.0.4 cp -ra frontends/php/ /usr/local/nginx/html/zabbix chown -R www.www /usr/local/nginx/html/zabbix #zabbix登录 账号:admin 密码:zabbix

优秀的个人博客,低调大师

Centos7YUM快速搭建LNMP环境并简易优化

下载并安装NGINX wget http://nginx.org/packages/mainline/centos/7/x86_64/RPMS/nginx-1.13.9-1.el7_4.ngx.x86_64.rpm rpm -ivh nginx-1.13.9-1.el7_4.ngx.x86_64.rpm systemctl enable nginx systemctl start nginx 下载并安装MYSQL wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm rpm -ivh mysql57-community-release-el7-11.noarch.rpm yum install -y mysql-server systemctl enable mysqld systemctl start mysqld 下载并安装PHP yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm yum --enablerepo=remi,remi-php72 install php php-common php-cli php-fpm php-pdo php-bcmath php-mysqlnd php-mbstring php-mcrypt php-gd php-dom php-xml php-zip chmod 777 -R /var/lib/php/session systemctl enable php-fpm systemctl start php-fpm 开启PHP缓存 - 修改php.ini中: realpath_cache_size = 4096k realpath_cache_ttl = 120 开启NGINX的GZIP并隐藏版本号 - 修改nginx.conf中: server_tokens off; gzip on; gzip_min_length 20k; gzip_buffers 4 16k; gzip_comp_level 4; gzip_types text/plain text/css text/javascript application/x-javascript application/xml application/x-httpd-php; server { listen 80 default; return 444; } 说明:优化仅针对低配服务器,是最简易的优化,可明显提升运行效率,配置不高的服务器不要过分优化,否则反而会增加服务器压力。

优秀的个人博客,低调大师

CentOS6.5下使用LNMP架构安装nextcloud云盘

最近两年随着各大网盘纷纷关闭,百度云也早早的就开始限速,文件的安全也没有保障。 所以还不如自己搭建一个网盘。网上看了下,发现有一个nextcloud比较好用。 支持多平台客户端,支持分享,使用操作简单。支持插件扩展,文件预览,在线协作。 1.安装nginx wget http://nginx.org/download/nginx-1.10.3.tar.gz tar -zxf nginx-1.10.3.tar.gz && cd nginx-1.10.3 ./configure --prefix=/usr/local/data/nginx --user=nginx --group=nginx --with-pcre --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module make && make install 2.安装配置php yum install http://rpms.famillecollet.com/enterprise/remi-release-6.rpm yum --enablerepo=remi-php56 install php php-fpm php-mysql php-gd php-xml php-redis php-libs php-devel php-zlib php-mbstring nginx 和php-fpm 的运行用户这里使用nginx vim /etc/php-fpm.conf user = nginx group = nginx listen = 127.0.0.1:9000 env[HOSTNAME] = $HOSTNAME env[PATH] = /usr/local/bin:/usr/bin:/bin env[TMP] = /tmp env[TMPDIR] = /tmp env[TEMP] = /tmp 3.安装mysql yum -y install mysql mysql-server service mysqld start 4.建库,授权 CREATE DATABASE nextcloud_db; GRANT ALL ON nextcloud_db.* TO 'nextcloud'@'%' IDENTIFIED BY 'nextcloud'; //注意一定要加 "%",否则无法让网络让任何人上传文件 FLUSH PRIVILEGES; 5.安装nextcloud wget https://download.nextcloud.com/server/releases/nextcloud-10.0.2.zip --no-check-certificate unzip nextcloud-10.0.2.zip mv nextcloud /usr/local/data/nginx/html /usr/local/data/nginx/html chown -R nginx.nginx 创建数据目录,这里建议数据目录不要和web目录放到一起 /usr/local/data/nginx/html/nextcloud/data 6.申请证书 为了网盘的安全,有必要使用https 证书,这里可以在阿里云后台申请免费的DV证书 7.配置nginx 创建虚拟主机文件 cd /usr/local/data/nginx/conf vim nextcloud.conf upstream php-handler { server 127.0.0.1:9000; } server { listen 80; server_name cloud.nextcloud.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name cloud.nextcloud.com; ssl_certificate /usr/local/data/nginx/conf/nextcloud.crt; ssl_certificate_key /usr/local/data/nginx/conf/nextcloud.key; #添加如下header主要为了安全 add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;"; add_header X-Content-Type-Options nosniff; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; #nextcloud代码目录 root /usr/local/data/nginx/html/nextcloud/; location = /robots.txt { allow all; log_not_found off; access_log off; } #为了支持user_webfinger app rewrite ^/.well-known/host-meta /public.php?service=host-meta last; rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last; #这儿是为了支持日历和联系人,建议加上 location = /.well-known/carddav { return 301 $scheme://$host/remote.php/dav; } location = /.well-known/caldav { return 301 $scheme://$host/remote.php/dav; } #设置上传文件的最大大小,php也得修改 client_max_body_size 512M; fastcgi_buffers 64 4K; # Disable gzip to avoid the removal of the ETag header gzip off; error_page 403 /core/templates/403.php; error_page 404 /core/templates/404.php; #重要的:将所有请求转发到index.php上 location / { rewrite ^ /index.php$uri; } #安全设置,禁止访问部分敏感内容 location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ { deny all; } location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { deny all; } location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) { include fastcgi_params; fastcgi_split_path_info ^(.+\.php)(/.*)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param HTTPS on; #Avoid sending the security headers twice fastcgi_param modHeadersAvailable true; fastcgi_param front_controller_active true; fastcgi_pass php-handler; fastcgi_intercept_errors on; fastcgi_request_buffering off; } #安全设置,禁止访问部分敏感内容 location ~ ^/(?:updater|ocs-provider)(?:$|/) { try_files $uri/ =404; index index.php; } # 添加js和css文件的缓存控制头 location ~* \.(?:css|js)$ { try_files $uri /index.php$uri$is_args$args; add_header Cache-Control "public, max-age=7200"; add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;"; add_header X-Content-Type-Options nosniff; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; access_log off; } location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ { try_files $uri /index.php$uri$is_args$args; access_log off; } } vim nginx.conf include nextcloud.conf; service nginx start 8.配置php上传大小 vim /etc/php.ini max_execution_time = 0 post_max_size = 512M upload_max_filesize = 512M service php-fpm start 9.配置nextcloud 10.nextcloud 配置redis缓存 使用Redis做内存缓存可以有效提升程序运行速度。 curl -Ohttp://download.redis.io/releases/redis-3.2.8.tar.gz tar -zxvf redis-3.2.8.tar.gz cd redis-3.2.8/deps/ make geohash-int hiredis jemalloc linenoise lua cd .. make && make install cd utils/ ./install_server.sh 配置redis vim /etc/redis/6379.conf # requirepass foobared requirepass ExpvUwNOk9XRawC8 bind 192.168.40.200 启动 redis-server /etc/redis/6379.conf 配置nextcloud cd /usr/local/nginx/html/nextcloud/config vim config.php 'memcache.local' => '\OC\Memcache\Redis', 'redis' => array( 'host' => '192.168.40.200', 'port' => 6379, 'password' => 'ExpvUwNOk9XRawC8', ), 刷新页面 设置定时 */15 * * * * /usr/bin/php /usr/local/nginx/html/nextcloud/cron.php >/dev/null 本文转自 顶风走千里 51CTO博客,原文链接:http://blog.51cto.com/13505030/2064632

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册