Abra o script /usr/local/bin/start-memcached e dentro dele informe:
#!/usr/bin/perl -w
# start-memcached
# 2003/2004 - Jay Bonci
# This script handles the parsing of the /etc/memcached.conf file
# and was originally created for the Debian distribution.
# Anyone may use this little script under the same terms as
# memcached itself.
use strict;
if ($> != 0 and $< != 0) {
print STDERR "Only root wants to run start-memcached.\n";
exit;
}
my $etcfile = shift || "/etc/memcached.conf";
my $params = [];
my $etchandle;
# This script assumes that memcached is located at /usr/bin/memcached, and
# that the pidfile is writable at /var/run/memcached.pid
my $memcached = "/usr/local/bin/memcached";
my $pidfile = "/var/run/memcached.pid";
# If we don't get a valid logfile parameter in the /etc/memcached.conf file,
# we'll just throw away all of our in-daemon output. We need to re-tie it so
# that non-bash shells will not hang on logout. Thanks to Michael Renner for
# the tip
my $fd_reopened = "/dev/null";
sub handle_logfile {
my ($logfile) = @_;
$fd_reopened = $logfile;
}
sub reopen_logfile {
my ($logfile) = @_;
open *STDERR, ">>$logfile";
open *STDOUT, ">>$logfile";
open *STDIN, ">>/dev/null";
$fd_reopened = $logfile;
}
# This is set up in place here to support other non -[a-z] directives
my $conf_directives = {
"logfile" => \&handle_logfile
};
if (open $etchandle, $etcfile) {
foreach my $line (<$etchandle>) {
$line =~ s/\#.*//go;
$line = join ' ', split ' ', $line;
next unless $line;
next if $line =~ /^\-[dh]/o;
if ($line =~ /^[^\-]/o) {
my ($directive, $arg) = $line =~ /^(.*?)\s+(.*)/;
$conf_directives->{$directive}->($arg);
next;
}
push @$params, $line;
}
}
unshift @$params, "-u root" unless (grep $_ eq '-u', @$params);
$params = join " ", @$params;
if (-e $pidfile) {
open PIDHANDLE, "$pidfile";
my $localpid = ;
close PIDHANDLE;
chomp $localpid;
if (-d "/proc/$localpid") {
print STDERR "memcached is already running.\n";
exit;
} else {
`rm -f $localpid`;
}
}
my $pid = fork();
if ($pid == 0) {
reopen_logfile($fd_reopened);
exec "$memcached $params";
exit(0);
} elsif (open PIDHANDLE,">$pidfile") {
print PIDHANDLE $pid;
close PIDHANDLE;
} else {
print STDERR "Can't write pidfile to $pidfile.\n";
}
Inicie o memcached:
/etc/init.d/memcached restart
Vamos setar o memcached para iniciar com o server:
/sbin/chkconfig memcached on
Agora vamos integrar pecl + memcached (parte do PHP):
wget http://pecl.php.net/get/memcache-2.2.5.tgz
tar xvf memcache-2.2.5.tgz && cd memcache-2.2.5 && phpize && ./configure && make && make install
abra o arquivo php.ini global do server e vamos arrumar a muamba:
vim /usr/local/lib/php.ini
Procure pela parte de Extension e informe o seguinte:
extension=memcache.so
Reinicie o apache:
service httpd restart
Pronto, depois disso é so lazer.
Quer conferir?
vim teste.php
Dentro dele informe
phpinfo(); ?>
php -f test.php | grep “memcache support”
A saída será:
memcache support => enabled
Fonte? Sim, os caras mais pauleiras de hosting que já vi (tirando Softlayer, é claro):
Error: Runtime error in pmmcli: (3, ‘GetDiskFreeSpace’, ‘The system cannot find the path specified.’)
Traceback (most recent call last):
File “C:\Program Files\Parallels\Plesk\admin\share\pmmcli\pmmcli.py”, line 1846, in main
data_action_response, errcode_response, error_message = actions.get(sys.argv[1][2:])(parameters)
File “C:\Program Files\Parallels\Plesk\admin\share\pmmcli\pmmcli.py”, line 1721, in make_dump
return ActionRunner(MakeDumpAction, backup_task_description, None).doActivity()
File “C:\Program Files\Parallels\Plesk\admin\share\pmmcli\pmmcli.py”, line 75, in doActivity
result = self.processor.doActivity()
File “C:\Program Files\Parallels\Plesk\admin\share\pmmcli\pmmcli.py”, line 860, in doActivity
if osutil.free_bytes(local_dump_directory) < (long(disk_space_required) * 1048576):
File “C:\Program Files\Parallels\Plesk\admin\lib\python\osutil.py”, line 188, in free_bytes
sectorsPerCluster, bytesPerSector, numFreeClusters, totalNumClusters = GetDiskFreeSpace(os.path.splitdrive(path)[0] + “\\”)
error: (3, ‘GetDiskFreeSpace’, ‘The system cannot find the path specified.’)
Se é, antes de tentar seu backup, atualize o plesk para uma versão mais recente e o problema deverá estar sanado.
Se você está tentando enviar emails pelo RoundCube e sabe que o mesmo fica somente apresentando a mensagem “Enviando mensagem…” e não faz nada, tente as soluções abaixo:
Caso não resolva ainda podemos aplicar uma solução mais leve:
2 – Verifique se o CSF está instalado em seu servidor, cas0 sim, acesse o csf em seu WHM -> Plugins -> ConfigServer Security&Firewall -> clique em Firewall Configuration e procure por SMTP_ALLOWLOCAL, caso esteja como “0″ coloque “1″, save as configurações e reinicie seu CSF/LFD.
Caso não resolve (muito difícil de não sanar), vamos mergulhar mais fundo no problema, force uma atualização do RoundCube com o comando:
3 – logado como root:
/usr/local/cpanel/bin/update-roundcube –force
Caso ainda assim não alcance o resultado esperado, apele para update geral:
4 – Procure pelo arquivo -> /usr/local/cpanel/base/3rdparty/roundcube/config/main.inc.php, abra-o e edite procure pela linha:
$rcmail_config['smtp_user'] = ‘%u’;
e substitua a mesma por:
$rcmail_config['smtp_user'] = ‘ ‘;
Salve e saia, em seguida tente ver se o roudcube opera como desejado.
5 – Como root execute:
/scripts/upcp –force
Caso resolva, dê um whois neste domínio e envie uma caneca do Ubuntu, Uma camisa do Ubuntu ou uma caixa de bis!
Se você não consegue ver as pastas do RoundCube “seus problemas SE ACABARAM-SE”.
O bendito, em sua versão stable (quase 100% stable) está com uma linda opção em off (FALSE).
Na pasta …roundcube/config/main.inc.php (se for no ispconfig: /home/admispconfig/ispconfig/web/roundcubemail/config/main.inc.php)
Apresentará este array aqui:
// automatically create the above listed default folders on login
$rcmail_config['create_default_folders'] = FALSE;
Meu PC está com o Lucid Lynx (Ubuntu 10.4).
Este How to que preparei hoje vai ensinar como montar um ambiente de desenvolvimento web para aplicações php que utilizam-se do container apache e do banco de dados mysql.
Um ambiente LAMP2 (apache 2 mysql 5 php 5 e phpmyadmin) é fundamental para quem desenvolve e deseja testar sua app antes de envia-la para web, sem mais, vamos aos passos:
1 – Clique em Aplicativos->Acessórios->Terminal
2 – rode o comando: sudo apt-get install apache2
Este comando serve para instalar o apache 2.
A saída deste comando deverá ser semelhante a esta:
Lendo listas de pacotes… Pronto
Construindo árvore de dependências
Lendo informação de estado… Pronto
Os pacotes extra a seguir serão instalados:
apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap
Pacotes sugeridos:
apache2-doc apache2-suexec apache2-suexec-custom
Os NOVOS pacotes a seguir serão instalados:
apache2 apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap
0 pacotes atualizados, 9 pacotes novos instalados, 0 a serem removidos e 0 não atualizados.
É preciso baixar 3328kB de arquivos.
Depois desta operação, 10,1MB adicionais de espaço em disco serão usados.
Você quer continuar [S/n]? S
0% [Aguardando por cabeçalhos]
Obter:1 http://br.archive.ubuntu.com/ubuntu/ lucid/main libapr1 1.3.8-1build1 [116kB]
Obter:2 http://br.archive.ubuntu.com/ubuntu/ lucid/main libaprutil1 1.3.9+dfsg-3build1 [85,4kB]
Obter:3 http://br.archive.ubuntu.com/ubuntu/ lucid/main libaprutil1-dbd-sqlite3 1.3.9+dfsg-3build1 [27,1kB]
Obter:4 http://br.archive.ubuntu.com/ubuntu/ lucid/main libaprutil1-ldap 1.3.9+dfsg-3build1 [25,1kB]
Obter:5 http://br.archive.ubuntu.com/ubuntu/ lucid/main apache2.2-bin 2.2.14-5ubuntu8 [2622kB]
Obter:6 http://br.archive.ubuntu.com/ubuntu/ lucid/main apache2-utils 2.2.14-5ubuntu8 [159kB]
Obter:7 http://br.archive.ubuntu.com/ubuntu/ lucid/main apache2.2-common 2.2.14-5ubuntu8 [290kB]
Obter:8 http://br.archive.ubuntu.com/ubuntu/ lucid/main apache2-mpm-worker 2.2.14-5ubuntu8 [2364B]
Obter:9 http://br.archive.ubuntu.com/ubuntu/ lucid/main apache2 2.2.14-5ubuntu8 [1482B]
Baixados 3328kB em 40s (81,4kB/s)
Selecionando pacote previamente não selecionado libapr1.
(Lendo banco de dados … 148327 arquivos e diretórios atualmente instalados).
Desempacotando libapr1 (de …/libapr1_1.3.8-1build1_i386.deb) …
Selecionando pacote previamente não selecionado libaprutil1.
Desempacotando libaprutil1 (de …/libaprutil1_1.3.9+dfsg-3build1_i386.deb) …
Selecionando pacote previamente não selecionado libaprutil1-dbd-sqlite3.
Desempacotando libaprutil1-dbd-sqlite3 (de …/libaprutil1-dbd-sqlite3_1.3.9+dfsg-3build1_i386.deb) …
Selecionando pacote previamente não selecionado libaprutil1-ldap.
Desempacotando libaprutil1-ldap (de …/libaprutil1-ldap_1.3.9+dfsg-3build1_i386.deb) …
Selecionando pacote previamente não selecionado apache2.2-bin.
Desempacotando apache2.2-bin (de …/apache2.2-bin_2.2.14-5ubuntu8_i386.deb) …
Selecionando pacote previamente não selecionado apache2-utils.
Desempacotando apache2-utils (de …/apache2-utils_2.2.14-5ubuntu8_i386.deb) …
Selecionando pacote previamente não selecionado apache2.2-common.
Desempacotando apache2.2-common (de …/apache2.2-common_2.2.14-5ubuntu8_i386.deb) …
Selecionando pacote previamente não selecionado apache2-mpm-worker.
Desempacotando apache2-mpm-worker (de …/apache2-mpm-worker_2.2.14-5ubuntu8_i386.deb) …
Selecionando pacote previamente não selecionado apache2.
Desempacotando apache2 (de …/apache2_2.2.14-5ubuntu8_i386.deb) …
Processando gatilhos para man-db …
Processando gatilhos para ufw …
Processando gatilhos para ureadahead …
ureadahead will be reprofiled on next reboot
Configurando libapr1 (1.3.8-1build1) …
Configurando apache2-mpm-worker (2.2.14-5ubuntu8) ...
* Starting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[ OK ]
Configurando apache2 (2.2.14-5ubuntu8) ...
Processando gatilhos para libc-bin ...
ldconfig deferred processing now taking place
Ressalto que usei o gestor de pacotes e habilitei o suporte a pacotes instáveis e também o repositório partner (mais abaixo posto como fazer).
Ainda no console use o comando abaixo:
sudo apt-get install php5 libapache2-mod-php5
Isto servirá para instalar o php5 e ainda integra-lo como DSO no apache (como módulo).
A saída deste comando será semelhante a esta:
Creating config file /etc/php5/apache2/php.ini with new version
* Reloading web server config apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[ OK ]
Configurando php5 (5.3.2-1ubuntu4.1) ...
Já que estamos na metade do caminho o ideal seria dar um restart no apache para garantir que ele leu seu conf.
Use o comando:
sudo /etc/init.d/apache2 restart
A saída deverá ser parecida com:
* Restarting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[ OK ]
Para garantir que o apache está interpretando códigos php (fazendo uso do interpretador como módulo) podemos editar um arquivo e testa-lo. use o comando abaixo:
sudo vi /var/www/index.php
Dentro deste arquivo informe:
echo 'nerdblog é 10';
?>
escreva : e depois escreva wq! e pressione enter, ficando algo como :wq! , você salvará o arquivo e sairá do vi.
Feito isto acesse o arquivo para ver se a mensagem nerdblog é 10 aparece, caso sim, sucesso total! Do contrário releia este manual!
Este teste pode ser feito em http://localhost/index.php
Para instalar o mysql como servidor de banco de dados devemos usar o seguinte comando: sudo apt-get install mysql-server
A saída deste comando deverá assemelhar-se com:
Creating config file /etc/dbconfig-common/phpmyadmin.conf with new version
Creating config file /etc/phpmyadmin/config-db.php with new version
granting access to database phpmyadmin for phpmyadmin@localhost: success.
verifying access for phpmyadmin@localhost: success.
creating database phpmyadmin: success.
verifying database phpmyadmin exists: success.
populating database via sql... done.
dbconfig-common: flushing administrative password
* Reloading web server config apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[ OK ]
Processando gatilhos para libc-bin ...
ldconfig deferred processing now taking place
Neste meio tempo uma tela para escolher entre apache e lighttpd aparecerá, escolha apache. Veja:
Na primeira tela escolha OK e dê um tab para confirmar que aceita a opção.
A próxima tela pedirá uma senha de admin para o phpmyadmin, para isto defina algo seu. Veja a tela:
Costumo, após terminar uma instalação de integração como esta utilizar-me de lago, insira as seguintes linhas naquela página index.php usando sudo vim /var/www/index.php
Informe dentro dela o seguinte:
mysql_connect('localhost', 'root', 'suaSENHA') or die(mysql_error());
?>
Acesse http://localhost/index.php
Se nada ocorrer tudo está 100%.
Quando terminar use o comando: sudo /etc/init.d/apache2 restart
Isto vai fazer o apache reler todos os confs.
Para concluir precisamos levar o phpmyadmin para a pasta web afim de que possamos editar nossos bds. Para isto precisamos copiar o phpmyadmin para dentro do /var/www usando o comando:
cp -rp /usr/share/phpmyadmin /var/www
Sendo assim, para acessar somente precisamos de um http://localhost/phpmyadmin
Uma coisa comum para combater uso indevido de cgi é impedir o uso de cgi (perl) em um servidor de hospedagem de sites compartilhada, mas nem sempre dá para impedir o uso.
Então uma das formas de contornar o uso indevido é aplicar regras do mod_security do apache afim de que possamos filtrar o máximo de requisições e ainda por cima ganhar com segurança.
Antemão quero salientar que uma das pragas mais comuns da web é o DM.CGI, esse carinha faz um estrago grandinho com spam, podendo levar um servidor para as mais conceituadas rbls. Como resolver?
No WHM, como root, siga para o último menu (PLUGINS) e procure pelo Mod Security.
CLique nele, dentro dele clique em Edit Configuration.
Dentro dela adicione as seguintes linhas:
Se você está recebendo a mensagem de erro ao tentar entrar no phpmyadmin do Cpanel (incorret user or password) peça para o administrador do servidor atualizar o cpanel usando o comando:
/scripts/upcp –force
Stable, Release, Current e Edge apresentam correção.
Bem, se você quer mais segurança em um ambiente compartilhado você precisará de ajustar seu php.ini global (/usr/local/lib/php.ini) em seu servidor de hospedagem compartilhada afim de prevenir ataques usando recursos avançados do php.
Olá ALL,
As vezes erramos quando somente aumentamos diretivas do PHP visando upload, tais como:
max_execution_time,
upload_max_filesize,
e até mempory_limit.
Elas até que estão corretas, assim como max_execution_time, só que os forms que enviam dados (refiro-me a arquivos), fazem envio de arquivos pelo método post.
Sendo assim, se quisermos um upload de 96M em um servidor rodando php precisamos colocar no php.ini a informação de qual o tamanho máximo de envio de dados pelo POST.
A saída então seria:
post_max_size = 96M
Isto dentro do PHP.INI.
Pronto, após ajustes o apache deverá ser reiniciado.
Na realidade esse tutorial é algo bem simples que mostra como ajustar o charset de uma aplicação que atualmente opera em UTF-8.
É simples e rápido, veja as formas:
Um exemplo para uso do ISO 8859-1 dentro do .htaccess:
AddDefaultCharset iso-8859-1
Um exemplo para uso do ISO 8859-1 dentro de um arquivo php.ini:
Achei massinha a ferramenta e gostaria muito de compartilhar.
Esta ferramenta tem por finalidade fazer uma localização do ip através do Google.
Se você está tentando localizar a estrutura física de onde vem a conexão de um determinado ip ou está tentando saber qual é o seu ip acesse:
pico /var/netenberg/click_be/settings/private_settings.ini
pico /var/netenberg/click_be/settings/public_settings.ini
cd /var/netenberg/click_be/installer
php click_be.php install
Nos arquivos INI procure deixar de acordo com seu server, ou seja, Se suexec estiver on, na linha de suexec diga On, se o Open_Basedir tiver on no server, diga On e assim por diante. Tome cuidado com maiúsculas e minúsculas (o trosso é case sensitive).
Em tese, é isto aqui:
/var/netenberg/click_be/settings/private_settings.ini
wget -> O caminho do wget (cuidado com o bug da Netenberg em cima do wget)
/var/netenberg/click_be/settings/public_settings.ini
Others -> User_Name (não mexa)
Others -> Group_Name (não mexa)
suEXEC -> Status (ajuste caso esteja ON)
—————–
Com os passos acima tudo deve ficar ok, mas abaixo complemento com mais informações:
Normal Update:
cd /var/netenberg/click_be/installer
php click_be.php update
Forced Update:
cd /var/netenberg/click_be/installer
php click_be.php update force
Run a cron job for automatic updates:
cd /var/netenberg/click_be/installer
php click_be.php cron install
Remove the cron job for automatic updates:
cd /var/netenberg/click_be/installer
php click_be.php cron uninstall
Part IV – How to install sites
cd /var/netenberg/click_be/installer
php click_be.php sites install $USER $GROUP $HOME $WWW $DOMAIN $DIRECTORY
$USER = name of the user
$GROUP = name of the group
$HOME = home directory (trailing slash is absolutely neccessary)
$WWW = www (public_html) directory (trailing slash is absolutely neccessary)
$DOMAIN = domain name
$DIRECTORY = the directory where you want to install it (optional)
Example:
Code:
cd /var/netenberg/click_be/installer
php click_be.php sites install joe joe /home/joe/ /home/joe/public_html/ joesdomain.com site/new/
If you leave the $DIRECTORY variable as empty, the site will be installed in the root (http://joesdomain.com/)
How to login?
It is simple, just use your FTP Username and Password.
Alternatively, you can create a file called demo.php inside the folder $WWW/.click_be/:
The contents of demo.php should be as follows:
<?php
$Username = ‘user’ ;
$Password = ‘pass’ ;
?>
Now you can login with “user” as your username and “pass” as your password.
A demo installation of Click Be! does not need FTP login data (and in the final version it will not send out any emails, ie Newsletter).
Part V – How to uninstall sites?
cd /var/netenberg/click_be/installer
php click_be.php sites uninstall $USER $DOMAIN $DIRECTORY
$USER = name of the user
$DIRECTORY = the directory where you had installed it
Part VI – Help Me! I still do not understand!
cd /var/netenberg/click_be/installer
php click_be.php usage
Galera, o click_be! baseia-se em templates para gerir sua parte administrativa e sua parte externa (de uso dos clientes de hospedagem), neste caso, para editar tudo que for necessário para caracterização do seu layout (ao seu gosto) acesse:
Galera, para quem gosta de manter-se atualizado, a Zend (pai do php) lançou juntamente com a equipe de desenvolvimento o php 5.2.11. Vale a pena o update devido a quantidade de bugs corrigidos.