??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲综合视频网,国产精品大片免费观看,国产伦精品一区二区三区精品视频http://www.aygfsteel.com/Alpha/多少春秋风雨?多少崎岖不变?/description>zh-cnThu, 01 May 2025 09:36:31 GMTThu, 01 May 2025 09:36:31 GMT60Centos7安装Nginx+PHP+MySQLhttp://www.aygfsteel.com/Alpha/archive/2019/08/13/434429.htmlAlphaAlphaTue, 13 Aug 2019 09:37:00 GMThttp://www.aygfsteel.com/Alpha/archive/2019/08/13/434429.htmlhttp://www.aygfsteel.com/Alpha/comments/434429.htmlhttp://www.aygfsteel.com/Alpha/archive/2019/08/13/434429.html#Feedback0http://www.aygfsteel.com/Alpha/comments/commentRss/434429.htmlhttp://www.aygfsteel.com/Alpha/services/trackbacks/434429.htmlnginx依赖以下模块Q? gzip模块需?zlib ? rewrite模块需?pcre ? ssl 功能需要openssl?
源码目录为:/usr/local/src
1、安装make yum -y install gcc automake autoconf libtool make
2、安装g++ yum install gcc gcc-c++
3、安装PCRE? cd /usr/local/src wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.42.tar.gz tar -zxvf pcre-8.42.tar.gz cd pcre-8.42/ ./configure make && make install 出现如下报错Q? make[2]: *** [install-libLTLIBRARIES] Error 1 make[2]: Leaving directory `/usr/local/src/pcre-8.42' make[1]: *** [install-am] Error 2 make[1]: Leaving directory `/usr/local/src/pcre-8.42' make: *** [install] Error 2 权限不够Q切换到rootQ重新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 http://www.openssl.org/source/openssl-1.1.0h.tar.gz tar -zxvf openssl-fips-2.0.16.tar.gz cd openssl-fips-2.0.16/ ./config make && make install ~译安装 Openssl 1.1.1 支持国密标准 https://blog.51cto.com/1012682/2380553 6、创建用户及用户l? 一般ؓ了服务器安全Q会指定一个普通用h限的账号做ؓNginx的运行角Ԍq里使用www用户做ؓNginx工作q程的用戗后l安装的PHP也以www用户作ؓ工作q程用户? groupadd -r www useradd -r -g www www 二、NGINX 1、下? cd /usr/local/src wget http://nginx.org/download/nginx-1.14.0.tar.gz tar –zxvf nginx-1.14.0.tar.gz cd nginx-1.14.0 2、配|? ./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-http_mp4_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 make && make install nginx~译选项说明Q? --prefix表示nginx要安装到哪个路径下,q里指定刚才新徏好的/alidata/server目录下的nginx-1.12.2Q? --sbin-path表示nginx的可执行文g存放路径 --conf-path表示nginx的主配置文g存放路径Qnginx允许使用不同的配|文件启动,通过命o行中?c选项 --pid-path表示nginx.pid文g的存放\径,存储的主进E的q程受安装完成后Q可以随时改变的文g?Q?在nginx.conf配置文g中?PID指o。默认情况下Q文件名 为prefix/logs/nginx.pid --error-log-path表示nginx的主错误、警告、和诊断文g存放路径 --http-log-path表示nginx的主h的HTTP服务器的日志文g的存放\? --user表示nginx工作q程的用? --group表示nginx工作q程的用L --with-select_module?-without-select_module表示启用或禁用构Z个模块来允许服务器用select()Ҏ --with-poll_module?-without-poll_module表示启用或禁用构Z个模块来允许服务器用poll()Ҏ --with-http_ssl_module表示使用https协议模块。默认情况下Q该模块没有被构建。徏立ƈq行此模块的OpenSSL库是必需? --with-pcre表示pcre的源码\径,因ؓ解压后的pcre是放在root目录下的Q所以是/root/pcre-8.41Q? --with-zlib表示zlib的源码\径,q里因ؓ解压后的zlib是放在root目录下的Q所以是/root/zlib-1.2.11 --with-openssl表示openssl库的源码路径 配置OKQ? Configuration summary + using PCRE library: /usr/local/src/pcre-8.42 + using OpenSSL library: /usr/local/src/openssl-1.1.0h + using zlib library: /usr/local/src/zlib-1.2.11 nginx path prefix: "/usr/local/nginx" nginx binary file: "/usr/local/nginx/sbin/nginx" nginx modules path: "/usr/local/nginx/modules" nginx configuration prefix: "/usr/local/nginx" nginx configuration file: "/usr/local/nginx/nginx.conf" nginx pid file: "/usr/local/nginx/nginx.pid" nginx error log file: "/usr/local/nginx/logs/error.log" nginx http access log file: "/usr/local/nginx/logs/access.log" nginx http client request body temporary files: "/var/tmp/nginx/client/" nginx http proxy temporary files: "/var/tmp/nginx/proxy/" nginx http fastcgi temporary files: "/var/tmp/nginx/fcgi/" nginx http uwsgi temporary files: "/var/tmp/nginx/uwsgi" nginx http scgi temporary files: "/var/tmp/nginx/scgi" 3、安? make && make install 4、启? /usr/local/nginx/sbin/nginx 启动时报错: nginx: [emerg] mkdir() "/var/tmp/nginx/client/" failed (2: No such file or directory) 手动创徏该目录即可:mkdir -p /var/tmp/nginx/client 再次启动Q打开览器访问此机器的IPQ浏览器出现Welcome to nginx! 则表C?Nginx 已经安装q运行成功?
5、设|Yq接 ln -sf /usr/local/nginx/sbin/nginx /usr/sbin q样可以直接执行nginx来启动了?
6、检nginx nginx -t 昄Q? nginx: the configuration file /usr/local/nginx/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/nginx.conf test is successful 三、PHP 1、安装PHP需要的常用? yum -y install libmcrypt-devel mhash-devel libxslt-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel 2、下? cd /usr/local/src wget http://cn2.php.net/downloads.php/php-7.2.5.tar.gz tar -zxvf php-7.2.5.tar.gz 3、配|? ./configure --prefix=/usr/local/php \ --with-mysql=mysqlnd \ --enable-mysqlnd \ --with-gd \ --enable-gd-jis-conv \ --enable-fpm 4、安? make && make install 安装信息如下Q? Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/ Installing PHP CLI binary: /usr/local/php/bin/ Installing PHP CLI man page: /usr/local/php/php/man/man1/ Installing PHP FPM binary: /usr/local/php/sbin/ Installing PHP FPM defconfig: /usr/local/php/etc/ Installing PHP FPM man page: /usr/local/php/php/man/man8/ Installing PHP FPM status page: /usr/local/php/php/php/fpm/ Installing phpdbg binary: /usr/local/php/bin/ Installing phpdbg man page: /usr/local/php/php/man/man1/ Installing PHP CGI binary: /usr/local/php/bin/ Installing PHP CGI man page: /usr/local/php/php/man/man1/ Installing build environment: /usr/local/php/lib/php/build/ Installing header files: /usr/local/php/include/php/ Installing helper programs: /usr/local/php/bin/ program: phpize program: php-config Installing man pages: /usr/local/php/php/man/man1/ page: phpize.1 page: php-config.1 Installing PEAR environment: /usr/local/php/lib/php/ [PEAR] Archive_Tar: upgrade to a newer version (1.4.3 is not newer than 1.4.3) [PEAR] Console_Getopt: upgrade to a newer version (1.4.1 is not newer than 1.4.1) [PEAR] Structures_Graph: upgrade to a newer version (1.1.1 is not newer than 1.1.1) [PEAR] XML_Util: upgrade to a newer version (1.4.2 is not newer than 1.4.2) [PEAR] PEAR: upgrade to a newer version (1.10.5 is not newer than 1.10.5) /usr/local/src/php-7.2.5/build/shtool install -c ext/phar/phar.phar /usr/local/php/bin ln -s -f phar.phar /usr/local/php/bin/phar Installing PDO headers: /usr/local/php/include/php/ext/pdo/ 5、添加环境变? vim /etc/profile 在末֊? export PHP_HOME=/usr/local/php export PATH=/bin:/usr/bin:/usr/sbin:/sbin:$PATH:PHP_HOME/bin:$PHP_HOME/sbin 保存修改后,使用source命o重新加蝲配置文gQ? source /etc/profile 查看环境变量Q? echo $PATH 6、配|php-fpm cd /usr/local/php/etc cp php-fpm.conf.default php-fpm.conf cd php-fpm.d/ cp www.conf.default www.conf 使用vim命o对php-fpm.conf的内容进行如下修? pid = /usr/local/php/var/run/php-fpm.pid 使用vim命o对php-fpm.conf的内容进行如下修改: user = www group = www 其他配置可根据需求进行修改,比如pm.max_childrenQphp-fpm 能启动的子进E的最大数量)、pm.start_serversQphp启动Ӟ开启的子进E的数量Q、pm.min_spare_serversQ动态方式空闲状态下的最php-fpmq程数量Q、pm.max_spare_serversQ动态方式空闲状态下的最大php-fpmq程数量Q等? 7、启动php-fpm /usr/local/php/sbin/php-fpm 可以通过ps aux | grep php查看phpq程? https://www.cnblogs.com/sunshineliulu/p/8991957.html 三、MySQL https://blog.csdn.net/weixin_33859844/article/details/90948191 https://www.cnblogs.com/yangchunlong/p/8477743.html

Alpha 2019-08-13 17:37 发表评论
]]>
Ubuntu完美安装搭徏Git服务?/title><link>http://www.aygfsteel.com/Alpha/archive/2018/03/13/433097.html</link><dc:creator>Alpha</dc:creator><author>Alpha</author><pubDate>Tue, 13 Mar 2018 07:35:00 GMT</pubDate><guid>http://www.aygfsteel.com/Alpha/archive/2018/03/13/433097.html</guid><wfw:comment>http://www.aygfsteel.com/Alpha/comments/433097.html</wfw:comment><comments>http://www.aygfsteel.com/Alpha/archive/2018/03/13/433097.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Alpha/comments/commentRss/433097.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Alpha/services/trackbacks/433097.html</trackback:ping><description><![CDATA[<p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">一、安装git服务器所需软g</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">打开l端输入以下命oQ?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">ubuntu:~$ sudo apt-get install git-core openssh-server openssh-client<br />git-core是git版本控制核心软g</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">安装openssh-server和openssh-client是由于git需要通过ssh协议来在服务器与客户端之间传输文?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">然后中间有个认操作Q输入Y后等待系l自动从镜像服务器中下蝲软g安装Q安装完后会回到用户当前目录。如?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">安装提示p|Q可能是因ؓpȝ软g库的索引文g太旧了,先更C下就可以了,更新命o如下Q?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">ubuntu:~$ sudo apt-get update </p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">更新完Y件库索引后l执行上面的安装命o卛_?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">安装python的setuptools和gitosisQ由于gitosis的安装需要依赖于python的一些工P所以我们需要先安装python</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">的setuptools?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">执行下面的命令:</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">ubuntu:~$ sudo apt-get install python-setuptools<br />q个工具比较,安装也比较快Q接下来准备安装gitosisQ安装gitosis之前需要初始化一下服务器的git用户信息,q个随便填?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">ubuntu:~$ git config --global user.name "myname"<br />ubuntu:~$ git config --global user.email "******@gmail.com"</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">初始化服务器用户信息后,可以安装gitosis了,gitosis主要是用于给用户授权Q设|权限也是很方便的?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">可以通过以下命o获取gitosis版本文g</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">ubuntu:~$ git clone https://github.com/res0nat0r/gitosis.git<br />注意Q中间有两个是数字零</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">获取gitosis文g后,q入到文件目录下?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">ubuntu:/tmp$ cd gitosis/</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">接着使用python命o安装目录下的setup.py的python脚本q行安装</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">ubuntu:/tmp/gitosis$ sudo python setup.py install</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">到这里,整个安装步骤完成了Q下面就开始对gitq行一些基本的配置?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">二、创建git理员̎戗配|git</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">创徏一个̎PgitQ作为git服务器的理员,可以理其他用户的项目权限?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">ubuntu:/tmp/gitosis$ sudo useradd -m git<br />ubuntu:/tmp/gitosis$ sudo passwd git</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">然后?home目录下创Z个项目仓库存储点Qƈ讄只有git用户拥有所有权限,其他用户没有M权限?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">ubuntu:/tmp/gitosis$ sudo mkdir /home/gitrepository<br />ubuntu:/tmp/gitosis$ sudo chown git:git /home/gitrepository/<br />ubuntu:/tmp/gitosis$ sudo chmod 700 /home/gitrepository/</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">׃gitosis默认状态下会将仓库攑֜用户的repositories目录下,例如git用户的仓库地址默认?home/git/repositories/目录下,q里我们需要创Z个链接映。让他指向我们前面创建的专门用于存放目的仓库目?home/gitrepository?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">ubuntu:/tmp/gitosis$ sudo ln -s /home/gitrepository /home/git/repositories</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">q里我将在服务器端生成ssh公钥Q如果想在其他机器上理也可以在其他机器上生成一个ssh的公钥?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">ubuntu:/home/git$ ssh-keygen -t rsa</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">q里会提C入密码,我们不输入直接回车即可?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">然后用刚生成公钥id_rsa.pub来对gitosisq行初始化?br /></p><p style="font-size: 13px; background-color: #ffffff; margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #111111; font-family: Verdana, Arial, Helvetica, sans-serif;">向gitosisd公钥q初始化Q?br /><br />$ cp ~/.ssh/id_rsa.pub /tmp</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;"></p><p style="font-size: 13px; background-color: #ffffff; margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #111111; font-family: Verdana, Arial, Helvetica, sans-serif;">$ sudo -H -u gitadmin gitosis-init < /tmp/id_rsa.pub</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;"><img src="https://www.linuxidc.com/upload/2015_07/15072620256211.jpg" alt="Ubuntu完美搭徏Git服务? align="middle" width="705" vspace="5" style="border: 0px; cursor: pointer; display: block;" /></p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">出现如上信息说明gitosis已经初始化成功?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">gitosis主要是通过gitosis-admin.git仓库来管理一些配|文件的Q如用户权限的管理。这里我们需要对其中的一个post-update文gd可执行的权限?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">ubuntu:/home/git$ sudo chmod 755 /home/gitrepository/gitosis-admin.git/hooks/post-update</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">三、服务器上创建项目仓?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">使用git账户在服务器上创Z个目录(mytestproject.gitQƈ初始化成git目仓库?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">ubuntu:/home/git$ su git<br />$ cd /home/gitrepository<br />$ mkdir mytestproject.git<br />$ git init --bare mytestproject.git<br />$ exit</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">如果出现以下信息p明已l成功创Z一个名为mytestproject.git的项目仓库了Q新建的q个仓库暂时q是I的Q不能被客户端cloneQ还需要对gitosisq行一些配|操作?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">四、用gitosis理用户操作目的权?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">首先需要在前面生成ssh公钥Q用来初始化gitosisQ的机器上将gitosis-admin.git的仓库clone下来?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">在客L机器上新Z个目录用于存放gitosis-admin.git仓库</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">ubuntu:~$ mkdir gitadmin<br />ubuntu:~$ cd gitadmin/<br />ubuntu:~/gitadmin$ git clone git@192.168.1.106:gitosis-admin.git</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">clone正确会显CZ下信?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;"><img src="https://www.linuxidc.com/upload/2015_07/15072620261826.jpg" alt="Ubuntu完美搭徏Git服务? align="middle" width="705" vspace="5" style="border: 0px; cursor: pointer; display: block;" /></p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">clone下来会有一个gitosis.conf的配|文件和一个keydir的目录。gitosis.conf用于配置用户的权限信息,keydir主要用户存放ssh公钥文gQ一般以“用户?pub”命名Qgitosis.conf配置文g中需使用相同用户名)Q用于认证请求的客户端机器?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">现在让需要授权的用户使用前面的方式各自在其自q机器上生成相应的ssh公钥文gQ管理员把他们分别按用户名命名好Q复制到keydir目录下?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">ubuntu:~$ cp /home/aaaaa/Desktop/zhangsan.pub /home/aaaaa/gitadmin/gitosis-admin/keydir/</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">ubuntu:~$ cp /home/aaaaa/Desktop/lisi.pub /home/aaaaa/gitadmin/gitosis-admin/keydir/</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">l箋~辑gitosis.conf文g</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">[gitosis]</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">[group gitosis-admin] <br />####理员组<br />members = charn@ubuntu <br />####理员用户名Q需要在keydir目录下找到相应的.pub文gQ多个可用空格隔开Q下同)<br />writable = gitosis-admin####可写的项目仓库名Q多个可用空格隔开Q下同)</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">[group testwrite] <br />####可写权限l?br />members = zhangsan####l用?br />writable = mytestproject####可写的项目仓库名</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">[group<br /> testread] ####只读权限l?br />members =lisi####l用?br />readonly= mytestproject####只读目仓库?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">因ؓq些配置的修改只是在本地修改的,q需要推送到服务器中才能生效?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">ubuntu:~/gitadmin/gitosis-admin$ git add .<br />ubuntu:~/gitadmin/gitosis-admin$ git commit -am "add a user permission"<br />ubuntu:~/gitadmin/gitosis-admin$ git push origin master</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">推送成功会昄下面提示信息</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;"><img src="https://www.linuxidc.com/upload/2015_07/15072620278987.jpg" alt="Ubuntu完美搭徏Git服务? align="middle" width="705" vspace="5" style="border: 0px; cursor: pointer; display: block;" /></p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">又是后新增的用户不能立即生效Q这时候需要重新启动一下sshd服务</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">ubuntu:~/gitadmin/gitosis-admin$ sudo /etc/init.d/ssh restart</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">现在Q服务端的git已l安装和配置完成了,接下来就需要有权限的组成员在各自的机器上clone服务器上的相?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">目仓库q行相应的工作了?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">五、客LQwindowsQ用git</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">下蝲安装windows版本的git客户端YӞ下蝲地址Qhttp://msysgit.github.io/</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">安装完成后右键菜单会出现几个git相关的菜单选项Q我们主要用其中的git<br /> bash通过命o行来q行操作?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">在本地新Z个目录,使用git初始化这个目录,然后再里面新Z个文本文件用于测试,最后关联到git服务器仓?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">中的相关目Q最后上传本地版本到服务器?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">$ mkdir testgit<br />$ cd testgit<br />$ git init<br />$ echo "this is a test text file,will push to server" > hello.txt<br />$ git add .<br />$ git commit -am "init a base version,add a first file for push to server"<br />$ git remote add origin git@serverip:mytestproject.git<br />$ git push origin master</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">q样服务端就创徏好了一个mytestproject.git的仓库的基础版本了,现在其他l员只要从服务端q行clone可以了?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">window下面q入到需要克隆的本地目录下面右键选择git bash选项Q输?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">$ git clone git@serverip:mytestproject.git</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">可以把目clone到本C库了?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">下面q行单的修改和提交操?/p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">$ cd mytestproject<br />$ echo "this is another text file created by other" >another.txt<br />$ git add .<br />$ git commit -am "add a another file by other"<br />$ git push origin master</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;">最后推送到服务器成功会昄如下信息</p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;"><img src="https://www.linuxidc.com/upload/2015_07/15072620278988.jpg" alt="Ubuntu完美搭徏Git服务? align="middle" style="border: 0px;" /><br /><br /><br /><span style="color: #2c3033; font-family: "PingFang SC", "Microsoft YaHei", SimHei, Arial, SimSun; font-size: 24px;">gitolite搭徏git仓库Q服务端+客户端)</span></p><p style="color: #333333; font-family: tahoma, 宋体; text-align: justify; background-color: #fafafc;"><span style="font-family: verdana, "courier new";">http://blog.csdn.net/ChiChengIT/article/details/49863383</span></p><img src ="http://www.aygfsteel.com/Alpha/aggbug/433097.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Alpha/" target="_blank">Alpha</a> 2018-03-13 15:35 <a href="http://www.aygfsteel.com/Alpha/archive/2018/03/13/433097.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Git本地服务器搭建及使用详解http://www.aygfsteel.com/Alpha/archive/2018/03/08/433086.htmlAlphaAlphaThu, 08 Mar 2018 02:44:00 GMThttp://www.aygfsteel.com/Alpha/archive/2018/03/08/433086.htmlhttp://www.aygfsteel.com/Alpha/comments/433086.htmlhttp://www.aygfsteel.com/Alpha/archive/2018/03/08/433086.html#Feedback0http://www.aygfsteel.com/Alpha/comments/commentRss/433086.htmlhttp://www.aygfsteel.com/Alpha/services/trackbacks/433086.html阅读全文

Alpha 2018-03-08 10:44 发表评论
]]>
Linux 常见q维命ohttp://www.aygfsteel.com/Alpha/archive/2017/12/25/432978.htmlAlphaAlphaMon, 25 Dec 2017 02:16:00 GMThttp://www.aygfsteel.com/Alpha/archive/2017/12/25/432978.htmlhttp://www.aygfsteel.com/Alpha/comments/432978.htmlhttp://www.aygfsteel.com/Alpha/archive/2017/12/25/432978.html#Feedback0http://www.aygfsteel.com/Alpha/comments/commentRss/432978.htmlhttp://www.aygfsteel.com/Alpha/services/trackbacks/432978.htmlQ?查看内存  free
Q?查看cpu  cat cpuinfo
Q?查看盘  fdisk -l
Q?查看带宽  iptraf-ng
Q?查看负蝲  top
Q?查看h? netstat  -anp | wc -l
Q?查看h详情  netstat  -anp
Q?查看某个E序h? netstat -anp | grep php |wc -l
Q?查看盘使用情况  df -h
10.查看pȝ日志  dmesg
11.查看q程数量  ps aux | wc -l
12.查看q行|络E序 ps auxww | more
13.
查看phpq行E序 ps auxww | grep php
14.查看phpq行E序数量 ps auxww | grep php | wc -l
15.查看init.dq行  
ls -al /etc/init.d/
16.查找文g路径   find / -name php.ini
17.查看mysql端口   netstat -anp | grep 3306
18.查看本机ip地址  ip add
19.查找某个字符串在文g中出现的  grep 127.0.0.1:9000  *.conf
20.



Alpha 2017-12-25 10:16 发表评论
]]>
Linux怎样恢复误删除的数据http://www.aygfsteel.com/Alpha/archive/2017/12/23/432972.htmlAlphaAlphaSat, 23 Dec 2017 08:11:00 GMThttp://www.aygfsteel.com/Alpha/archive/2017/12/23/432972.htmlhttp://www.aygfsteel.com/Alpha/comments/432972.htmlhttp://www.aygfsteel.com/Alpha/archive/2017/12/23/432972.html#Feedback0http://www.aygfsteel.com/Alpha/comments/commentRss/432972.htmlhttp://www.aygfsteel.com/Alpha/services/trackbacks/432972.html一、背?/strong>

pȝ理员,最谨慎的linux是rm命o了,一不小心数据就没干掉,最恐怖的是数据没有备份,没法q原了,此类事情发生的太多了Q针对于此,我们l过多次试演练Q终于成功的把大部分删除的数据找回来了,下面我把演练q程l大家介l一下?/p>

二、安装恢复Y?/strong>

extundelete,该工具官方给出的是可以恢复ext3或者ext4文gpȝ被删除的文g?/p>

1Q通过命o安装

#yum install extundelete -y

2Q通过源码~译安装

#yum -y install e2fsprogs-devel e2fsprogs  #wget http://zy-res.oss-cn-hangzhou.aliyuncs.com/server/extundelete-0.2.4.tar.bz2 #tar -xvjf extundelete-0.2.4.tar.bz2 #cd extundelete-0.2.4 #./configure #make &&make install

三、删除数据查?/strong>

首先Q我们先删除一个文Ӟ如图Q?/p>

Linux怎样恢复误删除的数据

如上图,我们刚才?boot目录下删除了个symvers-2.6.32-431.el6.x86_64.gz文gQ?boot是落?dev/sda1?/p>

在Linux下可以通过“ls -id”命o来查看某个文件或者目录的inode|例如查看根目录的inode|可以输入Q?/p>

[root@cloud boot]# ls -id /boot 2 /boot

注:根目录的inode一般ؓ2

然后我们开始查找被删除的文Ӟ需要根据分区inode查找Q命令如下:

#extundelete /dev/sda1 --inode 2

l果如下图:

Linux怎样恢复误删除的数据

我们可以看到标识ؓDeleted的被删除数据了?/p>

四、数据恢?/strong>

我们开始恢复,命o如下Q?/p>

#extundelete /dev/sda1 --restore-file symvers-2.6.32-431.el6.x86_64.gz

如图Q?/p>

Linux怎样恢复误删除的数据

Linux怎样恢复误删除的数据

q原成功

当然Q还有可能删除整个文件夹Q我们也举个例子Q如下:

#extundelete /dev/sda1 --restore-directory test

恢复全部删除数据Q如下:

#extundelete /dev/sdb1 --restore-all

也可以通过旉D|复,q里׃说了Q参数如下:

--version, -[vV]Q显CY件版本号?--helpQ显CY件帮助信息?--superblockQ显CU块信息?--journalQ显C日志信息?--after dtimeQ时间参敎ͼ表示在某D|间之后被删的文g或目录?--before dtimeQ时间参敎ͼ表示在某D|间之前被删的文g或目录?动作QactionQ有Q?--inode inoQ显C?#8220;ino”的信息?--block blkQ显C数据块“blk”的信息?--restore-inode ino[,ino,...]Q恢复命令参敎ͼ表示恢复节点“ino”的文Ӟ恢复的文件会自动攑֜当前目录下的RESTORED_FILES文g夹中Q用节点编号作为扩展名?--restore-file 'path'Q恢复命令参敎ͼ表示恢复指定\径的文gQƈ把恢复的文g攑֜当前目录下的RECOVERED_FILES目录中?--restore-files 'path'Q恢复命令参敎ͼ表示恢复在路径中已列出的所有文件?--restore-allQ恢复命令参敎ͼ表示尝试恢复所有目录和文g?-j journalQ表CZ已经命名的文件中d扩展日志?-b blocknumberQ表CZ用之前备份的块来打开文gpȝQ一般用于查看现有超U块是不是当前所要的文g?-B blocksizeQ通过指定数据块大来打开文gpȝQ一般用于查看已l知道大的文g?/pre>

五、ȝ

数据恢复Q不一定能全部数据恢复回来,q是一句话Q操作要谨慎。万一操作pQ也不要慌,损失减到最,首先停止所有操作,其次让专业h员去处理?br />
阉K云服务器优惠? /></a>
</p><img src =

Alpha 2017-12-23 16:11 发表评论
]]> CentOS 7 安裝 Nginx、PHP7、PHP-FPMhttp://www.aygfsteel.com/Alpha/archive/2016/08/10/431515.htmlAlphaAlphaWed, 10 Aug 2016 05:44:00 GMThttp://www.aygfsteel.com/Alpha/archive/2016/08/10/431515.htmlhttp://www.aygfsteel.com/Alpha/comments/431515.htmlhttp://www.aygfsteel.com/Alpha/archive/2016/08/10/431515.html#Feedback0http://www.aygfsteel.com/Alpha/comments/commentRss/431515.htmlhttp://www.aygfsteel.com/Alpha/services/trackbacks/431515.html阉K云服务器优惠? /></a>
<br />
<ol style=
  • 安裝 nginx 
    CentOS 7 沒有內徏?nginxQ所以先?nginx 官網  http://nginx.org/en/linux_packages.html#stable Q找?CentOS 7 ?nginx-release package 檔案連結Q然後如下安?
    rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
    安裝後,會自動產?yum ?repository a定(?/etc/yum.repos.d/nginx.repo)Q?nbsp;
    接下來便可以使用 yum 指o安裝 nginx
    yum install nginx
  • 啟動 nginx 
    以前?chkconfig 理服務QCentOS 7 改用 systemctl 理pȝ服務 
    立即啟動
    systemctl start nginx
    查看目前運作狀?
    systemctl status nginx
    查看 nginx 服務目前的啟動設?
    systemctl list-unit-files | grep nginx
    若是 disabledQ可以改成開自動啟?
    systemctl enable nginx
    若有a定防火牆,查看防火牆運行狀態,看是否有開啟 nginx 使用?port
    firewall-cmd --state
    怹開放開啟防火牆的 http 服務
    firewall-cmd --permanent --zone=public --add-service=http
    firewall-cmd --reload
    列出防火?public 的設?
    firewall-cmd --list-all --zone=public
    E過以上a定Q應該就可以使用瀏覽器訪?nginx 的預a頁面?/li>
  • 安裝 PHP-FPM 
    使用 yum 安裝 php、php-fpm、php-mysql
    yum install php php-fpm php-mysql
    查看 php-fpm 服務目前的啟動設?nbsp;
    systemctl list-unit-files | grep php-fpm
    Ҏ開機自動啟動
    systemctl enable php-fpm
    立即啟動
    systemctl start php-fpm
    查看目前運作狀?
    systemctl status php-fpm
  • 修改 PHP-FPM listen 的方?nbsp;
    若想?nbsp;PHP-FPM listen 的方式,Ҏ unix socketQ可以編?/etc/php-fpm.d/www.conf 
    ?
    listen = 127.0.0.1:9000
    Ҏ
    listen = /var/run/php-fpm/php-fpm.sock
    然後重新啟動 php-fpm
    systemctl restart php-fpm
    a:不要Ҏ listen = /tmp/php-fcgi.sock (?php-fcgi.sock a定?/tmp 底下)Q?因為pȝ產生 php-fcgi.sock 時,會放?/tmp/systemd-private-*/tmp/php-fpm.sock 隨機U有目錄下, 除非?/usr/lib/systemd/system/ 裡面?PrivateTmp=true a定Ҏ PrivateTmp=falseQ?但還是會產生其他問題Q所以還是換個位|最方便 


    删除之前的版?/h2>

    # yum remove php*

    rpm 安装 Php7 相应?yum?/h2>

    CentOS/RHEL 7.x:

    # rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm # rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

    CentOS/RHEL 6.x:
    # rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm

    yum安装php7

    yum install php70w php70w-opcache
    安装其他插gQ选装Q?br style="margin: 0px; padding: 0px;" /> 注:如果安装pearQ需要安装php70w-devel
    php70w
    php70w-bcmath
    php70w-cli
    php70w-common
    php70w-dba
    php70w-devel
    php70w-embedded
    php70w-enchant
    php70w-fpm
    php70w-gd
    php70w-imap
    php70w-interbase
    php70w-intl
    php70w-ldap
    php70w-mbstring
    php70w-mcrypt
    php70w-mysql
    php70w-mysqlnd
    php70w-odbc
    php70w-opcache
    php70w-pdo
    php70w-pdo_dblib
    php70w-pear
    php70w-pecl-apcu
    php70w-pecl-imagick
    php70w-pecl-xdebug
    php70w-pgsql
    php70w-phpdbg
    php70w-process
    php70w-pspell
    php70w-recode
    php70w-snmp
    php70w-soap
    php70w-tidy
    php70w-xml
    php70w-xmlrp

    ~译安装php7

    配置QconfigureQ、编译(makeQ、安装(make installQ?/p>

    使用configure --help

    ~译安装一定要指定定prefixQ这是安装目录,会把所有文仉制在q个目录Q卸载时只需要删除那个目录就可以Q如果不指定会安装到很多地方Q后边删除不方便?/p>

    Configuration: --cache-file=FILE cache test results in FILE --help print this message --no-create do not create output files --quiet, --silent do not print `checking...' messages --version print the version of autoconf that created configure Directory and file names: --prefix=PREFIX install architecture-independent files in PREFIX [/usr/local] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX

    注意
    内存于1G安装往往会出错,在编译参数后面加上一行内?code style="margin: 1px 5px; height: 20px; line-height: 1.8; vertical-align: middle; display: inline-block; padding: 0px 5px !important; font-family: "Courier New", sans-serif !important; border: 1px solid #cccccc !important; border-radius: 3px !important; background-color: #f5f5f5 !important;">--disable-fileinfo

    其他配置参数

    --exec-prefix=EXEC-PREFIX
    可以把体pȝ关的文g安装C个不同的位置Q而不是PREFIX讄的地方.q样做可以比较方便地在不同主Z间共享体pȝ关的文g
    --bindir=DIRECTORY
    为可执行E序声明目录Q缺省是 EXEC-PREFIX/bin
    --datadir=DIRECTORY
    讄所安装的程序需要的只读文g的目录.~省?PREFIX/share
    --sysconfdir=DIRECTORY
    用于各种各样配置文g的目录,~省?PREFIX/etc
    --libdir=DIRECTORY
    库文件和动态装载模块的目录Q缺省是 EXEC-PREFIX/lib
    --includedir=DIRECTORY
    C ?C++ 头文件的目录Q缺省是 PREFIX/include
    --docdir=DIRECTORY
    文档文gQ(?“manQ手册页Q?#8221;以外Q?被安装到这个目录.~省?PREFIX/doc
    --mandir=DIRECTORY
    随着E序一起带的手册页 安装到q个目录Q在它们相应的manx子目录里Q?~省是PREFIX/man
    注意: Z减少对共享安装位|(比如 /usr/local/includeQ?的污染,configure 自动?datadirQ?sysconfdirQincludedirQ??docdir 上附加一?“/postgresql” 字串Q?除非完全展开以后的目录名字已l包含字?“postgres” 或?“pgsql”Q比如,如果你选择 /usr/local 做前~Q那?C 的头文g安装到 /usr/local/include/postgresqlQ?但是如果前缀?/opt/postgresQ那么它们将 被放q?/opt/postgres/include
    --with-includes=DIRECTORIES
    DIRECTORIES 是一pd冒号分隔的目录,q些目录被加入~译器的头文?搜烦列表中.如果你有一些可选的包(比如 GNU ReadlineQ安装在 非标准位|,你就必须使用q个选项Q以及可能还有相应的 --with-libraries 选项Q?br style="margin: 0px; padding: 0px;" /> --with-libraries=DIRECTORIES
    DIRECTORIES 是一pd冒号分隔的目录,q些目录是用于查扑ֺ文g的. 如果你有一些包安装在非标准位置Q你可能需要用这个选项 Q以及对应的--with-includes选项Q?br style="margin: 0px; padding: 0px;" /> --enable-XXX
    打开XXX支持
    --with-XXX
    制作XXX模块

    • PHP FPMa定參?
      [global]
               pid = /usr/local/php/var/run/php-fpm.pid
               error_log = /usr/local/php/var/log/php-fpm.log
               [www]
               listen = /var/run/php-fpm/php-fpm.sock
               user = www
               group = www
               pm = dynamic
               pm.max_children = 800
               pm.start_servers = 200
               pm.min_spare_servers = 100
               pm.max_spare_servers = 800
               pm.max_requests = 4000
               rlimit_files = 51200
               listen.backlog = 65536
               ;a?65536 的原因是-1 可能不是unlimited
               ;說明 http://php.net/manual/en/install.fpm.configuration.php#104172
               slowlog = /usr/local/php/var/log/slow.log
               request_slowlog_timeout = 10
    • nginx.conf a定參?nbsp;
      user nginx;
               worker_processes 8;
               error_log /var/log/nginx/error.log warn;
               pid /var/run/nginx.pid;
               events {
                use epoll;
                worker_connections 65535;
               }
               worker_rlimit_nofile 65535;
               #若沒a定Q可能出N?65535 worker_connections exceed open file resource limit: 1024
               http {
                include /etc/nginx/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 /var/log/nginx/access.log main;
                sendfile on;
                tcp_nopush on;
                keepalive_timeout 65;
                server_names_hash_bucket_size 128;
                client_header_buffer_size 32k;
                large_client_header_buffers 4 32k;
                client_max_body_size 8m;
                server_tokens off;
                client_body_buffer_size 512k;
                # fastcgi
                fastcgi_connect_timeout 300;
                fastcgi_send_timeout 300;
                fastcgi_read_timeout 300;
                fastcgi_buffer_size 64k;
                fastcgi_buffers 4 64k;
                fastcgi_busy_buffers_size 128k;
                fastcgi_temp_file_write_size 128k;
                fastcgi_intercept_errors on;
                #gzip (說明 http://nginx.org/en/docs/http/ngx_http_gzip_module.html)
                gzip off;
                gzip_min_length 1k;#1k以上才壓^?/span>
                gzip_buffers 32 4k;
                 #http://stackoverflow.com/questions/4888067/how-to-get-linux-kernel-page-size-programatically
                 #使用 getconf PAGESIZE 取得pȝ one memory page sizeQ?/span>
                gzip_http_version 1.0;
                gzip_comp_level 2;
                gzip_types text/css text/xml application/javascript application/atom+xml application/rss+xml text/plain application/json;
                 #查看 nginx ?mime.types 檔案(/etc/nginx/mime.types),裡面有各E類型的定義
                gzip_vary on;
                include /etc/nginx/conf.d/*.conf;
               }
               
      若出珑ևN?setrlimit(RLIMIT_NOFILE, 65535) failed (1: Operation not permitted) 
      先查看目前系iqa定?
      ulimit -n
      若設定值太,修改 /etc/security/limits.conf
      vi /etc/security/limits.conf
      加上或修改以下兩行設?
      * soft nofile 65535
               * hard nofile 65535



  • 阉K云服务器优惠? /></a><img src =

    Alpha 2016-08-10 13:44 发表评论
    ]]>
    Tomcat8 安全配置与性能优化http://www.aygfsteel.com/Alpha/archive/2016/04/29/430290.htmlAlphaAlphaFri, 29 Apr 2016 03:59:00 GMThttp://www.aygfsteel.com/Alpha/archive/2016/04/29/430290.htmlhttp://www.aygfsteel.com/Alpha/comments/430290.htmlhttp://www.aygfsteel.com/Alpha/archive/2016/04/29/430290.html#Feedback2http://www.aygfsteel.com/Alpha/comments/commentRss/430290.htmlhttp://www.aygfsteel.com/Alpha/services/trackbacks/430290.html阉K云服务器优惠? /></a>
<p style=1.关于Tomcat的session数目 
    q个可以直接从Tomcat的web理界面L看即?nbsp;
    或者借助于第三方工具Lambda Probe来查看,它相对于Tomcat自带的管理稍微多了点功能Q但也不?nbsp;

    2.监视Tomcat的内存用情?/strong> 
    使用JDK自带的jconsole可以比较明了的看到内存的使用情况Q线E的状态,当前加蝲的类的总量{?nbsp;
    JDK自带的jvisualvm可以下蝲插gQ如GC{)Q可以查看更丰富的信息。如果是分析本地的Tomcat的话Q还可以q行内存抽样{,查每个类的用情?nbsp;

    3.打印cȝ加蝲情况及对象的回收情况 
    q个可以通过配置JVM的启动参敎ͼ打印q些信息Q到屏幕Q默认也会到catalina.log中)或者文ӞQ具体参数如下: 
    -XX:+PrintGCQ输出Ş式:[GC 118250K->113543K(130112K), 0.0094143 secs] [Full GC 121376K->10414K(130112K), 0.0650971 secs] 
    -XX:+PrintGCDetailsQ输出Ş式:[GC [DefNew: 8614K->781K(9088K), 0.0123035 secs] 118250K->113543K(130112K), 0.0124633 secs] [GC [DefNew: 8614K->8614K(9088K), 0.0000665 secs][Tenured: 112761K->10414K(121024K), 0.0433488 secs] 121376K->10414K(130112K), 0.0436268 secs] 
    -XX:+PrintGCTimeStamps -XX:+PrintGCQPrintGCTimeStamps可与上面两个混合使用Q输出Ş式:11.851: [GC 98328K->93620K(130112K), 0.0082960 secs] 
    -XX:+PrintGCApplicationConcurrentTimeQ打印每ơ垃圑֛收前Q程序未中断的执行时间。可与上面؜合用。输出Ş式:Application time: 0.5291524 seconds 
    -XX:+PrintGCApplicationStoppedTimeQ打印垃圑֛收期间程序暂停的旉。可与上面؜合用。输出Ş式:Total time for which application threads were stopped: 0.0468229 seconds 
    -XX:PrintHeapAtGC: 打印GC前后的详l堆栈信?nbsp;
    -Xloggc:filename:与上面几个配合用,把相x志信息记录到文g以便分析 

    -verbose:class 监视加蝲的类的情?nbsp;
    -verbose:gc 在虚拟机发生内存回收时在输出讑֤昄信息 
    -verbose:jni 输出nativeҎ调用的相x况,一般用于诊断jni调用错误信息 

    4.dJMSq程监控 
    对于部v在局域网内其它机器上的TomcatQ可以打开JMX监控端口Q局域网其它机器可以通过q个端口查看一些常用的参数Q但一些比较复杂的功能不支持)Q同h在JVM启动参数中配|即可,配置如下Q?nbsp;
    -Dcom.sun.management.jmxremote.ssl=false  -Dcom.sun.management.jmxremote.authenticate=false 
    -Djava.rmi.server.hostname=192.168.71.38 讄JVM的JMS监控监听的IP地址Q主要是Z防止错误的监听成127.0.0.1q个内网地址 
    -Dcom.sun.management.jmxremote.port=1090 讄JVM的JMS监控的端?nbsp;
    -Dcom.sun.management.jmxremote.ssl=false 讄JVM的JMS监控不实用SSL 
    -Dcom.sun.management.jmxremote.authenticate=false 讄JVM的JMS监控不需要认?nbsp;


    5.专业点的分析工具?/strong> 
    IBM ISAQJProfiler{,具体监控及分析方式去|上搜烦卛_?nbsp;

     

     

    集群Ҏ

    单个Tomcat的处理性能是有限的Q当q发量较大的时候,需要有部v多套来进行负载均衡了?nbsp;

    集群的关键点有以下几点: 
    1.引入负蝲?/strong> 
    软负载可以用nginx或者apache来进行,主要是用一个分发的功能 
    参考: 
    http://ajita.iteye.com/blog/1715312Qnginx负蝲Q?nbsp;
    http://ajita.iteye.com/blog/1717121Qapache负蝲Q?nbsp;

    2.׃nsession处理 
    目前的处理方式有如下几种Q?nbsp;
    1).使用Tomcat本n的Session复制功能 
    参考http://ajita.iteye.com/blog/1715312QSession复制的配|) 
    Ҏ的有Ҏ配置单,~点是当集群数量较多ӞSession复制的时间会比较长,影响响应的效?nbsp;
    2).使用W三Ҏ存放׃nSession 
    目前用的较多的是使用memcached来管理共享SessionQ借助于memcached-sesson-manager来进行Tomcat的Session理 
    参考http://ajita.iteye.com/blog/1716320Q用MSM理Tomcat集群sessionQ?nbsp;
    3).使用黏性session的策?nbsp;
    对于会话要求不太强(不涉及到计费Q失败了允许重新h下等Q的场合Q同一个用Lsession可以由nginx或者apache交给同一个Tomcat来处理,q就是所谓的session sticky{略Q目前应用也比较?nbsp;
    参考:http://ajita.iteye.com/blog/1848665Qtomcat session stickyQ?nbsp;
    nginx默认不包含session sticky模块Q需要重新编译才行(windows下我也不知道怎么重新~译Q?nbsp;
    优点是处理效率高多了Q缺ҎZ话要求的场合不合?nbsp;

    3.结 
    以上是实现集的要点Q其??可以l合使用Q具体场景具体分析吧~

     

    JVM优化

    Tomcat本nq是q行在JVM上的Q通过对JVM参数的调整我们可以Tomcat拥有更好的性能。针对JVM的优化目前主要在两个斚wQ?nbsp;

    1.内存调优 
    内存方式的设|是在catalina.sh中,调整一下JAVA_OPTS变量卛_Q因为后面的启动参数会把JAVA_OPTS作ؓJVM的启动参数来处理?nbsp;

    具体讄如下Q?nbsp;
    JAVA_OPTS="$JAVA_OPTS -Xmx3550m -Xms3550m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4" 

    其各参数如下: 
    -Xmx3550mQ设|JVM最大可用内存ؓ3550M?nbsp;
    -Xms3550mQ设|JVM促内存?550m。此值可以设|与-Xmx相同Q以避免每次垃圾回收完成后JVM重新分配内存?nbsp;
    -Xmn2gQ设|年M大小?G。整个堆大小=q轻代大?+ q老代大小 + 持久代大。持久代一般固定大ؓ64mQ所以增大年M后,会减小q老代大小。此值对pȝ性能影响较大QSun官方推荐配置为整个堆?/8?nbsp;
    -Xss128kQ设|每个线E的堆栈大小。JDK5.0以后每个U程堆栈大小?MQ以前每个线E堆栈大ؓ256K。更具应用的U程所需内存大小q行调整。在相同物理内存下,减小q个D生成更多的线E。但是操作系l对一个进E内的线E数q是有限制的Q不能无限生成,l验值在3000~5000左右?nbsp;

    -XX:NewRatio=4:讄q轻代(包括Eden和两个Survivor区)与年老代的比|除去持久代)。设|ؓ4Q则q轻代与q老代所占比gؓ1Q?Q年M占整个堆栈的1/5 
    -XX:SurvivorRatio=4Q设|年M中EdenZSurvivor区的大小比倹{设|ؓ4Q则两个SurvivorZ一个Eden区的比gؓ2:4Q一个Survivor区占整个q轻代的1/6 
    -XX:MaxPermSize=16m:讄持久代大ؓ16m?nbsp;
    -XX:MaxTenuringThreshold=0Q设|垃圾最大年龄。如果设|ؓ0的话Q则q轻代对象不l过Survivor区,直接q入q老代。对于年老代比较多的应用Q可以提高效率。如果将此D|ؓ一个较大|则年M对象会在Survivor行多ơ复Ӟq样可以增加对象再年M的存zL_增加在年M卌回收的概论?nbsp;


    2.垃圾回收{略调优 
    垃圾回收的设|也是在catalina.sh中,调整JAVA_OPTS变量?nbsp;
    具体讄如下Q?nbsp;
    JAVA_OPTS="$JAVA_OPTS -Xmx3550m -Xms3550m -Xss128k -XX:+UseParallelGC  -XX:MaxGCPauseMillis=100" 
    具体的垃圑֛收策略及相应{略的各参数如下: 

    串行攉器(JDK1.5以前主要的回收方式) 
    -XX:+UseSerialGC:讄串行攉?nbsp;

    q行攉器(吞吐量优先) 
    CZQ?nbsp;
    java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC  -XX:MaxGCPauseMillis=100 

    -XX:+UseParallelGCQ选择垃圾攉器ؓq行攉器。此配置仅对q轻代有效。即上述配置下,q轻代用ƈ发收集,而年老代仍旧使用串行攉?nbsp;
    -XX:ParallelGCThreads=20Q配|ƈ行收集器的线E数Q即Q同时多个U程一赯行垃圑֛收。此值最好配|与处理器数目相{?nbsp;
    -XX:+UseParallelOldGCQ配|年老代垃圾攉方式为ƈ行收集。JDK6.0支持对年老代q行攉 
    -XX:MaxGCPauseMillis=100:讄每次q轻代垃圑֛收的最长时_如果无法满此时_JVM会自动调整年M大小Q以满此倹{?nbsp;
    -XX:+UseAdaptiveSizePolicyQ设|此选项后,q行攉器会自动选择q轻代区大小和相应的Survivor区比例,以达到目标系l规定的最低相应时间或者收集频率等Q此值徏议用ƈ行收集器Ӟ一直打开?nbsp;

    q发攉器(响应旉优先Q?nbsp;
    CZQjava -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseConcMarkSweepGC 
    -XX:+UseConcMarkSweepGCQ设|年老代为ƈ发收集。测试中配置q个以后Q?XX:NewRatio=4的配|失效了Q原因不明。所以,此时q轻代大最好用-Xmn讄?nbsp;
    -XX:+UseParNewGC: 讄q轻代ؓq行攉。可与CMS攉同时使用。JDK5.0以上QJVM会根据系l配|自行设|,所以无需再设|此倹{?nbsp;
    -XX:CMSFullGCsBeforeCompactionQ由于ƈ发收集器不对内存I间q行压羃、整理,所以运行一D|间以后会产生“片”Q得运行效率降低。此D|运行多次GC以后对内存空间进行压~、整理?nbsp;
    -XX:+UseCMSCompactAtFullCollectionQ打开对年老代的压~。可能会影响性能Q但是可以消除碎?nbsp;

    3.结 
    在内存设|中需要做一下权?nbsp;
    1)内存大Q一般情况下处理的效率也高Q但同时在做垃圾回收的时候所需要的旉也就长Q在q段旉内的处理效率是必然要受媄响的?nbsp;
    2)在大多数的网l文章中都推?Xmx和Xms讄Z_说是避免频繁的回Ӟq个在测试的时候没有看到明昄效果Q内存的占用情况基本都是锯状的效果Q所以这个还要根据实际情冉|定?/p>

     

    Server.xml的Connection优化

    Tomcat的Connector是Tomcat接收HTTPh的关键模块,我们可以配置它来指定IO模式Q以及处理通过q个Connector接受到的h的处理线E数以及其它一些常用的HTTP{略。其主要配置参数如下Q?nbsp;

    1.指定使用NIO模型来接受HTTPh 
    protocol="org.apache.coyote.http11.Http11NioProtocol" 指定使用NIO模型来接受HTTPh。默认是BlockingIOQ配|ؓprotocol="HTTP/1.1" 
    acceptorThreadCount="2" 使用NIO模型时接收线E的数目 

    2.指定使用U程池来处理HTTPh 
    首先要配|一个线E池来处理请求(与Connector是^U的Q多个Connector可以使用同一个线E池来处理请求) 
    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" 
    maxThreads="1000" minSpareThreads="50" maxIdleTime="600000"/> 
    <Connector port="8080"
    executor="tomcatThreadPool" 指定使用的线E池 

    3.指定BlockingIO模式下的处理U程数目 
    maxThreads="150"http://Tomcat使用U程来处理接收的每个h。这个DCTomcat可创建的最大的U程数。默认?00。可以根据机器的时期性能和内存大调_一般可以在400-500。最大可以在800左右?nbsp;
    minSpareThreads="25"---Tomcat初始化时创徏的线E数。默认?。如果当前没有空闲线E,且没有超qmaxThreadsQ一ơ性创建的I闲U程数量。Tomcat初始化时创徏的线E数量也由此D|?nbsp;
    maxSpareThreads="75"--一旦创建的U程过q个|Tomcat׃关闭不再需要的socketU程。默认?0。一旦创建的U程过此数|Tomcat会关闭不再需要的U程。线E数可以大致上用 “同时在线人数*每秒用户操作ơ数*pȝq_操作旉” 来计?nbsp;
    acceptCount="100"----指定当所有可以用的处理h的线E数都被使用Ӟ可以攑ֈ处理队列中的h敎ͼ过q个数的h不予处理。默认?0。如果当前可用线E数?Q则请求放入处理队列中。这个值限定了h队列的大,过q个数值的h不予处理?nbsp;
    connectionTimeout="20000" --|络q接时Q默认?0000Q单位:毫秒。设|ؓ0表示怸时Q这栯|有隐患的。通常可设|ؓ30000毫秒?nbsp;

    4.其它常用讄 
    maxHttpHeaderSize="8192" httph头信息的最大程度,过此长度的部分不予处理。一?K?nbsp;
    URIEncoding="UTF-8" 指定Tomcat容器的URL~码格式?nbsp;
    disableUploadTimeout="true" 上传时是否用超时机?nbsp;
    enableLookups="false"--是否反查域名Q默认gؓtrue。ؓ了提高处理能力,应设|ؓfalse 
    compression="on"   打开压羃功能 
    compressionMinSize="10240" 启用压羃的输出内容大,默认?KB 
    noCompressionUserAgents="gozilla, traviata"   对于以下的浏览器Q不启用压羃 
    compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" 哪些资源cd需要压~?nbsp;

    5.结 
    关于Tomcat的Nio和ThreadPoolQ本w的引入提高了处理的复杂性,所以对于效率的提高有多,需要实际验证一下?nbsp;

    6.配置CZ 
    <Connector port="8080" 
    redirectPort="8443"
    maxThreads="150" 
    minSpareThreads="25" 
    maxSpareThreads="75" 
    acceptCount="100" 
    connectionTimeout="20000" 
    protocol="HTTP/1.1" 

    maxHttpHeaderSize="8192" 
    URIEncoding="UTF-8" 
    disableUploadTimeout="true" 
    enableLookups="false" 
    compression="on" 
    compressionMinSize="10240" 
    noCompressionUserAgents="gozilla, traviata" 
    compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"> 
    ... 
    </Connector>

     

     

    理AJP端口

    AJP是ؓ Tomcat ?HTTP 服务器之间通信而定制的协议Q能提供较高的通信速度和效率。如果tomcat前端攄是apache的时候,会用到AJPq个q接器。由于我们公司前端是由nginx做的反向代理Q因此不使用此连接器Q因此需要注销掉该q接器?/p>

    <!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->
    



    默认 Tomcat 是开启了对war包的热部|的。ؓ了防止被植入木马{恶意程序,因此我们要关闭自动部|Ӏ?/p>

    修改实例Q?/p>

     <Host name="localhost" appBase="" unpackWARs="false" autoDeploy="false">

    阉K云服务器优惠? /></a><img src =

    Alpha 2016-04-29 11:59 发表评论
    ]]>
    Ubuntu14.04下部|FastDFS 5.08+Nginx 1.9.14http://www.aygfsteel.com/Alpha/archive/2016/04/07/430008.htmlAlphaAlphaThu, 07 Apr 2016 05:58:00 GMThttp://www.aygfsteel.com/Alpha/archive/2016/04/07/430008.htmlhttp://www.aygfsteel.com/Alpha/comments/430008.htmlhttp://www.aygfsteel.com/Alpha/archive/2016/04/07/430008.html#Feedback2http://www.aygfsteel.com/Alpha/comments/commentRss/430008.htmlhttp://www.aygfsteel.com/Alpha/services/trackbacks/430008.html阅读全文

    Alpha 2016-04-07 13:58 发表评论
    ]]>
    Ubuntu14.04下搭建VPN服务http://www.aygfsteel.com/Alpha/archive/2016/03/07/429559.htmlAlphaAlphaMon, 07 Mar 2016 04:30:00 GMThttp://www.aygfsteel.com/Alpha/archive/2016/03/07/429559.htmlhttp://www.aygfsteel.com/Alpha/comments/429559.htmlhttp://www.aygfsteel.com/Alpha/archive/2016/03/07/429559.html#Feedback0http://www.aygfsteel.com/Alpha/comments/commentRss/429559.htmlhttp://www.aygfsteel.com/Alpha/services/trackbacks/429559.html阅读全文

    Alpha 2016-03-07 12:30 发表评论
    ]]>
    CentOS 6.4 配置VPN服务教程http://www.aygfsteel.com/Alpha/archive/2016/02/25/429437.htmlAlphaAlphaThu, 25 Feb 2016 14:31:00 GMThttp://www.aygfsteel.com/Alpha/archive/2016/02/25/429437.htmlhttp://www.aygfsteel.com/Alpha/comments/429437.htmlhttp://www.aygfsteel.com/Alpha/archive/2016/02/25/429437.html#Feedback0http://www.aygfsteel.com/Alpha/comments/commentRss/429437.htmlhttp://www.aygfsteel.com/Alpha/services/trackbacks/429437.html1.# rpm -Uvh http://poptop.sourceforge.net/yum/stable/rhel6/pptp-release-current.noarch.rpm 
    2. yum install pptpd 

    3.配置pptp.首先我们要编?etc/pptpd.conf文g:

    #vim /etc/pptpd.conf

    扑ֈ”locapip”?#8221;remoteip”q两个配|项,前面的”;”注释W去?更改Z期望的IPD?localip表示服务器的IP,remoteip表示分配l客L的IP地址,可以讄为区?q里我们使用pptp默认的配|?

    localip 192.168.0.1

    remoteip 192.168.0.234-238,192.168.0.245

    注意,q里的IPD设|?直接媄响后面的iptables规则d命o.h意匹配的正确?如果你嫌ȝ,q本文的配|?可以一直复制命令和文本使用?

    4.接下来我们再~辑/etc/ppp/options.pptpd文g,为VPNdGoogle DNSQ?/span>

    #vim /etc/ppp/options.pptpd

    在末添加下面两?

    ms-dns 8.8.8.8

    ms-dns 8.8.4.4

    5、设|pptp VPN账号密码.我们需要编?etc/ppp/chap-secretsq个文g:

    #vim /etc/ppp/chap-secrets

    在这个文仉?按照”用户?pptpd 密码 *”的Ş式编?一行一个̎号和密码.比如d用户名ؓtest,密码?234的用?则编辑如下内?

    test pptpd 1234 *

    6、修改内核设|?使其支持转发.~辑/etc/sysctl.conf文g:

    #vim /etc/sysctl.conf

    ?#8221;net.ipv4.ip_forward”改ؓ1,变成下面的Ş?

    net.ipv4.ip_forward=1

    保存退?q执行下面的命o来生效它:

    #sysctl -p

    7、添加iptables转发规则.l过前面?个步?我们的VPN已经可以拨号?但是q不能访问Q何网?最后一步就是添加iptables转发规则?输入下面的指?

    #iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

    需要注意的?q个指o中的”192.168.0.0/24″是根据之前的配置文g中的”localip”|段来改变的,比如你设|的”10.0.0.1″|段,则应该改?#8221;10.0.0.0/24″.此外q有一炚w要注意的是eth0,如果你的外网|卡不是eth0,而是eth1(比如SoftLayer的服务器是q样的情?,那么误得将eth0也更改ؓ对应的网卡编?不然是上不了|的.

    然后我们输入下面的指令让iptables保存我们刚才的{发规?以便重启pȝ后不需要再ơ添?

    #/etc/init.d/iptables save

    然后我们重启iptablesQ?/span>

    #/etc/init.d/iptables restart

    8、重启pptp服务.输入下面的指令重启pptp:

    #/etc/init.d/pptpd restart

    现在你已l可以连接自qVPNq浏览网了.不过我们q需要做最后的一?

    9、设|开动运行服?我们最后一步是pptp和iptables讄为开动运?q样׃需要每ơ重启服务器后手动启动服务了,当然你不需要自动启动服务的话可以忽略这一?输入指o:

    #chkconfig pptpd on

    #chkconfig iptables on

    q样大功告成了,赶快到Windows下徏立一个VPNq接,IP填写自己的服务器IP,用户名和密码填写自己讄好的用户名和密码,点击”q接”,成功后就可以使用服务器去览|页?


    备注Q?/span>

    多ip服务器{发指定规?/span>

    iptables -t nat -A POSTROUTING -s 192.168.8.0/24 -j SNAT --to-source 192.168.8.1

    or

    iptables -t nat -A POSTROUTING -s 192.168.8.0/24 -j SNAT --to-source 服务器外|ip

    如果iphone之类的设备能q上Q访问网|者youtube特别慢,需要做如下修改Q?/span>

    vi /etc/ppp/ip-up

    增加一?/span>

    /sbin/ifconfig $1 mtu 1400

    或者修改iptables规则

    iptables -A FORWARD -p tcp --syn -s 192.168.8.0/24 -j TCPMSS --set-mss 1356

    1356的值可能需要自p_调节到能保证|络正常使用情况下的最大?br />





    Alpha 2016-02-25 22:31 发表评论
    ]]>
    վ֩ģ壺 | ϲ| | | | ͼ| | | | տ| | ɳ| | | | ɣֲ| | | | | | | | | | ɽ| | | | ¡| | | | | | | | ˮ| ɽ| γ| |